|
Subject: [xsl] Understanding Identity Transformations From: Karl Stubsjoen <kstubs@xxxxxxxxx> Date: Fri, 11 Feb 2005 15:56:58 -0700 |
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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Dynamic output method, Karl Stubsjoen | Thread | Re: [xsl] Understanding Identity Tr, Dimitre Novatchev |
| RE: [xsl] New W3C Working Drafts (a, Pieter Reint Siegers | Date | Re: [xsl] Aborting XSL processing d, Dimitre Novatchev |
| Month |