Am 08.03.2018 um 07:36 schrieb Dr. Patrik Stellmann
patrik.stellmann@xxxxxxxxx:
>
> Hi,
>
> a question more motivated by curiosity than by a real problem:
>
> With
>
> <xsl:sequence select=ba, bb/>
>
> I will get first element a and second element b b no matter of the
> order within the input document.
>
> But with
>
> <xsl:sequence select=broot/(a, b)b/>
>
> I will get the elements a and b in document order. So this behaves
> identical to
>
> B B B B B B B B B B B <xsl:sequence select=broot/(a | b)b/>
>
> Why?
>
As for the why, see https://www.w3.org/TR/xpath20/#id-path-expressions
which says
Each operation|E1/E2|is evaluated as follows: Expression|E1|is
evaluated, and if the result is not a (possibly empty) sequence of
nodes, atype error <https://www.w3.org/TR/xpath20/#dt-type-error>is
raised [err:XPTY0019 <https://www.w3.org/TR/xpath20/#ERRXPTY0019>]. Each
node resulting from the evaluation of|E1|then serves in turn to provide
an*inner focus*for an evaluation of|E2|, as described in*2.1.2 Dynamic
Context* <https://www.w3.org/TR/xpath20/#eval_context>. The sequences
resulting from all the evaluations of|E2|are combined as follows:
1.
If every evaluation of|E2|returns a (possibly empty) sequence of
nodes, these sequences are combined, and duplicate nodes are
eliminated based on node identity.The resulting node sequence is
returned indocument order
<https://www.w3.org/TR/xpath20/#dt-document-order>.
|