[xsl] How to duplicate an entire subtree

Subject: [xsl] How to duplicate an entire subtree
From: "nick public" <nickpubl@xxxxxxxxx>
Date: Sat, 27 Dec 2008 01:17:03 +0100
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