[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Identity Transform

Subject: Identity Transform
From: "Christian Roth" <roth@xxxxxxxxxxxxxx>
Date: Mon, 7 Nov 2005 12:24:28 +0100
identity transform
Hi,

this is a question for my own understanding.

Browsing through posts on this list, I can find two forms of what's
called "identity transform":

** Form 1 **

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


** Form 2 **

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

(The difference is in the apply-templates' 'select' attribute.)

Both seem to work when testing locally, both with Xalan and Saxon,
seemingly no warnings, omissions or errors.

However, XSLT specifies that first, one has to add attributes to a node
before appending any children. Doesn't Form 2 first append child nodes
and then attributes, which should either result in an error or silently
discard the attributes?

Has this something to do with document traversal order, i.e. while
building the list of selected items using "node()|@*", the attribute
nodes (satisfying the expression) are found first and are therefore
added first to the list of items to be copied, in consequence satisfying
the "attribute-before-children" requirement?

Regards, Christian.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.