Требуется сортировка XSLT для обработки некоторых строк как чисел - PullRequest
1 голос
/ 16 августа 2010

Я не уверен, является ли это ошибкой или именно так работает сортировка XSLT.

Когда я делаю следующее:

<xsl:apply-templates select="//*[@id&lt;=50000]">
  <xsl:sort select="@id" />
</xsl:apply-templates>

Результаты не сортируются какесли они числа.

Например, я бы получил следующие результаты:

@id 0
@id 1
@id -1
@id 100
@id -100
@id 12345
@id 2
@id -2
@id 200

etc..

Но я бы хотел, чтобы результаты были такими:

@id -100
@id -2
@id -1
@id 0
@id 1
@id 2
@id 100
@id 200
@id 12345

etc..

Как я могу получитьсортировать результаты численно?

Я знаю, что number () может преобразовать строку в число, но я не знаю, как это будет использоваться в этом контексте.

Любые предложения о том, что можно сделать, чтобы это исправитьбыл бы признателен:)

1 Ответ

3 голосов
/ 16 августа 2010

Элемент xsl:sort будет сортироваться по алфавиту по умолчанию.

Необходимо указать порядок сортировки чисел, добавив атрибут data-type со значением number:

<xsl:apply-templates select="//*[@id&lt;=50000]">
  <xsl:sort select="@id" data-type="number" />
</xsl:apply-templates>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...