Gan Uesli Starling wrote:
Gan Uesli Starling asked:
I have a node <foo> which has one or more
child nodes. Those child nodes often
bisect the text of <foo>, thus...
<foo>ABC<x>1</x><y>2</y><z>3</z>DEF</foo>
My question is, how can I select just the 'DEF'
from <foo>?
Or, baring that, how can I select 'ABCDEF'
sans the child nodes. Always when I use
'select="node()" inside of <foo> the 'DEF'
gets lost.
Jeff Kenton answered:
Try selecting foo/text(). This will ignore your x-y-z children, but
get ABC and DEF.
Hm, doesn't work in either Mozilla 1.3 or Xalan-J. It
still always loses the DEF. Let me abandon the sample
example for an actual example.
An actual XML node is like this...
<op>pow(<in>2.0, -3</in>)</op>
...in which the ABC corresponds to 'pow(' and
the DEF corresponds to ')'.
To experiment, I simplified my actual template all the
way down to just this...
<xsl:template match="op">
<xsl:value-of select="op/text()"/>
</xsl:template>
The select="op/text()" lost ALL of the text, but
"../op/text()" and "node()" got as much as
the 'pow(' but still lost the ')'
Answer:
Get left side of childe nodes with...
<xsl:value-of select="text()[1]"/>
...and right side with...
<xsl:value-of select="text()[2]"/>
...the index in square brackets does the
trick.
Thanks,
Gan
--
Mistera Sturno - Rarest Extinct Bird
<(+)__ Gan Uesli Starling
((__/)=- Kalamazoo, MI, USA
`||`
++ http://starling.us
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list