xsl-list
[Top] [All Lists]

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

2007-07-16 03:45:07
There's probably a difference in the whitespace. If text nodes aren't
significant, then using selection/* and original/* would be better than
selection/node(), original/node().

You might like to play around with the Saxon-specific version of the
function, saxon:deep-equal(). This has an extra "flags" argument to control
how the comparison is done; the simplest setting is '?' which outputs (by
default to System.err) an explanation of why the result of deep-equal() was
false. There is also an option 'w' which ignores whitespace text nodes at
all levels of the tree. To do this without using extensions, you have to
copy both trees to eliminate the whitespace.

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

-----Original Message-----
From: Jethro Borsje [mailto:jethro(_at_)jesdesign(_dot_)nl] 
Sent: 16 July 2007 11:21
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] comparing a part of the XML tree

Hi everybody,

I can not manage to make the deep-equal function work with 
the node() function.

I am usting the following template:
<xsl:template match="/">
      <xsl:choose>
              <xsl:when test="deep-equal(body/selection/node(),
body/original/node())">true</xsl:when>
              <xsl:otherwise>false</xsl:otherwise>
      </xsl:choose>
</xsl:template>

With the following XML as input:
<body>
      <selection>
              <z color="blue" flavor="vanilla">test 1</z>
      </selection>
      <original>
              <z color="blue" flavor="vanilla">test 1</z>
      </original>
</body>

The output of this is "false" (although I expected "true"). 
The strange thing is that when using the following template 
the output is "true":
<xsl:template match="/">
      <xsl:choose>
              <xsl:when test="deep-equal(body/selection/z,
body/original/z)">true</xsl:when>
              <xsl:otherwise>false</xsl:otherwise>
      </xsl:choose>
</xsl:template>

So there is probably something wrong with how I use the 
node() function.

--
Best regards,
Jethro Borsje

http://www.jborsje.nl

Jethro Borsje wrote:
Hi there,

Yes, that was it. I now implemented Saxon and at least I 
can run the 
application. I will play around with the stylesheet a bit 
more to see 
if I can manage to get it to work...


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--