This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Copy CDATA nodes from XML to XML format w/ XALAN
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Sun, 3 Mar 2002 22:27:58 -0000
- Subject: RE: [xsl] Copy CDATA nodes from XML to XML format w/ XALAN
- Reply-to: xsl-list at lists dot mulberrytech dot com
> I'm dealing with a similar issue. I'm trying to implement
> a very simple compositional XSLT based query language.
No, this isn't similar at all, because all the information you need is
present in the XPath data model.
>
> My question is, is there a way to output tagged elements,
> ie. given the XML document:
>
> <data>
> <test>aa</test>
> </data>
>
> I wish to apply XSLT to output
>
> <test>aa</test>
Well, the simplest way is
<xsl:template match="data">
<xsl:copy-of select="child::node()"/>
</xsl:template>
>
> I'm interested in doing this because the content of the data
> element may be any XML document and I need to translate all
> newline characters of that into whitespaces. Eg. given
>
> <data>
> <a>
> <b>content</b>
> </a>
> </data>
>
> I need to output
>
> <a><b>content</b></a>
>
> Any hints on how to accomplish this?
If the whitespace that you want to get rid of is all in separate text nodes
(i.e. it is not adjacent to non-whitespace text), simply add to the
stylesheet the top-level declaration
<xsl:strip-space elements="*"/>
If the changes you want to make are more subtle, you'll need to depart from
the <xsl:copy-of> approach, and instead do a recursive apply-templates all
down the tree. For example:
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>
will achieve a rather more brutal pruning of whitespace if that's what you
want.
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list