xsl-list
[Top] [All Lists]

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

2014-01-10 05:01:49
On 10 January 2014 10:56, Costello, Roger L. <costello(_at_)mitre(_dot_)org> 
wrote:
David wrote:

        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.

Michael responded:

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

But Michael doesn't that contradict section 19.1 of the XSLT 3.0 
specification:

        For example <xsl:value-of select="//head"/> will
        still fail the streamability tests, because of the
        possibility that one head element is a child of
        another. This problem can be remedied by
        writing <xsl:value-of select="//head/text()"/>.

He did also say:

"but you are
not allowed to do "absorption" operations such as string() or data() or
copy-of()."

and you quote from the spec is effectively that.


-- 
Andrew Welch
http://andrewjwelch.com

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