- From: <bugzilla@jessica.w3.org>
- Date: Fri, 26 Feb 2016 11:52:05 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29507 Bug ID: 29507 Summary: [xslt30] A problem case for streamed grouping Product: XPath / XQuery / XSLT Version: Candidate Recommendation Hardware: PC OS: All Status: NEW Severity: normal Priority: P2 Component: XSLT 3.0 Assignee: mike@saxonica.com Reporter: mike@saxonica.com QA Contact: public-qt-comments@w3.org Target Milestone: --- I'm having difficulty with this test case: <xsl:template name="g-008" use-when="true() or $RUN"> <out> <xsl:stream href="../docs/books.xml"> <xsl:fork> <xsl:for-each-group select="($extra, /BOOKLIST/BOOKS/ITEM)" group-by="@CAT"> <CAT ID="{current-grouping-key()}"> <xsl:copy-of select="current-group()/PRICE"/> </CAT> </xsl:for-each-group> </xsl:fork> </xsl:stream> </out> </xsl:template> It seems to be guaranteed-streamable according to the spec, but in practice streaming it is very difficult. The problem is that current-group()/PRICE needs sorting into document order, because there is no guarantee that current-group() is already in document order, which is because it is not known whether the nodes in $extra will come before or after the nodes in /BOOKLIST/BOOKS/ITEM in document order. Now arguably, we know that the subset of nodes in current-group()/PRICE which are streamed nodes will be in document order relative to each other, so one could devise a strategy that takes this into account. But this is pretty hard to achieve. I'd prefer to make this one non-streamable, but I'm not sure of the best way of changing the rules to make it so. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Friday, 26 February 2016 11:52:09 UTC