Subject: [xsl] Re: Creating a padded sort key: easier from elt sequence or string? From: Yves Forkl <Y.Forkl@xxxxxx> Date: Fri, 28 Jul 2006 11:04:12 +0200 |
> Yves Forkl wrote: > > >> - As my dotted sequence [like "3.11.A.9"] 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> > > [...] > > If you choose a string instead of several elements as your keys, you > can adapt this with tokenize().
Thank you very much for this, the solution looks really neat in XSLT 2.0. How to achieve the same result in XSLT 1.1 where user-defined functions are not generally available? (Not speaking of processor-specific capabilities.)
One thing I'm not sure about is which "idiom" could help to implement this idea. Can you give me a hint on this? (You don't need to bother writing the full code.)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] OpenOffice 2.0 or Word 20, Huditsch, Roman \(LN | Thread | [xsl] Getting an error with a varia, Garry Searle |
RE: [xsl] OpenOffice 2.0 or Word 20, Huditsch, Roman \(LN | Date | Re: [xsl] OpenOffice 2.0 or Word 20, Emmanouil Batsis |
Month |