A method of representing differences between two or more markup language source files in one markup language delta file, the method comprising the steps of: a) creating a delta file with a root element of the same type as the root element of one or more of the source files where element of the same type means an element with the same name and namespace; b) identifying structurally significant elements in the two or more source files, wherein a structurally significant element is identified by: (i) the element not being listed in a library of structurally insignificant elements, and/or (ii) amendment of the respective source file by deletion of the element but not the contents of the element would result in the source file not conforming to its Document Type Definition or Schema; c) determining a chosen alignment, constrained by document order, of the two or more source files, the chosen alignment of the two or more source files being determined with respect to structurally significant elements of the same type or meaning and textual content; d) determining which subtrees in the source files are common to two or more of the source files with respect to the chosen alignment; e) recording in the delta file common subtrees as equal; and f) recording in the delta file according to the chosen alignment information about the contents of the two or more source files which is not common to all the source files such that each element in the source files will have the same type as the corresponding one or more elements in the delta file and will have at least corresponding ancestor elements of the same type up to and including the root element, and any text node or element directly or indirectly within an element in a source file will have a corresponding text node or element contained directly or indirectly within the corresponding element in the delta file. a) creating a delta file with a root element of the same type as the root element of one or more of the source files where element of the same type means an element with the same name and namespace; b) identifying structurally significant elements in the two or more source files, wherein a structurally significant element is identified by: (i) the element not being listed in a library of structurally insignificant elements, and/or (ii) amendment of the respective source file by deletion of the element but not the contents of the element would result in the source file not conforming to its Document Type Definition or Schema; (i) the element not being listed in a library of structurally insignificant elements, and/or (ii) amendment of the respective source file by deletion of the element but not the contents of the element would result in the source file not conforming to its Document Type Definition or Schema; c) determining a chosen alignment, constrained by document order, of the two or more source files, the chosen alignment of the two or more source files being determined with respect to structurally significant elements of the same type or meaning and textual content; d) determining which subtrees in the source files are common to two or more of the source files with respect to the chosen alignment; e) recording in the delta file common subtrees as equal; and f) recording in the delta file according to the chosen alignment information about the contents of the two or more source files which is not common to all the source files such that each element in the source files will have the same type as the corresponding one or more elements in the delta file and will have at least corresponding ancestor elements of the same type up to and including the root element, and any text node or element directly or indirectly within an element in a source file will have a corresponding text node or element contained directly or indirectly within the corresponding element in the delta file.