title: XSLT to wrap all chid elements in parent tag
body: <p>I have an xml document like this:</p>
  
  <pre><code>&lt;Catalogs&gt;
      &lt;Catalog&gt;
          &lt;Code&gt;x&lt;/Code&gt;
          &lt;Name&gt;Ox&lt;/Name&gt;
          &lt;Categories&gt;
              &lt;Category&gt;
                  &lt;Id&gt;9245&lt;/Id&gt;
                  &lt;Name&gt;a&lt;/Name&gt;
                  &lt;Category&gt;
                      &lt;Id&gt;9247&lt;/Id&gt;
                      &lt;Name&gt;x&lt;/Name&gt;
                  &lt;/Category&gt;
              &lt;/Category&gt;
              &lt;Category&gt;
                  &lt;Id&gt;9250&lt;/Id&gt;
                  &lt;Name&gt;x&lt;/Name&gt;
                  &lt;Category&gt;
                      &lt;Id&gt;9252&lt;/Id&gt;
                      &lt;Name&gt;x&lt;/Name&gt;
                  &lt;/Category&gt;
                  &lt;Category&gt;
                      &lt;Id&gt;9258&lt;/Id&gt;
                      &lt;Name&gt;x&lt;/Name&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9260&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                      &lt;/Category&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9261&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                      &lt;/Category&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9261&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                      &lt;/Category&gt;
                  &lt;/Category&gt;
              &lt;/Category&gt;
              &lt;Category&gt;
                  &lt;Id&gt;9251&lt;/Id&gt;
                  &lt;Name&gt;x&lt;/Name&gt;
                  &lt;Category&gt;
                      &lt;Id&gt;9253&lt;/Id&gt;
                      &lt;Name&gt;x&lt;/Name&gt;
                  &lt;/Category&gt;
              &lt;/Category&gt;
          &lt;/Categories&gt;
      &lt;/Catalog&gt;
  &lt;/Catalogs&gt;
  </code></pre>
  
  <p>I would like to wrap each subset of Category-tags into a collection tag (Categories).
  The problem here is that this is a recursive tree, and the depth of the tree is unknown.</p>
  
  <p>I tried to use an xslt transformation for this, but haven't succeeded yet. My attempt</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
  &lt;xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
  
  &lt;xsl:template match="Category"&gt;
    &lt;Categories&gt;&lt;xsl:apply-templates select="Category"/&gt;&lt;/Categories&gt;
  &lt;/xsl:template&gt;
  
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>just replaces all children with an empty Categories tag.</p>
  
  <p>Sample output should be something like this:</p>
  
  <pre><code>&lt;Catalogs&gt;
      &lt;Catalog&gt;
          &lt;Code&gt;x&lt;/Code&gt;
          &lt;Name&gt;Ox&lt;/Name&gt;
          &lt;Categories&gt;
              &lt;Category&gt;
                  &lt;Id&gt;9245&lt;/Id&gt;
                  &lt;Name&gt;a&lt;/Name&gt;
                  &lt;Categories&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9247&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                      &lt;/Category&gt;
                  &lt;/Categories&gt;
              &lt;/Category&gt;
              &lt;Category&gt;
                  &lt;Id&gt;9250&lt;/Id&gt;
                  &lt;Name&gt;x&lt;/Name&gt;
                  &lt;Categories&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9252&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                      &lt;/Category&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9258&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                          &lt;Categories&gt;
                              &lt;Category&gt;
                                  &lt;Id&gt;9260&lt;/Id&gt;
                                  &lt;Name&gt;x&lt;/Name&gt;
                              &lt;/Category&gt;
                              &lt;Category&gt;
                                  &lt;Id&gt;9261&lt;/Id&gt;
                                  &lt;Name&gt;x&lt;/Name&gt;
                              &lt;/Category&gt;
                              &lt;Category&gt;
                                  &lt;Id&gt;9261&lt;/Id&gt;
                                  &lt;Name&gt;x&lt;/Name&gt;
                              &lt;/Category&gt;
                          &lt;/Categories&gt;
                      &lt;/Category&gt;
                  &lt;/Categories&gt;
              &lt;/Category&gt;
              &lt;Category&gt;
                  &lt;Id&gt;9251&lt;/Id&gt;
                  &lt;Name&gt;x&lt;/Name&gt;
                  &lt;Categories&gt;
                      &lt;Category&gt;
                          &lt;Id&gt;9253&lt;/Id&gt;
                          &lt;Name&gt;x&lt;/Name&gt;
                      &lt;/Category&gt;
                  &lt;/Categories&gt;
              &lt;/Category&gt;
          &lt;/Categories&gt;
      &lt;/Catalog&gt;
  &lt;/Catalogs&gt;
  </code></pre>
  
  <p>Any pointers (or full solutions) would be appreciated.</p>