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 |