This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: breaking sorted material into subsections
- To: xsl-list at mulberrytech dot com
- Subject: Re: breaking sorted material into subsections
- From: Nick Browne <NickBrowne at slipstone dot co dot uk>
- Date: Mon, 18 Sep 2000 22:20:04 +0100
- Organization: Slipstone Ltd
- References: <200009181501.RAA11396@mail.informatik.hu-berlin.de>
- Reply-To: xsl-list at mulberrytech dot com
For interest, this does not appear to work in Oracle XSLT 2.0.2.8 or 2.0.2.9.
Having played around with a similar variation on this solution the problem seems
to be when the expression in the 'use' attribute of the key declaration
references a function, i.e. it is OK if a simple element or attribute reference
is used. As soon as the key is referenced in the template an 'XSL-1036 : Cannot
convert string to node set' message is given. A shame, as this method allows the
'index' to be built without concern to the source data order. Is there another
way ?
Regards
--
Nick Browne
Slipstone Ltd
P.S. (Will be) Reported to Oracle
Oliver Becker wrote:
> ..... Adapted to Eric's problem I get
>
> <xsl:key name="letters" match="index" use="substring(@entry,1,1)" />
> <xsl:template match="IndexEntryData">
> <xsl:for-each
> select="index[count(. | key('letters',
> substring(@entry,1,1))[1]) = 1]">
> <xsl:sort select="@entry" />
> <xsl:variable name="initial" select="substring(@entry,1,1)" />
> <h2> <xsl:value-of select="$initial" /> </h2>
> <xsl:for-each select="key('letters', $initial)">
> <xsl:sort select="@entry" />
> <p> <xsl:value-of select="@entry" /> </p>
> </xsl:for-each>
> </xsl:for-each>
> </xsl:template>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list