xsl-list
[Top] [All Lists]

Re: Output CDATA tags

2005-01-28 06:58:58

there is nothing in the XPath data model that corresponds to a CDATA
section, CDATA is just a falg to the parser to treat < and & as
characters rather than markup. 

When you have

        <xsl:template match="td" mode="markup">
                <xsl:text><![CDATA[</xsl:text>
                <xsl:copy-of select="child::node()"/>
                <xsl:text>]]></xsl:text>
        </xsl:template>


The XML parser treats this in the same way as


        <xsl:template match="td" mode="markup">
                <xsl:text>&lt;/xsl:text>
                &lt;xsl:copy-of select="child::node()"/>
                &lt;xsl:text></xsl:text>
        </xsl:template>

and that is what the XSLT engine sees, which is why you get the result
you get.

Going from


<p><span>xxx</span>...</p>

to

<![CDATA[<p><span>xxx</span>...</p>]]>

is exactly the same as going from

<p><span>xxx</span>...</p>

to

&lt;p>&lt;span>xxx&lt;/span>...&lt;/p>

and you coude it in the same way, with a template that does something
like

<xsl:template match="*">
  <xsl:text>&lt;</xsl:text>
  <xsl:value-of seelct="name()"/>
  <xsl:text>&gt;</xsl:text>
  <xsl:apply-templates/>
  <xsl:text>/&lt;</xsl:text>
  <xsl:value-of seelct="name()"/>
  <xsl:text>&gt;</xsl:text>
</xsl:template>

(more complete examples (eg handling attributes) in the faq or archives
of this list)

If you want the serialiser to use the CDATA form rather than &lt;
(although you shouldn't really care which it uses) add
cdata-section-elements="td"
to your xsl:stylesheet element.



David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>