La segmentation et le tri avec XSLT 1.0

J'ai une chaîne délimitée (délimité par des espaces dans mon exemple ci-dessous) que j'ai besoin de marquer, de les trier, puis rejoindre de nouveau ensemble et j'ai besoin de faire tout cela à l'aide de XSLT 1.0. Comment dois-je procéder? Je sais que j'ai besoin d'utiliser xsl:sort en quelque sorte, mais tout ce que j'ai essayé jusqu'à présent m'a donné une sorte d'erreur.

Par exemple, si j'exécute le code en bas de cette annonce, j'obtiens ceci:

fraises et bleuets orange framboise
la chaux de citron

Que ferais-je si je voulais obtenir cette place?:

aux bleuets et citron lime orange framboise
fraise

Remarque que je suis en utilisant XSLT 1.0.

Voici le code, qui est basé sur du code de Jeni Tennison.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="tokenize1.xsl"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <xsl:call-template name="tokenize">
    <xsl:with-param name="string" select="'strawberry blueberry orange raspberry lime lemon'" />
  </xsl:call-template>
</xsl:template>

<xsl:template name="tokenize">
  <xsl:param name="string" />
  <xsl:param name="delimiter" select="' '" />
  <xsl:choose>
    <xsl:when test="$delimiter and contains($string, $delimiter)">
      <token>
        <xsl:value-of select="substring-before($string, $delimiter)" />
      </token>
      <xsl:text> </xsl:text>
      <xsl:call-template name="tokenize">
        <xsl:with-param name="string" 
                        select="substring-after($string, $delimiter)" />
        <xsl:with-param name="delimiter" select="$delimiter" />
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <token><xsl:value-of select="$string" /></token>
      <xsl:text> </xsl:text>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

</xsl:stylesheet>

OriginalL'auteur Paul Reiners | 2009-06-19