|
Subject: Re: [xsl] How to compare two (possibly dissimilar) XML's (XSLT1.0) From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Fri, 20 Jan 2012 15:30:54 -0500 |
<xsl:template match="*">
<xsl:if test="empty(key('element-by-name',name(),$B)">
... the element is missing from B ...
</xsl:if>
<xsl:apply-templates/>
</xsl:template><xsl:template match="*[empty(*)]">
<xsl:if test=". != key('element-by-name',name(),$B)">
... A has a different value from B ...
</xsl:if>
<xsl:next-match/>
</xsl:template><xsl:template match="*">
<xsl:variable name="n" select="name()"/>
<xsl:for-each select="$B">
<xsl:if test="not(key('element-by-name',$n)">
... the element is missing from B ...
</xsl:if>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:template>Cheers, Wendell
Hi Guys
I have an XML comparison XSL that works well for identical XML's; however, I need to create a version that will compare two slightly dissimilar XML's (whose structure I do not know--other than root element's name).
One will always be a superset of the other (if different).
For example
A contains
<elements> <element1> <element1a>1a</element1a> <element1b>1b</element1b> <element1c>1c</element1c> </element1> <element2> <element2a>2a</element2a> <element2b>2b</element2b> <element2c>2c</element2c> </element2> <element3> <element3a>3a</element3a> <element3b>3b</element3b> <element3c>3c</element3c> </element3> </elements>
B Contains
<elements> <element1> <element1a>1a</element1a> <element1b>1b</element1b> <element1c>1c</element1c> </element1> <element3> <element3a>4a</element3a> <element3c>4c</element3c> </element3> </elements>
I want to iterate through every element and attribute in A, find the corresponding element in B (if it exists) and compare their values.
For example, the output needs to indicate the following:
element2 is missing element2/element2a is missing element2/element2b is missing element2/element2c is missing element3/element3b is missing element3a's value is different element3b's value is different
Any help greatly appreciated
-- ====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] How to compare two (possibly , Mark Anderson | Thread | [xsl] cell height xsl, Jesse Schaaf |
| [xsl] How to compare two (possibly , Mark Anderson | Date | Re: [xsl] XSLT translated into C/C+, Liam R E Quin |
| Month |