[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] escaping from CDATA


Subject: Re: [xsl] escaping from CDATA
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Fri, 26 Oct 2001 10:30:42 +0100

Hi Steve,

> Question 1:
> You are using java - is there a way to do this in javascript
> in IE6? I am write javascript in the following context:

> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>                 xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>                 xmlns:user="http://mycompany.com/mynamespace"
>                 version="1.0">
>
> <msxsl:script language="javascript" implements-prefix="user">
>   <![CDATA[
>    function Fun(arg) {
>
>    }
>   ]]>
> </msxsl:script>
>
> <xsl:template ...>
>   <xsl:value-of select="user:Fun($arg)"/>
> </xsl:template>
>
> </xsl:stylesheet>

Yes. Create a Document object and use the loadXML() method to parse
the XML string into a document. Return the Document object from the
function (this turns into a node set containing a single root node in
XPath terms). Then you probably want to *copy* that Document with
xsl:copy-of rather than get its value with xsl:value-of.

If the XML string isn't a well-formed XML document (e.g. it's got more
than one 'document element') then you can wrap a start tag and end tag
around it using JavaScript string manipulation.

> Question 2:
> I originally said the text was wrapped in CDATA:
>
>    <![CDATA[<element attr="100"><a>100</a><b>200</b></element>]]>
>
> Would it make any difference if the string was not wrapped in CDATA
> but just had the angle brackets represented as entities (which is
> the actual case):
>
>   &lt;element attr=&quot;100&quot;&gt; ... &lt;/element&gt;

No, none at all. An XSLT processor sees the two versions as being
exactly the same string.

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords