Subject: RE: ACCESSING SPECIFIC CDATA FIELD
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 13 Dec 2005 15:21:48 -0000
|
> I've one XML and trying to access the specific CDATA on XML
There's no such thing as a CDATA node in the XPath data model: the text that
you write in CDATA sections in your input ends up in ordinary text nodes.
But that's not directly relevant to your problem.
> but when do
> this, I capture all CDATAs nodes. See the XML and XSL code bellow:
>
> // -----------------------------xml -----------------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <scripts>
> <etps total="1">
> <etp id="200">
> <![CDATA[Trying accessing only this]]>
> <nvgs>
> <nvg id="201"><![CDATA[blablablablabla]]></nvg>
> <nvg id="202"><![CDATA[blablablablabla]]></nvg>
> </nvgs>
> </etp>
> </etps>
> </scripts>
>
> // -----------------------------xsl -----------------------------
> //code's resume
> <xsl:choose>
> <xsl:when test="scripts/etapas/@total>0">
> <table width="100%" id="SCRIPT">
> <tr valign="top" style="font-weight:bold;">
> <th width="40%">etp</th>
> <th width="20%">nvg</th>
> </tr>
>
> <xsl:for-each select="scripts/etapas/etapa">
Should I be reading this as select="scripts/etps/etp"?
> <tr valign="top">
> <td comment="ETP">
> <xsl:value-of select="."/>
"." here gives you the string value of the context node (which is an
element): the string value of an element is the concatenation of all its
descendant text nodes. If you just want the value of the first child text
node, use select="text()[1]". Note however that this will give you the
whitespace characters that were outside the CDATA section as well as the
characters that were within it - there's no way of separating the two.
Michael Kay
http://www.saxonica.com/
| Current Thread |
|
Michael Kay - 13 Dec 2005 15:23:03 -0000 <=
Agnisys - 13 Dec 2005 15:24:54 -0000
Dennis Barb - 13 Dec 2005 15:52:07 -0000
|
|