RE: [xsl] How to duplicate an entire subtree

Subject: RE: [xsl] How to duplicate an entire subtree
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 27 Dec 2008 10:43:12 -0000
You're making it much too difficult.

<xsl:template match="catalog"> 
<catalog>
  <xsl:copy-of select="book"/>
  <xsl:copy-of select="book"/>
</catalog>
</xsl:template>

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: nick public [mailto:nickpubl@xxxxxxxxx] 
> Sent: 27 December 2008 00:17
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] How to duplicate an entire subtree
> 
> Hi experts.
> I'm using an XSL processor ver. 1 by Microsoft and I have the 
> following URGENT problem.
> I need to produce an XML output containing the duplication of a (very
> complex) node; not just the text elements but element name and
> attribute(s) too.
> An example can be this in which I want to duplicate the 
> <book> node and subs:
> 
> =========================
> <catalog>
>       <book id="bk101">
>               <author>Gambardella, Matthew</author>
>               <title>XML Developer's Guide</title>
>               <genre>Computer</genre>
>               <price>44.95</price>
>               <publish_date>2000-10-01</publish_date>
>               <description>An in-depth look at creating 
> applications with XML.</description>
>       </book>
> </catalog>
> =========================
> 
> The output have to be like this:
> 
> =========================
> <catalog>
>       <book id="bk101">
>               <author>Gambardella, Matthew</author>
>               <title>XML Developer's Guide</title>
>               <genre>Computer</genre>
>               <price>44.95</price>
>               <publish_date>2000-10-01</publish_date>
>               <description>An in-depth look at creating 
> applications with XML.</description>
>       </book>
>       <book id="bk101">
>               <author>Gambardella, Matthew</author>
>               <title>XML Developer's Guide</title>
>               <genre>Computer</genre>
>               <price>44.95</price>
>               <publish_date>2000-10-01</publish_date>
>               <description>An in-depth look at creating 
> applications with XML.</description>
>       </book>
> </catalog>
> =========================
> 
> I tried this script (and several variants of it):
> 
> =========================
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; > 
> <xsl:output method='xml' indent='yes'/>
>       <xsl:template match='catalog/book'>
>               <xsl:apply-templates/>
>               <xsl:apply-templates/>
>       </xsl:template>
>       <xsl:template match='book'>
>               <xsl:copy>
>                       <xsl:apply-templates select='@*|node()'/>
>               </xsl:copy>
>       </xsl:template>
> </xsl:stylesheet>
> =========================
> 
> The disconcerting thing is that I'm able to achieve just the 
> text elements whitout the XML structure. Have a look to the output:
> 
> =========================
> Gambardella, MatthewXML Developer's 
> GuideComputer44.952000-10-01An in-depth look at creating 
> applications with XML.
> Gambardella, MatthewXML Developer's 
> GuideComputer44.952000-10-01An in-depth look at creating 
> applications with XML.
> =========================
> 
> Who can help me, please?
> Ciao. Nicola

Current Thread