Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: [xsl] parser error with CDATA string '&a'

From: Martin Honnen <Martin.Honnen@------>
To:
Date: 3/1/2008 4:37:00 PM
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/


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent