XSLT
Шрифт:
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
indent="yes"/>
<xsl:template match="/PLANETS">
<html>
<head>
<title>
The Planets Table
</title>
</head>
<body>
<h1>
The Planets Table
</h1>
<table>
<tr>
<td>Name</td>
<td>Mass</td>
<td>Radius</td>
<td>Day</td>
</tr>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="PLANET">
<tr>
<td><xsl:value-of select="NAME"/></td>
<td><xsl:apply-templates select="MASS"/></td>
<td><xsl:apply-templates select="RADIUS"/></td>
<td><xsl:apply-templates select="DAY"/></td>
</tr>
</xsl:template>
<xsl:template match="MASS">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
<xsl:template match="RADIUS">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
<xsl:template match="DAY">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
</xsl:stylesheet>
Вот результирующий файл XHTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>
The Planets Table
</title>
</head>
<body>
<h1>
The Planets Table
</h1>
<table>
<tr>
<td>Name</td>
<td>Mass</td>
<td>Radius</td>
<td>Day</td>
</tr>
<tr>
<td>Mercury</td>
<td>.0553 (Earth = 1)</td>
<td>1516 miles</td>
<td>58.65 days</td>
</tr>
<tr>
<td>Venus</td>
<td>.815 (Earth = 1)</td>
<td>3716 miles</td>
<td>116.75 days</td>
</tr>
<tr>
<td>Earth</td>
<td>1 (Earth = 1)</td>
<td>2107 miles</td>
<td>1 days</td>
</tr>
</table>
</body>
</html>
Полученный документ,
planets.html
, является и хорошо сформированным, и допустимым документом XHTML 1.0 — в соответствии с программой допустимости W3C для HTML и XHTML, расположенной по адресу:Заметьте, что, поскольку документы XHTML являются в то же время хорошо сформированными XML-документами, мы воспользовались методом вывода XML, — поэтому преобразование не было слишком сложным; единственной сложностью оказалось создание элемента <!DOCTYPE>
. Изменение структуры документа на основе входных данных
До сих пор созданные мной шаблоны основывались на определенном жестком скелете, точно задающем, что должно попасть в выходной документ и в каком порядке. Но при помощи таких элементов XSLT, как
<xsl:element>
, <xsl:attribute>
, <xsl:text>
и т.д., можно создавать новые узлы в рабочем порядке, на основе данных входного документа. У вас уже есть небольшой опыт в этой области, поскольку мы работали с шаблонами значений атрибутов в главе 3. Как вы помните, при помощи таких шаблонов можно присвоить атрибуту значение выражения XPath, если заключить это выражение в фигурные скобки, { и }. Например, чтобы установить атрибут
NAME
в строковое значение элемента <DESCRIPTION>
, дочернего элемента контекстного узла, это значение можно присвоить так: NAME={DESCRIPTION}
. Теперь мы можем более подробно рассмотреть всю тему создания новых элементов и атрибутов «с ходу», начав с <xsl:element>
.
Поделиться:
Популярные книги
Кодекс Крови. Книга ХIII
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Травница Его Драконейшества
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Французская новелла XX века. 1900–1939
Проза:
классическая проза
6.25
рейтинг книги
Родословная. Том 2
2. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 9
9. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XIV
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неучтенный элемент. Том 8
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Группа крови на рукаве
1. ГК
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.40
рейтинг книги
Целого Мира Мало
Любовные романы:
современные любовные романы
8.88
рейтинг книги
Гранд
3. Воздушный стрелок
Фантастика:
боевая фантастика
8.12
рейтинг книги
Эпоха Опустошителя. Том IV
4. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Ермак. Телохранитель
2. Ермак
Фантастика:
альтернативная история
7.50