[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Comparing two XML documents


Subject: Re: [xsl] Comparing two XML documents
From: Rahil Qamar Yahoo <qamar_rahil@xxxxxxxxxxx>
Date: Fri, 14 Jan 2005 15:52:12 +0000

Hi David

Thanks. That was very useful.

Well yeah I didnt include the entire chunks of code. But I've checked the File 1 in XMLSpy for well-formedness and it didnt complain. So that shouldnt be an issue. There is quite a bit of XML that has no logical equivalence in the other file but thats because they come from different sources which try to model the same concept. I assume there could be some sort of Rules which could also be established for parsing the two files.

But you've given me a good pointer to start off my task with. Any other comments or suggestions would be most appreciated.

Cheers
Rahil

David Carlisle wrote:

It should be relatively easy to turn each of these into some normalised
form using xslt such that you can then just run diff or some other text
file differencing tool.

I can't suggest the exact XSLT that you need as your excerpts didn't
show enough of the structure.
your xml file 1 isn't well formed (multiple top level elements) I assume
there is a surrounding element that you didn't show?
and you said

I have two XML documents which are logically equivalent

but there are several elements for which the equivalence isn't obvious,
eg what corresponds to <level>16</level> in your 2nd format?

howver running

<xsl:template match="code[@type='relationship constraint']">
relationship constraint: <xsl:value-of select="normalize-space(.)"/>
</xsl:template>

<xsl:template match="IMPLIES">
relationship constraint: [<xsl:text/>
<xsl:for-each select="CONCEPT">
  <xsl:value-of select="@name"/>
  <xsl:if test="postition()!=last()">, </xsl:if>
</xsl:for-each>
<xsl:text>]</xsl:text>
</xsl:template>

will turn

<code type="relationship constraint">[MildSeverity,ModerateSeverity,SevereSeverity]
</code>


and

   <IMPLIES>
           <CONCEPT name="MildSeverity" ref="10238"/>
           <CONCEPT name="ModerateSeverity" ref="10239"/>
           <CONCEPT name="SevereSeverity" ref="10240"/>
       </IMPLIES>

both into



relationship constraint: [MildSeverity,ModerateSeverity,SevereSeverity]

which should allow for easy comparison.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________


Current Thread
Keywords