RE: [xsl] Accessing text from node

Subject: RE: [xsl] Accessing text from node
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Fri, 29 Jun 2001 10:29:29 +0100
> 	<choice name="news" key="type">
>                 <action type="soft1"  label="CBSMW" ></action>
>                 <action type="accept" label="Go" ></action>
> 	          News
>                 <ce value="rt.asp">RealTime Headlines</ce>
> 		    <ce value="mp.asp">MarketPulse</ce>
> 		    <ce value="tn.asp">Ticker News</ce>
> 	</choice>
> >From this node to access text "News" if I use <xsl:value-of
> select="text()[count(action)+1]"/> This does not give me text
> "News". If I
> use digit 3 like this:
> 	<xsl:value-of select="text()[3]"/> This gives me text
> "News".

I can't see any explanation for this: if your context node is the <choice>
element above, then count(action)+1 should give 3. What processor are you
using, and does it give the same result on a different processor?

The reason that "News" is the third text node is that there is a whitespace
text node before each <action> element.

As others have said, it would be much cleaner design to wrap the text in
another element.

If I knew that I wanted the text following the last <action>, I would tend
to reference it as action[last()]/following-sibling::text()[1], but that
doesn't mean your approach is incorrect.

Mike Kay
Software AG

 XSL-List info and archive:

Current Thread