Re: [xsl] xml elements as output after xslt parsing

Subject: Re: [xsl] xml elements as output after xslt parsing
From: Lars Huttar <lars_huttar@xxxxxxx>
Date: Sat, 09 Oct 2010 22:34:33 -0500
 On 10/9/2010 5:04 PM, sudheshna iyer wrote:
> I want to traverse through two xmls and produce 3rd xml from xslt. I want to see 
> the xml elements instead of just the values in the output.
>
> Input:
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!-- Edited by XMLSpy. -->
> <catalog>
>     <cd>
>         <title>Empire Burlesque</title>
>     </cd>
> </catalog>
>
> XSL:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!-- Edited by XMLSpy. -->
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> <xsl:template match="/">
>   <xsl:apply-templates/>  
> </xsl:template>
>
> <xsl:template match="cd">
> <newCD>
> <xsl:value-of select="."/>
> </newCD>
> </xsl:template>
> </xsl:stylesheet>
>
>
> Needed Output:
> <newCD>
>     <title>Empire Burlesque</title>
> </newCD>
>
> Produced output:
> Empire Burlesque 
>

Sudheshna,
I'm not sure what 2 XML input documents you wanted to traverse... I only
see one.
But you can get the output you're looking for by changing the last
template to:

<xsl:template match="cd">
  <newCD>
    <xsl:copy-of select="*"/>
  </newCD>
</xsl:template>

This is because <xsl:value-of> gets the text value of a nodeset, whereas
<xsl:copy-of /> copies each node and its descendants.

Lars

Current Thread