xsl-list
[Top] [All Lists]

Re: [xsl] General rule for designing XPath expressions to return items in document order?

2014-01-09 04:37:00
Hi Folks,

In yesterday's discussions we concluded that XPath expressions always return 
values in document order. However, I have a counter-example (from section 19.1 
of the XSLT 3.0 specification).

Consider this XML:

<Document>
    <head>
        <head>B</head>
        A
    </head>
</Document>

Clearly "A" comes after "B" in the document. But this XPath:

        //head

results in outputting the latter value ("A") first and the earlier value ("B") 
second. In fact, because of this non-document-order behavior, that XPath 
expression is not streamable (the processor would fetch "A" and then have to 
back up to fetch "B", and backing up is not allowed in streaming).

On the other hand, this XPath expression results in outputting the values in 
document order:

        //head/text()

That XPath results in outputting "B" followed by "A". Consequently that XPath 
is streamable.

So, some XPath expressions output in document order, some XPath expressions do 
not. Some XPath expressions are streamable, some are not. Some XPath 
expressions are rewritten internally by the XPath-processor to make them 
streamable, some XPath expressions are not rewritten.

I am completely bewildered. 

/Roger



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


<Prev in Thread] Current Thread [Next in Thread>