title: Difference between: child::node() and child::*
body: <p>I just wrote an XSLT that did not work at first.</p>
  
  <p>I had to rename all children of <code>&lt;Recordset&gt;</code> to <code>&lt;C&gt;</code>:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;Record&gt;
  &lt;Recordset&gt;
      &lt;company&gt;102&lt;/company&gt;
      &lt;store&gt;1801&lt;/store&gt;
      ....
  &lt;/Recordset&gt;
  &lt;Recordset&gt;
  ....
  &lt;/Recordset&gt;
  &lt;/Record&gt;
  </code></pre>
  
  <p>I used the following XSLT:</p>
  
  <pre><code>&lt;xsl:template match="Record/Recordset/child::*"&gt;    
      &lt;xsl:element name="C"&gt;
          &lt;xsl:apply-templates select="@*|node()"/&gt;
      &lt;/xsl:element&gt;
  &lt;/xsl:template&gt;
  </code></pre>
  
  <p>It works and renames all children of <code>&lt;Recordset&gt;</code> to <code>&lt;C&gt;</code>.
  But first my match in the template looked like this:</p>
  
  <pre><code>&lt;xsl:template match="Record/Recordset/child::node()"&gt;
  </code></pre>
  
  <p>My idea was that every child of <code>&lt;Recordset&gt;</code> is a node, thus <code>node()</code> would be appropriate.
  It worked too but it inserted an extra <code>&lt;C/&gt;</code> for each child.</p>
  
  <p>What's the difference between <code>child::node()</code> and <code>child::*</code>?</p>