Re: [xsl] Content of Script element getting wrapped by CDATA

Subject: Re: [xsl] Content of Script element getting wrapped by CDATA
From: "Darcy Parker" <darcyparker@xxxxxxxxx>
Date: Thu, 23 Oct 2008 08:43:50 -0400
Hi Joyce,

Glad you're making progress.  (I used an XSLT 2.0 style identity
transform.  I think you figured it out... if you replace it with your
preferred XSLT 1.0 identity transform, then that should work.)

With regards to the CDATA tag being added by libxslt automatically - I
would agree with David.  It sounds like a bug for this element's
text() node to be output this way.  It should only do this if you have
@cdata-section-elements set to script in xsl:output.  And if the only
output is <xsl:text> or <xsl:value-of> and they have
disable-output-escaping="yes", then there should be no CDATA.  I would
investigate with the libxslt community.

Darcy
On Thu, Oct 23, 2008 at 5:22 AM, Joyce Babu <joyce@xxxxxxxxxxxxx> wrote:
> Oops! It works only with Sablatron. Libxslt wraps the processed value
> again in another CDATA tag and Xalan and Saxon shows the message
> "Error on line 0"
>
> On Thu, Oct 23, 2008 at 2:48 PM, Joyce Babu <joyce@xxxxxxxxxxxxx> wrote:
>> It did work. Here is the final working code
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>>
>> <xsl:output method="xml" omit-xml-declaration="yes" indent="no"
>> encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
>> doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
>>
>> <xsl:template match="/">
>>   <html xml:lang="en" lang="en">
>>      <!-- Include Header-->
>>      <xsl:apply-templates select="/head" />
>>      <body>
>>      </body>
>>   </html>
>> </xsl:template>
>>
>> <xsl:template match="script">
>>   <xsl:copy>
>>      <xsl:apply-templates select="@*"/>
>>                 <xsl:value-of disable-output-escaping="yes"
>>
>> select="concat('//&lt;![CDATA[&#xA;',text(),'&#xA;//]]&gt;')"/>
>>   </xsl:copy>
>> </xsl:template>
>> <xsl:template match="style">
>>   <xsl:copy>
>>      <xsl:apply-templates select="@*"/>
>>      <xsl:value-of disable-output-escaping="yes"
>>
>> select="concat('&lt;![CDATA[&#xA;',text(),'&#xA;]]&gt;')"/>
>>   </xsl:copy>
>> </xsl:template>
>>
>> <!--Identity Transform-->
>> <xsl:template match="*">
>>   <xsl:copy>
>>      <xsl:apply-templates select="@* | node()"/>
>>      <!--xsl:apply-templates select="node()"/-->
>>   </xsl:copy>
>> </xsl:template>
>> <xsl:template match="@*|text()|comment()|processing-instruction()">
>>   <xsl:copy/>
>> </xsl:template>
>>
>> </xsl:stylesheet>
>>
>> I wrote a separate template for style, since I don't think the single
>> line comment (//) is not supported by css.
>>
>> Thanks a lot for helping me with this.
>>
>> Joyce

Current Thread