Я собираю список имен. Но когда я сортирую список, цифры не сортируются так, как я их хочу.Сортировка чисел и текста с помощью XSLT
Вот уместный раздел XSLT:
<xsl:template match="index">
<index><xsl:for-each select="indexitem">
<xsl:sort select="translate(name, '<"', '')"/>
<xsl:sort select="searchscott" data-type="number"/>
<indexitem>
<xsl:apply-templates select="name"></xsl:apply-templates>
<xsl:apply-templates select="scott"/>
<xsl:apply-templates select="searchscott"/>
<xsl:apply-templates select="searchterm"/>
</indexitem></xsl:for-each></index>
</xsl:template>
Пример XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<index xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><indexitem>
<name>3-Leaf Clover Snowflake</name>
<scott>(4102)</scott>
<searchscott>4102</searchscott>
<searchterm>3-Leaf Clover Snowflake</searchterm></indexitem>
<indexitem>
<name>2004 Olympic Games Athens</name>
<scott>(3863)</scott>
<searchscott>3863</searchscott>
<searchterm>2004 Olympic Games Athens</searchterm>
</indexitem>
<indexitem>
<name>1943, Turning The Tide</name>
<scott>(2765-)</scott>
<searchscott>2765-</searchscott>
<searchterm>1943: Turning The Tide</searchterm>
</indexitem>
<indexitem>
<name>50s Sporty Cars</name>
<scott>(3931-3935)</scott>
<searchscott>3931-3935</searchscott>
<searchterm>50s Sporty Cars</searchterm>
</indexitem>
<indexitem>
<name><Valley of the Yosemite>, by Albert Bierstadt</name>
<scott>(4346)</scott>
<searchscott>4346</searchscott>
<searchterm>Albert Bierstadt, Valley of the Yosemite</searchterm>
</indexitem>
<indexitem>
<name>13 - Star Flag over Independence Hall</name>
<scott>(1622)</scott>
<searchscott>1622</searchscott>
<searchterm>13 - Star Flag over Independence Hall</searchterm>
</indexitem>
<indexitem>
<name>1606 Voyage of Samuel de Champlain</name>
<scott>(4073)</scott>
<searchscott>4073</searchscott>
<searchterm>1606 Voyage of Samuel de Champlain</searchterm>
</indexitem>
<indexitem>
<name>Racing Car 1911</name>
<scott>(2262)</scott>
<searchscott>2262</searchscott>
<searchterm>17.Racing Car 1911</searchterm>
</indexitem>
<indexitem>
<name>Duryea, 1893</name>
<scott>(3019)</scott>
<searchscott>3019</searchscott>
<searchterm>1893 Duryea</searchterm>
</indexitem>
</index>
Am Я мечтал думать, что я могу получить меньшие цифры сортировать в первую очередь? Такие как:
<name>3-Leaf Clover Snowflake</name>
<name>13 - Star Flag over Independence Hall</name>
<name>50s Sporty Cars</name>
<name>1606 Voyage of Samuel de Champlain</name>
<name>2004 Olympic Games Athens</name>
Или, это просто невозможно?
Благодаря
Я бы подумал, что «мечтает» ожидать, что он будет работать так, как вы хотите, без усилий :) Возможно, вы сможете отделить главную часть числа от букв с использованием регулярного выражения в XSLT 2.0. – har07
Какую версию XSLT вы используете? – har07
Я могу использовать 1 или 2. Но большинство подпрограмм, которые мы используем, основаны на 1. –