RE: [xsl] Processing empty nodes in XSLT

Subject: RE: [xsl] Processing empty nodes in XSLT
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 29 Nov 2006 23:12:18 -0000
You need to re-educate the recipient of the XML that CDATA has no semantics.
If you can't do that, you need to write your own serializer.

Or perhaps you could output processing instructions <?start-cdata?> and
<?end-cdata?> and then postprocess the output to turn these into <![CDATA[
and ]]> respectively.


Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Chris Griffin [mailto:listfeed@xxxxxxxxxx] 
> Sent: 29 November 2006 22:18
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Processing empty nodes in XSLT
> 
> I need to enclose the data in my XML in CDATA. Doing this for 
> nodes with data was simple.
> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";  
> version="1.0">
>    <xsl:output cdata-section-elements="<list of node names>"/>
>    <xsl:template match="*">
>      <xsl:copy-of select="*"/>
>    </xsl:template>
> </xsl:stylesheet>
> 
> That was simple. Except that doesn't work for empty nodes. 
> For empty nodes I need <name><![CDATA[]]></name>. I've tried 
> various ways of doing this but I don't seem to understand how 
> to process each node of the input. I would like the solution 
> to generically add "<![CDATA[]]  >" to all empty nodes.
> 
> Thanks,
> Chris Griffin

Current Thread