I wouldn't expect any measurable performance difference, but if you feel it
adds clarity (or reusability) then go ahead. Perhaps even more logical would
be:
<xsl:template match="element()">
<xsl:copy>
<xsl:apply-templates select="@*,node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="attribute()|text()|comment()|processing-instruction()">
<xsl:copy/>
</xsl:template>
(The "," in place of "|" is a minor optimization that recent Saxon releases
do anyway - it avoids an unnecessary merge/deduplication of the sequence of
attributes with the sequence of children.)
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Andrew Welch [mailto:andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com]
Sent: 21 January 2008 10:29
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] The identity transform and attributes
I'm wondering if the default identity transform should be this:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
Or this:
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:copy/>
</xsl:template>
The former is nice and compact, but when the node is an
attribute node does the apply-templates call have any effect
- even if it's a few clock cycles wasted? It's a pointless
instruction at that point. I guess it is too for non-element
node()'s such as whitespace?
Also, the shallow copy copies the entire attribute, so there
is no opportunity to override the text() of the attribute.
The only way is to add a separate matching template for the
attribute - the latter perhaps makes this a little clearer.
A useful distinction or a waste of time? :)
cheers
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--