Subject: Re: [xsl] Can't output CDATA section From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 7 Jul 2004 15:49:43 +0100 |
Hi Robert, > How can I get the content of the CDATA section of this node? > > <option3link><![CDATA[javascript:objDialogBox.dlgReset();moduleFocus=old > ModuleFocus;]]></option3link> > > The use of > > <xsl:value-of select="option3link"/> > or > <xsl:copy-of select="option3link/."/> > > doesn't work? You don't say, but I suspect that you want the output to look like: <output><![CDATA[javascript:objDialogBox.dlgReset();moduleFocus=oldModuleFocus;]]></output> and are frustrated because you're instead getting: <output>javascript:objDialogBox.dlgReset();moduleFocus=oldModuleFocus;</output> The reason you're getting this output is that XSLT doesn't keep track of which text appears within a CDATA section and which text doesn't. As far as XSLT is concerned, your <option3link> element above is *exactly* the same as: <option3link>javascript:objDialogBox.dlgReset();moduleFocus=old ModuleFocus;</option3link> In both cases, you have an <option3link> element which contains a text node whose value is "javascript:objDialogBox.dlgReset();moduleFocus=old ModuleFocus;". Similarly, the result tree that you generate has elements, attributes and text nodes in it -- there aren't any "CDATA nodes". But you can get XSLT to output an element's text nodes in CDATA sections. To do this, use the <xsl:output> element at the top level of the stylesheet and set the cdata-section-elements attribute to hold the name(s) of the element(s) that should contain CDATA sections in the output. For example: <xsl:output cdata-section-elements="output" /> means that the result of: <output> <xsl:value-of select="option3link" /> </output> will be: <output><![CDATA[javascript:objDialogBox.dlgReset();moduleFocus=old ModuleFocus;]]></output> Of course you can name the element in which the CDATA section appears anything you like -- it doesn't have to be called 'output' -- just make sure that that's the name you list in the cdata-section-elements attribute. You might alternatively be able to use disable-output-escaping, but I'd avoid that method if you can. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Can't output CDATA sectio, M. David Peterson | Thread | Re: [xsl] Can't output CDATA sectio, Mukul Gandhi |
RE: [xsl] Can't output CDATA sectio, Passin, Tom | Date | RE: [xsl] Can't output CDATA sectio, Robert Soesemann |
Month |