XSLT
Шрифт:
Листинг 2.4. Использование <xsl:value-of>
<?xml version="1.0">
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<xsl:apply-templates/>
</HTML>
</xsl:template>
<xsl:template match="PLANETS">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="PLANET">
<xsl:value-of select="NAME"/>
</xsl:template>
</xsl:stylesheet>
Значение узла, содержащего текст, будет просто текстом, поэтому результат применения этой таблицы стилей к
planets.xml
следующий: <HTML>
Mercury
Venus
Earth
</НТМL>
АТРИБУТ DISABLE-OUTPUT-ESCAPING
Атрибут disable-output-escaping элемента <xsl:value-of> более подробно рассмотрен в главе 3.
Предположим, нам нужно осуществить нечто более сложное — например, преобразовать данные из
planets.xml
в HTML-таблицу в новом файле planets.html
(рис. 2.1), как мы видели в главе 1. Теперь это можно сделать при помощи <xsl:value-of>
. Рис. 2.1. Planets.html в Internet Explorer
Здесь важно учесть один момент. В
planets.xml
формально не задан порядок элементов <MASS>
, <RADIUS>
, <DAY>
и <DISTANCE>
, однако важно, чтобы эти элементы обрабатывались в определенном порядке в соответствии с заголовками таблицы. Поэтому я буду использовать элементы <xsl:value-of>
в том порядке, в котором они требуются в таблице HTML. Таким образом, чтобы создать HTML-таблицу, изображенную на рис. 2.1, я сначала ищу элемент
<PLANETS>
и затем заменяю его на HTML для создания самой HTML-таблицы. Элемент <PLANETS>
— дочерний элемент корневого узла, и поскольку на корневой узел можно сослаться через «/», на элемент <PLANETS>
можно сослаться непосредственно через "/PLANETS
", без необходимости предварительно применять шаблон для корневого узла. Это пример выражения XPath, большое число подобных мы также увидим в главе 4. Ниже приведен пример того, как я начал создавать HTML-таблицу путем выбора элемента
<PLANETS>
непосредственно как "/PLANETS
" — заметьте, что для применения шаблонов к любым дочерним узлам <PLANETS>
я использовал <xsl:apply-templates>
: <?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>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
.
.
.
Каждый дочерний узел
<PLANET>
имеет дочерние узлы <NAME>
, <MASS>
, <RADIUS>
и <DAY>
, и я хочу обрабатывать их именно в таком порядке — для того чтобы они добавлялись в HTML-таблицу в соответствии с заголовками таблицы. Для задания порядка их обработки я поместил элементы <xsl:value-of>
(листинг 2.5). Листинг 2.5. planets.xsl
<?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>
The Planets Table
</TITLE>
</HEAD>
Поделиться:
Популярные книги
Бастард Императора
1. Бастард Императора
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Дважды одаренный. Том VIII
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXV
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Точка Бифуркации
1. ТБ
Фантастика:
боевая фантастика
7.33
рейтинг книги
Начало шторма
9. Громовая поступь
Фантастика:
фэнтези
рпг
5.75
рейтинг книги
Личный аптекарь императора. Том 4
4. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Аномальный наследник. Пенталогия
Аномальный наследник
Фантастика:
фэнтези
6.70
рейтинг книги
Тринадцатый XI
11. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Жертва
2. Звездный Бродяга
Фантастика:
боевая фантастика
космическая фантастика
рпг
попаданцы
6.25
рейтинг книги
Печать Пожирателя 3
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Мир в латах (сборник)
Фантастика:
социально-философская фантастика
научная фантастика
5.00
рейтинг книги
Измена. Свадьба дракона
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Наследник 2
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Рубежник
1. Бедовый
Фантастика:
юмористическая фантастика
городское фэнтези
мистика
5.00