区切られた文字列 (以下の例ではスペースで区切られています) をトークン化し、並べ替えてから結合する必要があり、これらすべてを XSLT 1.0 を使用して行う必要があります。どうすればいいですか?どうにかして使用する必要があることはわかってxsl:sort
いますが、これまでに試したことはすべて、何らかのエラーを引き起こしました。
たとえば、この投稿の下部にあるコードを実行すると、次のようになります。
ストロベリー ブルーベリー オレンジ ラズベリー ライム レモン
代わりにこれを入手したい場合はどうすればよいですか?:
ブルーベリー レモン ライム オレンジ ラズベリー ストロベリー
XSLT 1.0 を使用していることに注意してください。
これは、 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>