RE: [xsl] accessing CDATA from XSL

Subject: RE: [xsl] accessing CDATA from XSL
From: Jarno.Elovirta@xxxxxxxxx
Date: Mon, 23 Dec 2002 09:36:39 +0200
Hi

> > I have an xml file which has got a CDATA in it for eg:
> > <parent>
> > <child>.... </child>
> > < ! [ CDATA[ hi how r u .....]]>
> > </parent>
> >
> > so from my xsl i want to access the content of the CDATA
> > ie .. i how do i do that ie
> > <xsl:template match="Parent">
> > <xsl:value-of select="."/>
> > i want the CDATA value here
> > so how do i do that
> > mukund
> 
> <xsl:value-of select="text()"/> will return the text of the 
> parent element,
> without including the text of the <child> element.

That will select only whitespace. Instead use.

  <xsl:value-of select="text()[position() = last()]"/>

This however, also selects the line feeds after the child element and the last line feed inside parent; the XPath datamodel will not retain the CDATA section, but rather has a text node for it, with immediately preceding and following text nodes concatenated.
 
> In this context <xsl:value-of select="."/> is equivalent to:
> <xsl:value-of select=".//text()"

Again, that would select whitespace.

Cheers,

--

Jarno - Front Line Assembly: New Year's Day (U2 cover)

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


Current Thread