Subject: Re: [xsl] grouping across a collection()|
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 20 Dec 2010 16:35:15 +0000
On Mon, Dec 20, 2010 at 16:10, Michael Kay<mike@xxxxxxxxxxxx> wrote:It should of course have been group-by="f:position(.)"On 20/12/2010 15:06, James Cummings wrote:Hi there,Something like this:
I have a number of files with tei:l elements in them. So I create a collection: <xsl:variable name="docs" select="collection($path)"/> and then want to iterate over the collection grouping all first lines together, all second lines together, etc.
<xsl:for-each-group select="$docs//tei:l" group-by="f:position()"> ... </xsl:for-each-group>
<xsl:function name="f:position" as="xs:integer"> <xsl:param name="node" as="node()"/> <xsl:number select="$node" level="any"/> </xsl:function>Oh, that seems to work! So instead of grouping by position() which always ends up being the same, this calls a function which gets a better xsl:number using @level='any'.
Michael Kay Saxonica