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()"/>.
/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>
--~--