[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Troubles with libxslt in PHP again: CDATA in <scri

Subject: Re: Troubles with libxslt in PHP again: CDATA in <script>
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Fri, 12 Oct 2007 00:24:25 +0200
Re:  Troubles with libxslt in PHP again: CDATA in <scri
Hi Martynas,

So you have libxslt (xsltproc) with php 5.2.5 and you get strange results with CDATA sections wrapping the script tags. This struck me as odd. I have got two questions for you:

1. Can you post a minimalized sample and the precise version of xsltproc you are using (see the list guidelines for how)?
2. If you put the code that's in <script> inside another element, or you just rename script to, say, script_other, does that still wrap the scripts in CDATA?


The reason I am asking is because the libxslt behavior is quite unlikely. You say you use the output option "xml". I tested the following code both as XML and HTML. The difference showed in the way the < and > are escaped in the script (with html they are not escaped).

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>test</title>
<script>
function myfunc()
{
if(x>y) return 1;
if(x&lt;y) return 0;
}
</script>
</head>
<body>
<h1>Hello world</h1>
</body>
</html>
</xsl:template>


</xsl:stylesheet>


It is a dummy example of course, but it showed the following output (no cdata) when run against libxslt 1.1.22, using libxml 2.6.30. These are the current latest version as of today. I downloaded them here http://www.zlatkovic.com/libxml.en.html (I can only test on windows), but I don't believe they differ much from the originals. (you must set method="xml" explicitly in this case, otherwise the processor recognizes the html tag and automatically switches to html output format, but you knew that already, of course :)


<?xml version="1.0"?>
<html>
 <head>
   <title>test</title>
   <script>
                   function myfunc()
                   {
                       if(x&gt;y) return 1;
                       if(x&lt;y) return 0;
                   }
               </script>
 </head>
 <body>
   <h1>Hello world</h1>
 </body>
</html>


Oh, and btw, it does not add content type "meta" for me. I do remember the previous discussion, but I don't remember the conclusions. Are you sure PHP, or the webserver, or some XML serializer (I know, you answered Michael that you use the directly serialized string) is not adding things? Can you check that by running the same code *without* the use of PHP? (something you should always check before attempting to solve any weird issue that you blame on some specific tool or language).


HTH,
Cheers,
Abel Braaksma

Martynas Jusevicius wrote:
Hi xsl-list,

I'm working with PHP 5.2, and its XSL extension based on libxslt is
giving me headache again. It used to add Content-Type <meta> in my
XHTML output where it was not supposed to, and now in a similar manner
it is implicitly adding CDATA sections inside my <script> elements.

Most of the browsers do not understand CDATA in <script>, so that
gives JavaScript syntax error. Putting // comments to prevent that is
also not possible, since libxslt always puts CDATA before them.
Putting //<xsl:comment> to wrap my own CDATA used to do the trick, but
it does not work anymore with PHP 5.2.5 - libxslt wraps the leading //
in CDATA as well.

I think it is the same issue as in "Preventing CDATA output in XHTML":
http://www.biglist.com/lists/xsl-list/archives/200707/msg00060.html

I read that thread, but couldn't find any real solution that would fit
me. Upgrading libxslt is not an option, since it is built-in into PHP.
Can you think of any solutions or workarounds?

I'm using "xml" output method and XHTML 1.0 Strict doctype. I also
have to stick to "text/html" content type since Google Maps API (for
which I'm producing JavaScript) does not work properly with
"application/xhtml+xml".


Martynas Jusevicius www.xml.lt

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.