Subject: RE: Preserve CDATA for all elements
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 14 May 2006 18:48:31 +0100
|
Sorry, can't be done. The XSLT processor doesn't get to see where the CDATA
sections were in the source document.
Remember that CDATA sections are just a keyboard shortcut. The following are
all exactly equivalent, and your XSLT processor will see the same input
whichever form you use:
<e>">"</e>
<e>">"</e>
<e><![CDATA[">"]]></e>
As a matter of interest, *why* do you want to preserve the CDATA sections in
the input document?
If it's really important, you could put the XML through a Perl program or
similar that converts the CDATA section to an XML element as a
pre-processing phase and then does the reverse as a post-process.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Jagdishwar (Jagsmiles) [mailto:jagsmiles@xxxxxxxxx]
> Sent: 14 May 2006 18:29
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Preserve CDATA for all elements
>
> I would like to put the <![CDATA[ elements as is in my
> transformed xml.
> So, i had used following declaration at the beginning of the xsl:
> <xsl:output method="xml" cdata-section-elements="elementOne
> elementTwo elementThree"/>
>
> Its works fine for transforming the specified elements (i.e
> elementOne elementTwo elementThree) along with the CDATA.
>
> Actually i want to preserve CDATA as is, in all the elements
> my source xml.
> But Its not very comfortable to add each and every element to
> the cdata-section-elements attribute.
>
> I tried using * instead of the element names.
> <xsl:output method="xml" cdata-section-elements="*"/>
> but it does not work, the xslt transformer says:
> "This name may not contain the '*' character"
>
> But * works fine in other elements like xsl:strip-space
> <xsl:strip-space elements="*"/>
>
> Is there any way, where i can specify in xsl, to preserve all
> the CDATA for all the elements of the source xml document.
>
> Thank you all
>
> Kind Regards,
> Jagdishwar,
> Jagsmiles @ gmail.com
|