Subject: RE: 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: 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
|