xsl-list
[Top] [All Lists]

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

2008-03-01 09:36:35
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 & 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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--