Subject: Re: Understanding Identity Transformations
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sat, 12 Feb 2005 17:05:50 +1100
|
Read a good book and also these examples from Dave Pawson's XSL-FAQ:
http://www.dpawson.co.uk/xsl/sect2/identity.html
http://www.dpawson.co.uk/xsl/sect2/N1930.html
Cheers,
Dimitre Novatchev
On Fri, 11 Feb 2005 15:56:58 -0700, Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> 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
|