xsl-list
[Top] [All Lists]

RE: [xsl] How to duplicate an entire subtree

2008-12-27 05:43:47

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(_at_)gmail(_dot_)com] 
Sent: 27 December 2008 00:17
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>