|
Subject: [xsl] nodes order in union From: philippe drix <phdrix@xxxxxxx> Date: Sat, 17 Nov 2001 19:05:09 +0100 |
Hi,
Thanks to David Carlisle, Jeni Tennison, and Michael Kay for their
responses
to [xsl] match + default namespace.
I have now another little problem.
I want to write a recursive copy, following the example of the W3C REC
XSLT1.0 :
<xsl:template match="child::node()" mode="copie">
<xsl:copy>
<xsl:apply-templates select="@*" mode="copie"/>
<xsl:apply-templates select="node()" mode="copie" />
</xsl:copy>
</xsl:template>
That works fine.
And as expected, the following rule throws a runtime error, because we
try to bind attributes to an element which already owns some children :
<xsl:template match="child::node() | attribute::*" mode="copie">
<xsl:copy>
<xsl:apply-templates select="node()" mode="copie" />
<xsl:apply-templates select="@*" mode="copie"/>
</xsl:copy>
</xsl:template>
But if I transform the rule like this :
<xsl:template match="child::node() | attribute::*" mode="copie">
<xsl:copy>
<xsl:apply-templates select="node()|@*" mode="copie"/>
</xsl:copy>
</xsl:template>
or like this :
<xsl:template match="child::node() | attribute::*" mode="copie">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="copie"/>
</xsl:copy>
</xsl:template>
no error happens, and the copy is quite correct.
Is the XSLT processor (Saxon, actually) cleaver enougth to process the
nodes in right order ? Or is there somewhere in Xpath or XSLT a rule
which says that in this particulary case, union must yield a node-set
where attributes are located before other nodes (I can't find it)?
Best regards,
Philippe Drix
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] cdata?, Michael Kay | Thread | RE: [xsl] nodes order in union, Oleg Tkachenko |
| Re: [xsl] the last substring, Francis Norton | Date | RE: [xsl] nodes order in union, Oleg Tkachenko |
| Month |