xsl-list
[Top] [All Lists]

Re: xpath question

2003-07-04 04:27:40
Hi Abbouh,

what is the difference between these xpaths:
//table/tgroup/tbody/row[1]/entry[1]/child::node()[1]
and
//table/tgroup/tbody/row[1]/entry[1]/ce[1]
//table/tgroup/tbody/row[1]/entry[1]/para[1]

The first selects the first of all the child nodes of the <entry>
element. In your example:

<entry colname="col1">
<ce>aaaaa</ce>
<ce>(1)</ce>
</entry>

the first child of the <entry> element is a whitespace-only text node,
containing a newline character, between the start tag of the <entry>
element and the start tag of the <ce> element.

If you want to get the first element within the <entry> element then
use:

  //table/tgroup/tbody/row[1]/entry[1]/*[1]

Or you could strip the whitespace-only text nodes from within the
<entry> elements by adding:

<xsl:strip-space elements="entry" />

at the top level of your stylesheet.

The reason that you get different results in Xalan and XML Spy (which
uses MSXML) is that MSXML by default automatically strips all
whitespace-only text nodes from a document, whereas Xalan doesn't.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>