Re: [xsl] Handling elements which is inside CDATA in input XML

Subject: Re: [xsl] Handling elements which is inside CDATA in input XML
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Mon, 01 Nov 2010 14:11:08 +0100
Ramkumar.V wrote:
Are you limited to XSLT 1.0 or can you use XSLT 2.0? Which XSLT processor do you use?
And what format exactly is there inside the CDATA section, is that XML, HTML, or what exactly? Is it ensured that '<' and '>' do only occur to delimit tags you want to remove?
No, I can use xslt 2.0. I am using saxon9 for xml to html tranformation. CDATA contains xml elements, i need to remove only span element.

Saxon 9.1 with all versions and 9.2 and 9.3 with the commercial versions supports http://www.saxonica.com/documentation/extensions/functions/parse.xml so you could take that contents of the question element, parse it and run it through templates stripping span elements e.g.
<xsl:template match="question">
<p>
<xsl:apply-templates select="saxon:parse(.)/node()" mode="strip"/>
</p>
</xsl:template>


  <xsl:template match="*" mode="strip">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="span" mode="strip">
    <xsl:apply-templates/>
  </xsl:template>

--

	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread