Yves Forkl wrote:
Hi
- As my dotted sequence can be of variable length, I need to
determine the number of sort statements dynamically.
As you said the numbers are < 1000, you can easily create a
normalized sort string:
~/xslt/tests> cat sort-keys.xsl
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:sort-keys.xsl"
version="2.0">
<xsl:output method="text"/>
<xsl:function name="my:normalise-sort-keys" as="xs:string">
<xsl:param name="keys" as="element()+"/>
<xsl:value-of separator="." select="
for $s in $keys/string(.) return
if ( matches($s, '[0-9]+') ) then
format-number(number($s), '000')
else
$s
"/>
</xsl:function>
<xsl:template match="/">
<xsl:for-each select="root/elt">
<xsl:sort select="my:normalise-sort-keys(sort_key_elt)"/>
<xsl:value-of select="@id"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:transform>
~/xslt/tests> cat sort-keys.xml
<root>
<elt id="1">
<sort_key_elt>A</sort_key_elt>
<sort_key_elt>12</sort_key_elt>
<sort_key_elt>z</sort_key_elt>
</elt>
<elt id="2">
<sort_key_elt>A</sort_key_elt>
<sort_key_elt>4</sort_key_elt>
<sort_key_elt>z</sort_key_elt>
</elt>
</root>
~/xslt/tests> saxon sort-keys.xml sort-keys.xsl
2
1
If you choose a string instead of several elements as your keys, you
can adapt this with tokenize().
Regards,
--drkm
___________________________________________________________________________
Découvrez un nouveau moyen de poser toutes vos questions quelque soit le sujet
!
Yahoo! Questions/Réponses pour partager vos connaissances, vos opinions et vos
expériences.
http://fr.answers.yahoo.com
--~------------------------------------------------------------------
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>
--~--