[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] how to include nodes inside CData tags


Subject: Re: [xsl] how to include nodes inside CData tags
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 30 Apr 2013 14:44:10 +0100

It's a very confused question. "tags" exist in lexical (angle-bracket) XML,
"nodes" exist in the tree representation of XML, and the two things are quite
distinct, so nodes can't appear within tags.

More particularly, element markup can't appear within CDATA tags. The whole
purpose of CDATA is to say "stuff in here that looks like markup is not markup
at all, it is ordinary characters".

So the answer is, generate characters that look like markup.

Using disable-output-escaping is completely wrong: d-o-e stops markup
characters being treated as plain text, whereas you want plain text to be
treated as markup characters.

Michael Kay
Saxonica


On 30 Apr 2013, at 14:16, Terry Ofner wrote:

> I need to generate the following format:
>
> <question>
> <![CDATA[The city council passed the new <strong>regulation</strong>.]]>
> </question>
>
> from this input:
>
> <question>The city council passed the new
<strong>regulation</strong>.></question>
>
> when I add cdata-section-elements="question" to my xsl:output statement, I
get this results:
>
> <question><![CDATA[6. The city council passed the new
]]><strong>regulation</strong><![CDATA[.]]></question>
>
>
> Is there a way to include the <strong> element in the CDATA?
>
> I have tried to convert the <strong> tag to text:
>
> <xsl:text
disable-output-escaping="yes">&amp;#x003C;strong&amp;#x003E;</xsl:text>
>        <xsl:apply-templates/>
> <xsl:text
disable-output-escaping="yes">&amp;#x003C;/strong&amp;#x003E;</xsl:text>
>
> but to no avail.
>
> I am using xslt 2.0
>
> Any help would be appreciated.
>
> Terry


Current Thread
Keywords