Сортирующие элементы
Сортирующие элементы
При помощи элемента <xsl:sort> можно сортировать узлы. Этот элемент устанавливает порядок обработки узлов для <xsl:apply-templates> и <xsl:for-each>. В следующем списке перечислены атрибуты <xsl:sort>:
• select (необязательный). Принимает значение выражения XPath, возвращающего набор узлов для сортировки. По умолчанию — «string(.)»;
• order (необязательный). Задает порядок сортировки, устанавливается в «ascending» (по возрастанию) или «descending» (по убыванию);
• case-order (необязательный). Определяет, будут ли буквы в верхнем регистре располагаться перед буквами в нижнем регистре. Устанавливается в «upper-first» (сначала верхний) или «lower-first» (сначала нижний);
• lang (необязательный). Задает язык, чьи соглашения о сортировке будут применяться. Устанавливается в код языка, допустимый в атрибуте xml:lang;
• data-type (необязательный). Определяет, будет ли сортировка вестись в алфавитном или числовом порядке. Устанавливается в «text» (текст), «number» (число) или в QName.
Этот элемент не включает содержимое. Его следует применять внутри элементов <xsl:apply-templates> или <xsl:for-each> для сортировки наборов узлов, с которыми работают эти элементы.
В листинге 5.9 я только отсортирую элементы <PLANET> в planets.xml в возрастающем алфавитном порядке по их именам, используя <xsl:for-each> в упрощенной таблице стилей.
Листинг 5.9. Сортировка данных
<HTML xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0">
<HEAD>
<TITLE>
The Sorted Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Sorted Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:for-each select="//PLANET">
<xsl:sort/>
<TR>
<TD><xsl:value-of select="NAME"/></TD>
<TD><xsl:value-of select="MASS"/></TD>
<TD><xsl:value-of select="RADIUS"/></TD>
<TD><xsl:value-of select="DAY"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
А вот результат. Обратите внимание на то, что планеты действительно отсортированы как Earth, Mercury и затем Venus:
<HTML>
<HEAD>
<TITLE>
The Sorted Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Sorted Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1</TD>
<TD>2107</TD>
<TD>1</TD>
</TR>
<TR>
<TD>Mercury</TD>
<TD>.0553</TD>
<TD>1516</TD>
<TD>58.65</TD>
</TR>
<TR>
<TD>Venus</TD>
<TD>.815</TD>
<TD>3716</TD>
<TD>116.75</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Вид документа показан на рис. 5.1.
Рис. 5.1. Сортировка при помощи упрощенного шаблона
При помощи атрибута select можно указать, что нужно сортировать. Например, таким образом можно отсортировать планеты по плотности (листинг 5.10).
Листинг 5.10. Сортировка планет по плотности
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="PLANETS">
<HTML>
<HEAD>
<TITLE>
Planets
</TITLE>
</HEAD>
<BODY>
<H1>Planets sorted by density</H1>
<TABLE>
<TR>
<TD>Planet</TD>
<TD>Mass</TD>
<TD>Day</TD>
<TD>Density</TD>
</TR>
<xsl:apply-templates>
<xsl:sort select="DENSITY"/>
</xsl:apply-templates>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><xsl:apply-templates select="NAME"/></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
<TD><xsl:apply-templates select="DENSITY"/></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
Вот результаты этого преобразования:
<HTML>
<HEAD>
<TITLE>
Planets
</TITLE>
</HEAD>
<BODY>
<H1>
Planets sorted by density
</Н1>
<TABLE>
<TR>
<TD>Planet</TD>
<TD>Mass</TD>
<TD>Day</TD>
<TD>Density</TD>
</TR>
<TR>
<TD>Venus</TD>
<TD>.815</TD>
<TD>116.75</TD>
<TD>.943</TD>
</TR>
<TR>
<TD>Mercury</TD>
<TD>.0553</TD>
<TD>58.65</TD>
<TD>.983</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1</TD>
<TD>1</TD>
<TD>1</TD>
</TR>
</TABLE>
</BODY>
</HTML>
По умолчанию <xsl:sort> производит сортировку в алфавитном порядке, что означает, что «10» располагается перед «2». Для осуществления сортировки в числовом порядке установите атрибут типа данных в «number»:
<xsl:sort data-type="number" select="DENSITY"/>
Убывающий порядок сортировки задается установкой у элемента <xsl:sort> атрибута order в «descending». Можно также сортировать по значениям атрибута, например:
<xsl:apply-templates select="PLANETS>
<xsl:sort select="@SIZE"/>
</xsl:apply-templates>
НОВОЕ В XSLT 2.0
Одним из важных преимуществ XSLT 2.0 является поддержка схем XML, и W3C планирует внести в XSLT 2.0 возможность сортировки по любому типу данных, определенному в схеме документа, так же, как сейчас можно сортировать по строкам или числам.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
HTML-элементы управления и серверные элементы управления
HTML-элементы управления и серверные элементы управления Еще одной новинкой технологии ASP.NET является использование серверных элементов управления. Серверный элемент управления кодируется в Web-странице, а все его события и свойства обрабатываются Web-сервером. Серверные
Элементы UpDown
Элементы UpDown В рамках Windows Forms предлагается два элемента, функционирующие, как элементы управления с прокруткой (также известные, как элементы управления UpDown). Подобно ComboBox и ListBox, эти новые элементы также позволяют пользователю выбрать элемент из некоторого диапазона
ЭЛЕМЕНТЫ ЯЗЫКА СИ
ЭЛЕМЕНТЫ ЯЗЫКА СИ Под элементами языка понимаются его базовые конструкции, используемые при написании программ. В этом разделе описываются следующие элементы языка Си:– алфавит;– константы;– идентификаторы;– ключевые слова;– комментарии.Компилятор языка Си
Элементы макета
Элементы макета Заполнив форму личных данных, мы в очередной раз щелкаем по кнопке... И вот перед нами – готовая карточка! Так просто? Возможно, что и просто, ведь и на этом этапе вы можете остановиться, нажав кнопку Печать. Но в большинстве случаев созданный таким образом
1.1. Элементы интерфейса
1.1. Элементы интерфейса Первое, что вы увидите после запуска программы 3ds Max 2008, – ее основное окно (рис. 1.1).Если вы начинающий пользователь и не встечались с интерфейсом программы, сначала осмотрите элементы и ознакомьтесь с окружением. Вы увидите, что интерфейс
Необязательные элементы
Необязательные элементы UNIQUEКлючевое слово UNIQUE может быть использовано в индексах, для которых вы хотите запретить дублирующие записи. Столбец или группа проверяется на дублированные значения, когда индекс создается, а также для существующих значений каждый раз, когда
Элементы
Элементы В табл. П2.1 приведены описания основных элементов XSLT.Таблица П2.1. Описание основных элементов XSLT Элемент Описание <xsl:apply-imports/> Инструкция. Применяет шаблонные правила, которые содержатся в импортированных преобразованиях <xsl:apply-templates select="выражение"
§ 2.3 Элементы описания книги. Базовые структурные элементы
§ 2.3 Элементы описания книги. Базовые структурные элементы В самом начале любого файла книги идет признак формата XML<?xml version="1.0" encoding="windows-1251"?>Здесь указана сигнатура принадлежности к формату XML, его версия и кодировка файла. Для русскоязычных FictionBook это обычно windows-1251
§ 2.4 Элементы описания книги (description). Элементы первого уровня
§ 2.4 Элементы описания книги (description). Элементы первого уровня Элемент title-infoСодержит базовую информацию о книге (заголовок, информация об авторе и переводчике, аннотация, вхождение в серию и т.д.)Cинтаксис: <title-info>content</title-info>.Используется в элементах: descriptionВложенные
§ 2.5 Элементы описания книги (description). Элементы второго уровня
§ 2.5 Элементы описания книги (description). Элементы второго уровня Элемент genreЖанр произведения.Содержимое элемента строго фиксировано и определяется файлом FictionBookGenres.xsd, входящим в состав спецификации FictionBook.Список жанров с переводом приведен в Приложении В.Cинтаксис:
§ 2.6 Элементы описания книги (description). Элементы третьего уровня (информация об авторе)
§ 2.6 Элементы описания книги (description). Элементы третьего уровня (информация об авторе) Элемент first-nameИмя автора книги или документа, а также переводчика.Cинтаксис: <first-name>текст</first-name>Используется в элементах: author, translatorВложенные элементы: нетКоличество вхождений:
§ 2.8 Элементы раздела книги (section). Элементы первого уровня.
§ 2.8 Элементы раздела книги (section). Элементы первого уровня. Элемент citeЦитата. Отрывок текста из другого произведения.В FictionBook с помощью тэга cite также выделяются письма, записки, надписи, списки и еще много чего.Cинтаксис: <cite>content</cite>Используется в элементах: section,
§ 2.9 Элементы раздела книги (section). Элементы второго уровня.
§ 2.9 Элементы раздела книги (section). Элементы второго уровня. Элемент stanzaСтрофа стихотворения.Cинтаксис: stanza>content</stanza>Используется в элементах: poemВложенные элементы: title, subtitle, vКоличество вхождений: одно и болееАтрибуты: нетВерсия формата: 2.0Пример: см. пример
§ 2.11 Элементы абзаца (стилевые, они же inline элементы)
§ 2.11 Элементы абзаца (стилевые, они же inline элементы) Элемент aСсылка или сноска.Cинтаксис: <a>content</a>Используется в элементах: code, emphasis, p, strikethrough, strong, style, subtitle, sub, sup, th, td, vВложенные элементы: code, emphasis, strikethrough, strong, style, sub, sup, imageКоличество вхождений: