Re: [xsl] Conditional Transformition for CDATA node

Subject: Re: [xsl] Conditional Transformition for CDATA node
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Sun, 09 Dec 2007 13:34:45 +0900
At 2007-12-08 20:43 -0700, Karl Stubsjoen wrote:
Can you write a match for an element containing CDATA?

No ... CDATA boundaries are not preserved in the XPath data model. CDATA sections are just syntactic sugar and as such are not distinguished in the XML Information Set (see Appendix D):


http://www.w3.org/TR/2004/REC-xml-infoset-20040204

The thought
is:  raw web content in a CDATA element, and some web content will be
well formed.  So I might have something like:

<root>
  <data>
    <div>foo bar<br/>foo bar</div><!-- well formed -->
  </data>
  <data><![DATA[
    <p>not so foo<br>barf<!-- not well formed -->
    ]>
  </data>
</root>

In one case, I'd simply xsl:value-of the data element, and in the
other case, I'd write an identity transformation for it.

Just by using the identity transform you will get the identical *information* in the result tree as in the source, you just won't get the identical syntax for that information.


A downstream application based on the XML information set will not see a difference if the characters of your CDATA section are instead individually escaped.

I hope this helps.

. . . . . . . . . . . Ken

--
Comprehensive in-depth XSLT2/XSL-FO1.1 classes: Austin TX,Jan-2008
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds:     publicly-available developer resources and training
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread