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

Re: parser error with CDATA string '&a'

Subject: Re: parser error with CDATA string '&a'
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Sat, 01 Mar 2008 17:36:03 +0100
Re:  parser error with CDATA string '&a'
Werner Remmers wrote:

I try to transform it with an xsl-sheet that copies its most part into a new document and makes changes on just some few nodes. And that doesn't work because Saxon throws the error reported.
I must not change &a to &amp; within the uri because the server won't be able no more to fetch the GET parameter "a" from the uri. It's not my server.

The input to your XSLT stylesheet is (usually) XML parsed by an XML parser and for that to work the ampersand needs to be escaped as &amp; or you need to use a CDATA section <![CDATA[&]]>. Both should work e.g.
<url_download>http://example.com/?var=1&amp;a=3</url_download>
<url_download><![CDATA[http://example.com/?var=1&a=3]]></url_download>


Isn't it really possible to copy the string as CDATA?

When you use XSLT to transform XML to XML then CDATA section in the serialized result are possible using the cdata-section-elements attribute on the xsl:output element e.g.
<xsl:output method="xml" cdata-section-elements="url_download"/>


After copying the content into a new document (what doesn't work yet) I want to use the <url_download> to dynamically generate links with its CDATA. One solution to th '&a' problem would be using the function fn:encode-for-uri (XSLT 2.0) which will transform back the &amp;a to &a. Unfortunately it is not possible because the libxst-processor that is included in PHP and that I must use for 'XSLT on the fly' only supports XSLT 1.0. That's why I must not change &a to &amp;

Your original request said you use Saxon and XSLT 2.0, now it is PHP and XSLT 1.0. But either way the input to the XSLT stylesheet is usually an XML document parsed by an XML parser requiring the input to be well-formed. If you transform to HTML and you are concerned that HTML browsers are not able to deal with links containing &amp; then rest assured that both HTML and XML require the ampersand to be escaped as &amp; and that browsers unescape such ampersands in links before making HTTP requests.



--


	Martin Honnen
	http://JavaScript.FAQTs.com/

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.