Weird. How are you running this transformation (what XSLT processor, what
XML parser, and how are you invoking it?)
Michael Kay
-----Original Message-----
From: Rohit Mathur [mailto:geek_on_line(_at_)yahoo(_dot_)com]
Sent: 29 June 2004 03:21
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XSL & CDATA Processing
Hi,
I am trying to perform an XSL transform for an XML
Document to remove duplicate Nodes. The XML file is as
below
<Test>
<Text LineCount="29" Object="RECORD" Status="?"
Version="000">
<Text.Description><![CDATA[Table
File]]></Text.Description>
<Text.LongDescription><![CDATA[Table
File]]></Text.LongDescription>
</Text>
<Text LineCount="29" Object="RECORD" Status="?"
Version="000">
<Text.Description><![CDATA[Table
File]]></Text.Description>
<Text.LongDescription><![CDATA[Table
File]]></Text.LongDescription>
</Text>
</Test>
The XSL stylesheet I am using to do this is as below.
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" >
<xsl:output method="xml"
omit-xml-declaration="yes"/>
<xsl:template match="Text">
<xsl:if test="not(@Object =
preceding::Text/@Object)">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:if>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
The output generated removes the duplicate node but
somehow doesn't process the CDATA sections properly.
<Test>
<Text LineCount="29" Object="RECORD" Status="?"
Version="000">
<![CDATA[<Text.Description>]]>Table
File</Text.Description>
<![CDATA[<Text.LongDescription>]]>Table
File</Text.LongDescription>
</Text>
</Test>
I have tried adding a "cdata-section-elements" section
to the xsl:ouput tag telling it to treat
Text.Description & Text.LongDescription as CDATA.
This creates the following output
<Test>
<Text LineCount="29" Object="RECORD" Status="?"
Version="000">
<![CDATA[<Text.Description><![CDATA[]]]]><![CDATA[>]]><![CD
ATA[Table
File]]></Text.Description>
<![CDATA[<Text.LongDescription><![CDATA[]]]]><![CDATA[>]]><
![CDATA[Table
File]]></Text.LongDescription>
</Text>
</Test>
Can anyone help me?
Cheers
Rohit.
Find local movie times and trailers on Yahoo! Movies.
http://au.movies.yahoo.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>
--+--