Re: [xsl] Document reordering after applying path expression

Subject: Re: [xsl] Document reordering after applying path expression
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 30 Jun 2015 21:30:59 -0000
The result of an expression that uses the b/b operator is sorted into
document order.

Document order among nodes in separate trees is implementation-dependent, so
$a may come either before or after $b depending on the implementation.

Michael Kay
Saxonica


> On 30 Jun 2015, at 20:20, Max Toro maxtoroq@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> The following stylesheet:
>
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet version="2.0" exclude-result-prefixes="#all"
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>     xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>
>   <xsl:output method="xml" indent="yes"/>
>
>   <xsl:template name="main">
>
>      <xsl:variable name="a">
>         <a/>
>      </xsl:variable>
>
>      <xsl:variable name="b">
>         <b/>
>      </xsl:variable>
>
>      <for-each1>
>         <xsl:for-each select="reverse(($a, $b))">
>            <xsl:copy-of select="."/>
>         </xsl:for-each>
>      </for-each1>
>
>      <for-each2>
>         <xsl:for-each select="reverse(($a, $b))/*">
>            <xsl:copy-of select="."/>
>         </xsl:for-each>
>      </for-each2>
>
>   </xsl:template>
>
> </xsl:stylesheet>
>
> Outputs:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <for-each1>
>   <b/>
>   <a/>
> </for-each1>
> <for-each2>
>   <a/>
>   <b/>
> </for-each2>
>
> Why is the sequence reordered after applying a path expression?
> Is this conformant with the standard? If yes, what section talks about it?
>
> I'm using Saxon 9.6.0.6.
>
> Original post: http://stackoverflow.com/questions/31126950
>
> --
> Max Toro

Current Thread