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

Subject: Re: [xsl] Content of Script element getting wrapped by CDATA
From: "Joyce Babu" <joyce@xxxxxxxxxxxxx>
Date: Wed, 22 Oct 2008 23:40:59 +0530
Thanks for the reply Darcy,

But if I provide the input xml like that, I am getting
<script type="text/javascript"><![CDATA[//

alert('JOYCE');
//]]></script>

ie, the CDATA tag that I inserted within the xml disappears. And a new
tag is added by the xslt processor, wrapping the content.

On Wed, Oct 22, 2008 at 11:30 PM, Darcy Parker <darcyparker@xxxxxxxxx> wrote:
>
> Hi Joyce,
>
> Standard practice is to format the output like this:
>
> <script content="text/javascript">
> // <![CDATA[
>
> javascript code here
>
> // ]]>
> </script>
>
> Note: The // are interpreted as comments to javascript, so it won't
> read the line with the CDATA opening and closing tags.  And it is
> critical to have the CDATA in the XML because some characters in
> javascript and not valid for text() nodes in XML.
>
> You could try writing your input XML like this.
>
> Darcy
> On Wed, Oct 22, 2008 at 1:24 PM, Joyce Babu <joyce@xxxxxxxxxxxxx> wrote:
> > I have PHP 5.2.6 and was trying to create my first XSL powered
> > website. I am trying to build a template system. In this, the XML
> > contains a head section, which is directly copied by the XSLT to the
> > output document.
> >
> > In my XML data, I tried to include a script element, and the content
> > of the tag is automatically wrapped in <![CDATA[ ]]> by the libxslt
> > processor (default php processor). Hence I am getting a syntax error
> > in my browser.
> >
> > Can anyone plz tell me how to fix it?
> >
> > Here is my xml code
> >
> > ----------------------------------------------------------
> > <?xml version="1.0"?>
> > <head>
> >  <title>XSLT</title>
> >  <link href="/manage/style.css" type="text/css" rel="stylesheet"/>
> >  <script src="/js/jquery.js" type="text/javascript"/>
> >  <script src="/js/tablesort.js" type="text/javascript"/>
> >  <script type="text/javascript">
> > alert('No Error');</script>
> > </head>
> > ----------------------------------------------------------
> > XSL Code
> > ----------------------------------------------------------
> >
> > <xsl:stylesheet version="1.0"
> >  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> >  xmlns:php="http://php.net/xsl";
> >
> >  xsl:extension-element-prefixes="php"
> >  xmlns=""
> >>
> > <xsl:output method="xml" omit-xml-declaration="yes" standalone="no"
> > 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:copy-of select="/root/head" />
> >  <body>
> >  </body>
> >  </html>
> > </xsl:template>
> > <!-- Identity Template -->
> > <xsl:template match="@*|node()">
> >  <xsl:copy-of select="." />
> > </xsl:template>
> >
> > </xsl:stylesheet>
> > ----------------------------------------------------------
> >
> > Output:
> > ----------------------------------------------------------
> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
> > <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
> >  <head>
> >    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
> >    <title>XSLT</title>
> >    <link href="/manage/style.css" type="text/css" rel="stylesheet" />
> >
> >    <script src="/js/jquery.js" type="text/javascript"></script>
> >    <script src="/js/tablesort.js" type="text/javascript"></script>
> >    <script type="text/javascript"><![CDATA[
> > alert('No Error');]]></script>
> >  </head>
> >  <body>
> >  </body>
> >  </html>

Current Thread