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

RE: [xsl] not selecting child elements with same name as parent...


Subject: RE: [xsl] not selecting child elements with same name as parent...
From: "Evan Lenz" <elenz@xxxxxxxxxxx>
Date: Fri, 27 Apr 2001 02:36:05 -0700

> > > <xsl:value-of select="text()"/>
> > >
> > That's dangerous, it will only select the first child text node.
>
> But wasn't that exactly what was required in the orginal question?

No. There have been three possibilities discussed so far, as shown below. A
concrete example follows.

1) string-value of an element, which is the concatenation of all
*descendant* text nodes (what Anthony tried)

<xsl:value-of select="."/> (where "." is the current node, an element)

2) string-value of first child text node (what you suggested)

<xsl:value-of select="text()"/>

3) string-value of each child text node (the correct solution to Anthony's
problem)

<xsl:for-each select="text()">
  <xsl:value-of select="."/>
</xsl:for-each>
-OR-
<xsl:copy-of select="text()"/>


Example (where the foo element is the current node in each of the above):

<foo>The <bar>quick</bar> brown fox jumped <bat>over</bat> the lazy
dog.</foo>

#1 will produce "The quick brown fox jumped over the lazy dog."
#2 will produce "The "
#3 will produce "The  brown fox jumped  the lazy dog."

As it happens, the example he gave would result in the difference of only
one line break between #2 and #3, but the way he specified the problem
indicated it was in fact #3 that he wanted.

Hope this helps,
Evan


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



Current Thread