<template name="split" xmlns="http://www.w3.org/1999/XSL/Transform">
<param name="s" />
<param name="withcomma" select="false()" />
<choose>
<when test="contains($s, ',')">
<!-- if there is still a comma, call me again
with everything after the first comma... -->
<call-template name="split">
<with-param name="s" select="substring-after($s, ',')" />
<with-param name="withcomma" select="true()" />
</call-template>
<!-- ...and print afterwards the current part -->
<value-of select="substring-before($s, ',')" />
<if test="$withcomma">
<text>, </text>
</if>
</when>
<otherwise>
<!-- No comma left in the remaining part: print the rest -->
<value-of select="$s" />
<if test="$withcomma">
<text>, </text>
</if>
</otherwise>
</choose>
</template>
Возможно, вам придется немного покопаться в пробеле (найдите функцию XPath 'normalize-space()
'), чтобы получить точный результат, но в принципе обратная сортировка показана в коде выше. Назовите это из других ваших шаблонов, как это:
<call-template name="split">
<with-param name="s" select="." />
</call-template>