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

RE: [xsl] comparing a part of the XML tree


Subject: RE: [xsl] comparing a part of the XML tree
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 16 Jul 2007 11:47:37 +0100

Then you want

some $o in original/* satisfies deep-equal(selection/*, $o)

or if you prefer

original/*[deep-equal(., selection/*)]

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Jethro Borsje [mailto:jethro@xxxxxxxxxxxx] 
> Sent: 16 July 2007 11:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] comparing a part of the XML tree
> 
> >> I can not manage to make the deep-equal function work with 
> the node() 
> >> function.
> > 
> > change node() (which is not a function) to *
> > 
> > deep-equal(body/selection/*, body/original/*)
> > 
> This works well when I have 1 element as child of the "original" 
> element, however when using the following input:
> <body>
> 	<selection>
> 		<z color="blue" flavor="vanilla">test 1</z>
> 	</selection>
> 	<original>
> 		<x color="red" flavor="chocolate">test 2</x>
> 		<z color="blue" flavor="vanilla">test 1</z>
> 	</original>
> </body>
> 
> With this stylesheet:
> <xsl:template match="/">
> 	<xsl:choose>
> 		<xsl:when test="deep-equal(body/selection/*,
> body/original/*)">true</xsl:when>
> 		<xsl:otherwise>false</xsl:otherwise>
> 	</xsl:choose>
> </xsl:template>
> 
> It results in "false", while there is a node in <original> 
> which is equal to the node in <selection>.
> 
> --
> Best regards,
> Jethro Borsje
> 
> http://www.jborsje.nl


Current Thread
Keywords
xml