XML Diff Language (Diffgram)

Microsoft XML Diff

Microsoft XML Diff 1.0 and XML Patch 1.0

XML Diff Language (Diffgram)

The XML Diff Language (XDL) is a proprietary XML-based language for describing differences between two XML documents. Changes between two XML documents are described in a document called an XDL Diffgram.

The root element of the XDL Diffgram is xd:xmldiff. It contains the version of the XDL Diffgram in the version attribute, the XDL namespace declaration for the xd: prefix, and the XML Diff options selected in the options attribute when the XDL Diffgram was created. It also contains a srcDocHash attribute with a number that is calculated from the source document, and is called a hash value. This number allows checking if an XML document is the correct source document the XDL Diffgram was created on. This check is performed by XML Patch tool. Additionally, it contains a fragments attribute with value of yes or no. A value of yes indicates that XML fragments were compared. A value of no indicates that XML documents were compared. The child nodes of the xd:xmldiff root element are elements describing the particular differences between the two XML documents or fragments.

The following example shows an original source document, a changed document, and the XDL Diffgram that results when a Compare method is run against the Source XML and Target XML documents, shown below.

Source XML

<b>
    <a>Some text 1</a>
    <b>Some text 2</b>
    <c>Some text 3</c>
    <z> Another text 
        <fob/>
    </z>
</b>

Target XML

<b>
    <yy>Some text 1</yy>
    <b>Some text 2</b>
    <c>Some text 3</c>
    <d>Some text 4</d>
    <z>Changed text</z>
</b>

XDL Diffgram

<?xml version="1.0" encoding="utf-16" ?> 
  <xd:xmldiff version="1.0" srcDocHash="1225038152287875577" options="None" fragments="no" xmlns:xd="http://schemas.microsoft.com/xmltools/2002/xmldiff">
    <xd:node match="1">
        <xd:change match="1" name="yy" /> 
      <xd:node match="3" /> 
        <xd:add>
        <d>Some text 4</d> 
        </xd:add>
    <xd:node match="4">
        <xd:change match="1">Changed text</xd:change> 
        <xd:remove match="2" /> 
    </xd:node>
  </xd:node>
</xd:xmldiff>

See Also

XML Diff Functionality | Example of a Diffgram | Path Descriptors | Extended Operations | XmlDiff Class

© 2002 Microsoft Corporation. All rights reserved.