XSLT
Шрифт:
<TD><xsl:value-of select="RADIUS"/></TD>
<TD><xsl:value-of select="DAY"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
Эта упрощенная таблица стилей форматирует
planets.xml
в planets.html
практически так же хорошо, как и шаблон, использующий <xsl:apply-templates>
,
<xsl:for-each>
, а когда <xsl:apply-templates>
? Как правило,
<xsl:apply-templates>
хорошо применять в тех случаях, когда организация дочерних узлов неизвестна, и вы хотите применить различные шаблоны к потомкам разных видов — независимо от количества уровней, на которые углубляется их структура. С другой стороны, если дочерние узлы обладают регулярной, хорошо определенной организацией, можно задать <xsl:for-each>
для обработки всех этих узлов. Элемент
<xsl:for-each>
работает во многом так же, как и <xsl:apply-templates>
; можно даже вкладывать шаблоны при помощи <xsl:for-each>
, как это делается при помощи последовательных элементов <xsl:apply-templates>
. В листинге 5.8 я прохожу в цикле по каждому элементу <PLANET>
, а затем во вложенном в него цикле по всем элементам, содержащимся в элементе <PLANET>
, перечисляя их данные из элементов <DATA>
следующим образом. Листинг 5.8. Второй пример <xsl:for-each>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="PLANETS">
<PLANETS>
<xsl:for-each select="PLANET">
<PLANET>
<xsl:for-each select="*">
<DATA>
<xsl:value-of select="."/>
</DATA>
</xsl:for-each>
</PLANET>
</xsl:for-each>
</PLANETS>
</xsl:template>
</xsl:stylesheet>
И вот результат:
<?xml version="1.0" encoding="UTF-8"?>
<PLANETS>
<PLANET>
<DATA>Mercury</DATA>
<DATA>.0553</DATA>
<DATA>58.65</DATA>
<DATA>1516</DATA>
<DATA>.983</DATA>
<DATA>43.4</DATA>
</PLANET>
<PLANET>
<DATA>Venus</DATA>
<DATA>.815</DATA>
<DATA>116.75</DATA>
<DATA>3716</DATA>
<DATA>.943</DATA>
<DATA>66.8</DATA>
</PLANET>
<PLANET>
<DATA>Earth</DATA>
<DATA>1</DATA>
<DATA>1</DATA>
<DATA>2107</DATA>
<DATA>1</DATA>
<DATA>128.4</DATA>
</PLANET>
</PLANETS>
Сортирующие
При помощи элемента
<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>
Поделиться:
Популярные книги
Я не князь. Книга XIII
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний попаданец 11. Финал. Часть 1
11. Последний попаданец
Фантастика:
фэнтези
юмористическое фэнтези
рпг
5.00
рейтинг книги
Покоритель Звездных врат
1. Повелитель звездных врат
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Совок-8
8. Совок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том III
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Король Масок. Том 1
1. Апофеоз Короля
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ищу жену для своего мужа
Любовные романы:
любовно-фантастические романы
6.17
рейтинг книги
Мастер Разума III
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Темный Охотник 2
2. Темный охотник
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 20
20. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Обыкновенные ведьмы средней полосы
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Возвышение Меркурия. Книга 16
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Адепт. Том 1. Обучение
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Идущий в тени 4
4. Идущий в тени
Фантастика:
боевая фантастика
6.58