XSLT
Шрифт:
Листинг 5.1. Применение <xsl:if>
<?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>
<xsl:apply-templates select="PLANET"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<xsl:value-of select="NAME"/>
is planet number <xsl:value-of select="position"/> from the sun.
<xsl:if test="position = last"><HR/><xsl:if>
</xsl:template>
</xsl:stylesheet>
Вот результат — как видите, элемент <HR> появляется только после последней перечисленной планеты:
<HTML>
<HEAD>
<TITLE>
Planets
</TITLE>
</HEAD>
<BODY>
Mercury is planet number 1 from the sun.
Venus is planet number 2 from the sun.
Earth is planet number 3 from the sun.
<HR>
</BODY>
</HTML>
Рассмотрим еще один пример — преобразование XML-XML, в котором перечисляются планеты из
planets.xml
. Однако я хочу, чтобы выводилось не просто «The first three planets are: Mercury Venus Earth» (первые три планеты: Меркурий Венера Земля), a «The first three planets are: Mercury, Venus, and Earth». Необходимые знаки пунктуации можно добавить, определяя текущий элемент при помощи функции position
и проверяя позицию при помощи <xsl:if>
(листинг 5.2). Листинг 5.2. Второй пример применения <xsl:if>
<?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">
<DOCUMENT>
<TITLE>
The Planets
</TITLE>
<PLANETS>
The first three planets are: <xsl:apply-templates select="PLANET"/>
</PLANETS>
</DOCUMENT>
</xsl:template>
<xsl:template match="PLANET">
<xsl:value-of select="NAME"/>
<xsl:if test="position!=last">, </xsl:if>
<xsl:if test="position=last-1">and </xsl:if>
<xsl:if test=position=last">.</xsl:if>
</xsl:template>
</xsl:stylesheet>
Вот результат:
<?xml version=" 1.0" encoding="UTF-8"?>
<DOCUMENT>
<TITLE>
The Planets
</TITLE>
<PLANETS>
The first three planets are: Mercury, Venus, and Earth
</PLANETS>
</DOCUMENT>
Как видите, я смог добавить правильные знаки пунктуации, определяя место в документе при помощи
<xsl:if>
. При помощи
<xsl:if>
можно также обнаруживать ошибки во время преобразования. Например, при помощи <xsl:if>
можно вывести сообщение, есть ли в planets.xml
элемент <NAME>
(листинг 5.3). Листинг 5.3. Обнаружение ошибок при помощи <xsl:if>
<?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">
<DOCUMENT>
<TITLE>
The Planets
</TITLE>
<PLANETS>
The first three planets are: <xsl:apply-templates select="PLANET"/>
</PLANETS>
</DOCUMENT>
</xsl:template>
<xsl:template match="PLANET">
<xsl:if test="NAME[not(text)]">
<xsl:message terminate="yes">
Each planet must have a name!
</xsl:message>
</xsl:if>
Поделиться:
Популярные книги
Кодекс Крови. Книга ХI
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.25
рейтинг книги
Черный Маг Императора 16
16. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Поводырь
3. Ботаник
Фантастика:
фэнтези
6.36
рейтинг книги
Бастард Императора. Том 6
6. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Эволюционер из трущоб
1. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Неучтенный. Дилогия
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Встреча
7. Петя и Валерон
Фантастика:
рпг
аниме
попаданцы
5.00
рейтинг книги
Ваше Сиятельство 3
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследие Маозари
1. Наследие Маозари
Фантастика:
рпг
попаданцы
аниме
5.80
рейтинг книги
Мой муж – чудовище! Изгнанная жена дракона
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Женить босса срочно!
Служебные романы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ермак. Противостояние. Книга одиннадцатая
11. Ермак
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Газлайтер. Том 5
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00