xsl-list
[Top] [All Lists]

RE: [xsl] The identity transform and attributes

2008-01-21 04:03:33
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>
--~--