- From: <bugzilla@jessica.w3.org>
- Date: Thu, 12 May 2016 10:15:57 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29604
--- Comment #1 from Michael Kay <mike@saxonica.com> ---
I really have no idea what we were thinking of when we wrote the sentence:
"To compute both the count and the maximum value in a single pass over the
input, it is possible to use two variables."
Perhaps the spec was different when we wrote that, and we failed to notice the
effect of a change.
In fact the way I would recommend computing multiple aggregates is to use a
map:
<xsl:template name="xsl:initial-template" expand-text="yes">
<xsl:stream href="transactions.xml">
<xsl:variable name="aggregates"
select="map{'count': count(transactions/transaction),
'maxValue':
"max(transactions/transaction/xs:decimal(@value))}"/>
<count>{$count}</count>
<maxValue>{$max}</maxValue>
</xsl:stream>
</xsl:template>
I haven't tested this under Saxon but it ought to work, and I think it would be
a good idea to add the example to the spec.
(We decided to special-case map constructors so that multiple consuming
operands are allowed: they therefore become a convenient way to capture
multiple results during a single scan of the input. This can also be achieved
using xsl:fork or using accumulators, but those mechanisms are much more
complex.)
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Thursday, 12 May 2016 10:16:00 UTC