At 2004-06-27 20:16 +0200, Bert wrote:
I need some help with 'special sorting'.
I have this xml-file (simplified).
<alfabet>
<letter>a</letter>
<letter>b</letter>
<letter>c</letter>
<letter>d</letter>
</alfabet>
The outcome after sorting should however be this:
a b d c
The letter c has always to be the last item after sorting.
How can I achieve this?
By translating the letters you have into the letter-order you want sorted
for the purposes of calculating the collation string for each member of the
sort.
I hope the example below helps.
................ Ken
T:\ftemp>type bert.xml
<alfabet>
<letter>a</letter>
<letter>b</letter>
<letter>c</letter>
<letter>d</letter>
</alfabet>
T:\ftemp>type bert.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY given 'abcdefghijklmnopqrstuvwxyz'>
<!ENTITY needed 'abzcdefghijklmnopqrstuvwxy'>
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:for-each select="/*/letter">
<xsl:sort select="translate(.,'&given;','&needed;')"/>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
T:\ftemp>saxon bert.xml bert.xsl
a
b
d
c
T:\ftemp>
--
Public training 3 days XSLT & 2 days XSL-FO: Phoenix,AZ 2004-08-23
World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal