?

Log in

No account? Create an account

xsl:sort

Есть две xslt-переменные, которые берут свои свойства из элементов начального xml-дерева.

<xsl:variable name="sort_by" select="sort/by" />
<xsl:variable name="sort_order" select="sort/order" />

Переменные свои значения успешно получают. С этим все нормально. Далее есть элемент <xsl:sort /> с атрибутами select="" и order="", в которые мне и надо впихнуть эти две переменные.

С первым атрибутом худо-бедно разобрался.

<xsl:sort select="*[name() = $sort_by]" />

Конструкция не очень, но работает. Проблемы начались с атрибутом order="". Дело в том, что он вообще не принимает переменные ни в каком виде. Только два значения: ascending/descending.

Казалось бы, в чем проблема? Ведь можно написать с помощью xsl:choose условие с двумя одинаковыми сортировками, одна из которых будет ascending, а другая descending. А вот хрен там. Потому что xsl:sort должен быть прямым потомком либо xsl:for-each, либо xsl:template. И на другие комбинации xslt-анализатор отвечает ошибкой.

Вот и спрашивается, чего теперь с этим великолепием делать? Можно, конечно, сортировку осуществлять на уровне MySQL, откуда берутся данные для формирования xml с данными, но это всегда успеется.

Может, кто-что знает? Посмотреть, как это работает можно по ссылке http://silkleo.ru/dvds2/. Там используется client-side-xslt, поэтому все исходники можно посмотреть-пощупать.
Tags: , ,

Comments

На новой работе на части проектов используется xslt-шаблонизатор. Нравится он мне или нет — а надо его освоить. Вот и осваиваю.


P.S:

Лучше б чего-нибудь по делу написал.

Edited at 2010-10-07 10:56 am (UTC)