This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Copy CDATA nodes from XML to XML format w/ XALAN


> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]