Re: [xsl] ordered selection of child elements

Subject: Re: [xsl] ordered selection of child elements
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 8 Mar 2018 07:02:41 -0000
Am 08.03.2018 um 07:36 schrieb Dr. Patrik Stellmann 
> 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 
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 <>is 
raised [err:XPTY0019 <>]. 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* <>. The sequences 
resulting from all the evaluations of|E2|are combined as follows:


    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

Current Thread