This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Selecting first descendant text node
- From: Christian Roth <roth at visualclick dot de>
- To: XSL-List <XSL-List at lists dot mulberrytech dot com>
- Date: Fri, 11 Jan 2002 15:23:20 +0100
- Subject: [xsl] Selecting first descendant text node
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hello,
how do I select the first descendant text node of an element?
My XML:
..
<item numbertext="1. ">
<par>
<italic>first text</italic>
</par>
<par>next text</par>
</item>
..
The stylesheet should put the numbertext attribute value before the first
textnode of the contents of the <item> element, i.e. expected result
should be:
..
<item>
<par>
<italic>1. first text</italic>
</par>
<par>next text</par>
</item>
..
First try:
..
<xsl:template match="item//text()[1]">
<xsl:value-of select="ancestor::item/attribute::numberingtext" />
<xsl:value-of select="." />
</xsl:template>
..
This does not work since it matches both text nodes, since ...text()[1]
matches only for first child of its immediate parent, which is true for
both text nodes.
Second try:
..
<xsl:template match="(item//text())[1]">
<xsl:value-of select="ancestor::item/attribute::numberingtext" />
<xsl:value-of select="." />
</xsl:template>
..
This does not work since the XSLT processor complains of illegal tokens
"item", "/", etc. after the first opening bracket in the match expression.
So, how do I select the first (in document order) of all of the
descendant text nodes of an element?
I was using Xalan 2.1.0 for the test.
Regards, Christian.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list