Элемент <xsl:sort>

Определяет критерии сортировки списков узлов, выбираемые функциями <xsl:for-each> или <xsl:apply-templates>.

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

Атрибуты

  • select
    Ключ сортировки для узла. Выражение, вычисляемое с заданным узлом в качестве текущего, с обработкой полного списка узлов в неотсортированном порядке как текущего списка узлов. Результирующий объект преобразуется в строку, которая используется как ключ сортировки для этого узла. По умолчанию атрибут select имеет значение ".". Поэтому строковое значение текущего узла используется как ключ сортировки.

  • lang
    Язык, алфавит которого использовался для определения порядка сортировки. Если значение lang не задано, язык определяется по настройкам системы.

  • data-type
    Тип данных строк. В следующей таблице перечислены возможные значения атрибута data-type.

    text

    Указывает, что ключи сортировки должны сортироваться в алфавитном порядке.

    number

    Указывает, что ключи сортировки нужно преобразовать в числа, а затем отсортировать согласно численным значениям. Ключ сортировки преобразуется в число.

    QName

    Расширяется, преобразуясь в расширенное имя. Расширенное имя указывает на тип данных.

    Если тип данных не задан, по умолчанию будет использован тип выражения.

  • порядок
    Порядок сортировки строк. Значение по умолчанию — "ascending".

  • case-order
    Указывает порядок сортировки строк с учетом регистра. Значение по умолчанию - "upper-first", то есть строки с заглавными буквами ставятся на первые места.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

xsl:apply-templates, xsl:for-each

Дочерние элементы

(Нет дочерних элементов)

Заметки

Этот алгоритм сортировки игнорирует тире. Это метод сортировки слов, который ставит рядом слова «co-op» и «coop».

Например, слова будут отсортированы в следующем порядке:

30a-allow

30-allow

Таким образом, эта сортировка обращается со словами, как если бы они представляли собой:

30aallow

30allow