Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

Безлимитный хостинг в России и Европе

Мощный, быстрый, стабильный

199 руб / Месяц

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

Быстрые и недорогие сервера в Германии

Сервера с видеокартой (GPU) в аренду недорого

Мощные сервера для раздачи видео здесь - до 100 Гбитс

10 Сортировка

<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, значением которого является выражение. Указанное выражение вычисляется для каждого узла, подлежащего обработке. При этом данный узел используется в качестве текущего узла, а полный неупорядоченный список узлов, подлежащих обработке, выступает в роли текущего набора узлов. Полученный после вычисления объект преобразуется в строку как при вызове функции string. Данная строка используется как ключ сортировки для этого узла. По умолчанию атрибут select имеет значение ., которое приводит к тому, что в качестве ключа сортировки используется строковое значение текущего узла.

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

  • order определяет, следует ли сортировать строки в направлении к предкам или потомкам. ascending определяет порядок в направлении к предкам. descending определяет порядок сортировки в направлении к потомкам. По умолчанию подразумевается ascending

  • lang задает язык для ключей сортировки. Атрибут имеет тот же самый диапазон значений, что и xml:lang [XML]. Если значение lang не указано, язык должен определяться из системного окружения.

  • data-type определяет тип данных для данных строк, разрешены следующие значения:

    • text указывает, что ключи сортировки должны быть упорядочены лексически в соответствии с культурными особенностями языка, указанного в атрибуте lang

    • number указывает что ключи сортировки должны быть преобразованы в числа, а затем упорядочены в соответствии со своим числовым значением, ключ сортировки преобразуется в число как при вызове функции number, атрибут lang игнорируется

    • QName с префиксом преобразуется в расширенное имя как описано в главе [2.4 Полные имена]. Расширенное имя идентифицирует тип данных. Данный документ не конкретизирует действия, предпринимаемые в этом случае.

    Значение по умолчанию - text.

    Замечание: Рабочая группа XSL планирует, что будущие версии XSLT будут использовать схемы XML для определения других значений для этого атрибута.
  • case-order имеет значение upper-first или lower-first. Данный атрибут используется когда есть data-type="text" и указано что заглавные буквы должны ставиться прежде прописных, либо, соответственно, наоборот. Например, если есть lang="en", то последовательность A a B b получается после сортировки с case-order="upper-first", а a A b B - после case-order="lower-first". Значение по умолчанию зависит от языка.

Замечание: Два разных XSLT процессора, соответствующих спецификации, могут выполнять сортировку не совсем одинаково. Некоторые из XSLT процессоров могут не поддерживать некоторые языки. Более того, для любого конкретного языка может варьироваться сортировка, которая не была задана атрибутом xsl:sort. Например, делается ли в японском языке сперва сортировка Hiragana или Katakana. В будущих версиях XSLT могут появиться дополнительные атрибуты, дающие контроль над такими вариациями. Для этой цели реализация в xsl:sort может использовать атрибуты, привязанные к специальным пространствам имен.
Замечание: Рекомендуется чтобы разработчики обращались к [UNICODE TR10] за информацией по интернациональной сортировке.

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

К примеру, предположим, что база данных служащих имеет формат

<employees>
  <employee>
    <name>
      <given>James</given>
      <family>Clark</family>
     </name>
    ...

  </employee>
</employees>

в таком случае список служащих можно отсортировать по имени с помощью:

<xsl:template match="employees">
  <ul>
    <xsl:apply-templates select="employee"> 
      <xsl:sort select="name/family"/>
      <xsl:sort select="name/given"/>
    </xsl:apply-templates>
  </ul>
 </xsl:template>

<xsl:template match="employee">
  <li>
    <xsl:value-of select="name/given"/>
    <xsl:text> </xsl:text> 
    <xsl:value-of select="name/family"/>
  </li>
</xsl:template>

Назад | Содержание | Вперед

 

Новости мира IT:

Архив новостей

Последние комментарии:

Языку Tcl исполнилось 30 лет (2)
Суббота 19.01, 15:57

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...