Язык преобразований XSL


Сортировка


<xsl:sort
  select = string-expression
  lang = { nmtoken }
  data-type = { "text" | "number" | qname-but-not-ncname }
  order = { "ascending" | "descending" }
  case-order = { "upper-first" | "lower-first" } />

Сортировка задается с помощью элементов xsl:sort, данных как непосредственный потомок элемента xsl:apply-templates или xsl:for-each. Первый непосредственный потомок xsl:sort задает первичный ключ сортировки, второй непосредственный потомок xsl:sort задает вторичный ключ сортировки, и так далее. Если элемент xsl:apply-templates или xsl:for-each имеет одного или несколько непосредственных потомков xsl:sort, то вместо того чтобы обрабатывать выбранные узлы в том порядке как они следуют в документе, сперва производится их упорядочение в соответствии с заданными ключами сортировки, и лишь затем они обрабатываются в полученном порядке. При использовании в xsl:for-each элементы xsl:sort должны ставиться в начале. Если обрабатывается шаблон из xsl:apply-templates и xsl:for-each, то в качестве берется полный отсортированный список обрабатываемых узлов.

xsl:sort имеет атрибут select, значением которого является . Указанное выражение вычисляется для каждого узла, подлежащего обработке. При этом данный узел используется в качестве текущего узла, а полный неупорядоченный список узлов, подлежащих обработке, выступает в роли текущего набора узлов. Полученный после вычисления объект преобразуется в строку как при вызове функции . Данная строка используется как ключ сортировки для этого узла. По умолчанию атрибут select имеет значение ., которое приводит к тому, что в качестве ключа сортировки используется строковое значение текущего узла.

Полученная строка используется как ключ сортировки для данного узла. Ниже приведены необязательные атрибуты элемента xsl:sort, управляющие упорядочением списка ключей сортировки, значения всех этих атрибутов рассматриваются как .




- Начало -  - Назад -  - Вперед -