Re: parser error with CDATA string '&a'
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.
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 & or you need to use a CDATA section <![CDATA[&]]>. Both should work e.g.
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 &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 &
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 & then rest assured that both HTML and XML require the ampersand to be escaped as & and that browsers unescape such ampersands in links before making HTTP requests.
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format