Subject: Re: [xsl] General rule for designing XPath expressions to return items in document order? From: Michael Kay <mike@xxxxxxxxxxxx> Date: Thu, 9 Jan 2014 11:21:32 +0000 |
> 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. >> That's a fair summary. //head is "consuming" (it reads the input stream), and "crawling" (it accesses all the nodes in the subtree). When you get an expression that is consuming and crawling, you are allowed to do "inspection" operations on the result, for example count(), exists(), or name(), but you are not allowed to do "absorption" operations such as string() or data() or copy-of(). Inspection operations on an element are operations that can be performed while positioned at the start tag, while absorption operations are operations that require access to the whole subtree. By contrast, /html/head is consuming and "striding" (the nodes it returns are peers - none is an ancestor of any other). With a striding expression, you can perform both inspection and absorption operations. So /html/head/string() is allowed, but //head/string() is not. This is horribly technical. Abel Braaksma and I will both be at XML Prague next month trying to explain it. Michael Kay Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] General rule for designin, David Carlisle | Thread | Re: [xsl] General rule for designin, Costello, Roger L. |
Re: [xsl] General rule for designin, Tony Graham | Date | Re: [xsl] Including node in group w, Wendell Piez |
Month |