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 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>.