XSLT
Шрифт:
<?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>
<TOC>
<xsl:apply-templates mode="toc"/>
</TOC>
.
.
.
</PLANETS>
</xsl:template>
<xsl:template match="PLANET" mode="toc">
<ENTRY>
<xsl:value-of select="NAME"/>
</ENTRY>
</xsl:template>
.
.
.
Затем
Листинг 6.14. Создание оглавления
<?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>
<TOC>
<xsl:apply-templates mode="toc"/>
</TOC>
<xsl:apply-templates select="@*|node"/>
</PLANETS>
</xsl:template>
<xsl:template match="PLANET" mode="toc">
<ENTRY>
<xsl:value-of select="NAME"/>
</ENTRY>
</xsl:template>
<xsl:template match="@*|node">
<xsl:copy>
<xsl:apply-templates select="@*|node"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
И, наконец, результат, выводящий
planets.xml
с оглавлением: <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="#"?>
<PLANETS>
<TOC>
<ENTRY>Mercury</ENTRY>
<ENTRY>Venus</ENTRY>
<ENTRY>Earth</ENTRY>
</TOC>
<PLANET>
<NAME>Mercury</NAME>
<MASS UNITS="(Earth = 1)">.0553</MASS>
<DAY UNITS="days">58.65</DAY>
<RADIUS UNITS="miles">1516</RADIUS>
<DENSITY UNITS="(Earth = 1)">.983</DENSITY>
<DISTANCE UNITS="million miles">43.4</DISTANCE><!--В
перигелии->
</PLANET>
.
.
.
</PLANETS>
В этой главе мы рассмотрели большую часть базового материала, и в следующей главе я собираюсь уделить внимание созданию полных выражений XPath. Хотя вы уже немного знакомы с этой темой по обсуждению образцов выбора в главе 4, нам осталось еще рассмотреть весьма значительную часть.
Глава 7
Работа с XPath
В главе 4 было объяснено, как создавать образцы выбора, которые можно использовать в атрибуте
match
таких элементов, как <xsl:template>
. Образцы являются подмножеством полного языка XPath, и в этой главе будет рассмотрена полная версия XPath. Выражения XPath применимы в XSLT не только в образцах выбора, но и во многих других приложениях: в атрибуте
select
элементов <xsl:apply-templates>
, <xsl:value-of>
, <xsl:for-each>
, <xsl:param>
, <xsl:variable>
, <xsl:with-param>
, <xsl:copy-of>
и <xsl:sort>
, в шаблонах значений атрибутов, в атрибуте test
элементов <xsl:if>
и <xsl:when>
, атрибуте value
элемента <xsl:number>
и в предикатах образцов выбора. На этот счет не может быть никаких сомнений: пока вы не знаете XPath, вы не знаете XSLT, и вся эта глава посвящена созданию выражений XPath и работе с ними. Фактически мы работали с выражениями XPath начиная с главы 1, в которой мы впервые познакомились с атрибутом
select
в элементах <xsl:apply-templates>
и <xsl:value-of>
: <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
<HEAD>
Поделиться:
Популярные книги
Князь Андер Арес 3
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга третья
3. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер решений
3. Специалист по выживанию
Фантастика:
боевая фантастика
космическая фантастика
6.20
рейтинг книги
Неучтенный элемент. Том 1
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Возвращение
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Двойник Короля 2
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
1941, Великая Отечественная катастрофа: Итоги дискуссии
Документальная литература:
военная документалистика
6.25
рейтинг книги
Страж Кодекса. Книга IV
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черная стрела
Приключения:
исторические приключения
8.83
рейтинг книги
Старый, но крепкий 7
7. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Последний Герой. Том 1
1. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Мастер...
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Сильнейший Столп Империи. Книга 2
2. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Князь Целитель 2
2. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00