xsl-list
[Top] [All Lists]

Understanding Identity Transformations

2005-02-11 15:56:58
Seems like this is pretty standard:

SAMPLE_001:
<xsl:template match="node()|@*">
  <xsl:copy>
    <xsl:apply-templates select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

But then I've also seen this:

SAMPLE_002:
<xsl:template match="/ | @* | node()">
   <xsl:copy>
     <xsl:apply-templates select="@* | node()"/>
   </xsl:copy>
</xsl:template>

How do they compare?  I make not of the SAMPLE_001 within the xsl:copy
there are 2 apply templates, what does each do?

Then, understanding what is happening, is the following sample true
that this will strip an XML doc of all attribute elements?

SAMPLE_003:
<xsl:template match="*">
  <xsl:copy>
    <xsl:apply-templates select="*"/>
  </xsl:copy>
</xsl:template>

And finally, when I identity transform the following my document i
quadrupled in size, but I though I was following standard practices
from previous example.

SAMPLE_004:
<xsl:template match="*">
  <xsl:copy>
    <xsl:apply-templates select="*"/>
    <xsl:apply-templates />
  </xsl:copy>
</xsl:template>

Ahh, I think I understand what is going on in SAMPLE_004 (please
confirm) I am basically applying templates for all nodes twice and in
the case of lets say SAMPLE_001 the first apply-templates simply gets
all attributes, the 2nd then gets all nodes.  We'd call this a
recursive call on the node set?

Karl

--~------------------------------------------------------------------
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>
--~--