2010-08-16 2 views
1

Я не уверен, что это ошибка, или если это именно то, как работает XSLT.Нужна сортировка 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() может преобразовать строку в число, но я не знаю, как это будет использоваться в этом контексте.

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

ответ

3

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

Вы должны указать числовой порядок сортировки путем добавления атрибута data-type со значением number:

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

Спасибо! Я искал это, но не встретил тип данных. – developer

+0

@iHeartGreek - Всегда смотрите на спецификации или сайт-учебник. У них будут все атрибуты и их смысл. – Oded

Смежные вопросы