xsl-list
[Top] [All Lists]

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

2014-01-09 04:49:07
On 09/01/2014 10:36, Costello, Roger L. wrote:
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).

It's an example of something but not a counterexample to the statement that path expressions return nodes in document order.


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.


well no, it doesn't output anything, it just selects the head elements in document order.

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

I haven't checked the streaming rules in detail but I would expect //head to be streamable. (You might not be able to access any of the child nodes in a streamable way but for example count(//head) ought to be able to count all the head in the document in a single pass.

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.

This one is streamable as discussed yesterday, the spec makes special provision for it.


So, some XPath expressions output in document order, some XPath
expressions do not

no


Some XPath expressions are streamable, some are
not.

yes

Some XPath expressions are rewritten internally by the
XPath-processor to make them streamable, some XPath expressions are
not rewritten.

yes

I am completely bewildered.

yes

/Roger



David


________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________

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