XSLT
Шрифт:
<xsl:message terminate="yes">
Each planet must have a name!
</xsl:message>
</xsl:if>
<xsl:value-of select="NAME"/>
<xsl:choose>
<xsl:when test="position!=last">, </xsl:when>
<xsl:when test="position=last-1">and </xsl:when>
<xsl:otherwise>.</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Вот
<PLANET>
при помощи <xsl:if>
: <?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT>
<TITLE>
The Planets
</TITLE>
<PLANETS>
The first three planets are: Mercury, Venus, and Earth.
</PLANETS>
</DOCUMENT>
Вот еще один пример преобразования XML-XML. В этом случае я преобразую
planets.xml
в новый XML-документ, сохраняя только название каждой планеты и добавляя описание: <?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT>
<TITLE>
The Planets
</TITLE>
<PLANETS>
<PLANET>
<NAME>Mercury</NAME>
<DESCRIPTION>Hottest</DESCRIPTION>
</PLANET>
<PLANET>
<NAME>Venus</NAME>
<DESCRIPTION>Hot</DESCRIPTION>
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<DESCRIPTION>OK</DESCRIPTION>
</PLANET>
</PLANETS>
</DOCUMENT>
Это преобразование можно реализовать, выбирая значение каждого элемента
<NAME>
, то есть заключенный в нем текст (заметьте, что такого рода строки в XSLT учитывают регистр) (листинг 5.5). Листинг 5.5. Второй пример <xsl:choose>
<?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>
<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>
<PLANET>
<NAME>
<xsl:value-of select="NAME"/>
</NAME>
<DESCRIPTION>
<xsl:choose>
<xsl:when test="NAME='Mercury'">Hottest</xsl:when>
<xsl:when test="NAME='Venus'">Hot</xsl:when>
<xsl:when test="NAME='Earth'">OK</xsl:when>
</xsl:choose>
</DESCRIPTION>
</PLANET>
</xsl:template>
</xsl:stylesheet>
Вот
Предположим теперь, что нам нужно добавить в каждый элемент
<PLANET>
атрибут COLOR
: <?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="#"?>
<PLANETS>
<PLANET COLOR="RED">
<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>
Поделиться:
Популярные книги
Замуж второй раз, или Ещё посмотрим, кто из нас попал!
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Протокол "Наследник"
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сердце Дракона. Том 11
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Вперед в прошлое!
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Шесть принцев для мисс Недотроги
3. Мисс Недотрога
Фантастика:
фэнтези
7.92
рейтинг книги
Хочу тебя любить
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Огни Аль-Тура. Желанная
3. Эйнар
Любовные романы:
любовно-фантастические романы
эро литература
5.25
рейтинг книги
Начальник милиции 2
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Мастер...
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Сумеречный стрелок 8
8. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Я до сих пор не князь. Книга XVI
16. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Обыкновенные ведьмы средней полосы
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Метаморфозы Катрин
Фантастика:
фэнтези
8.26
рейтинг книги
Идеальный мир для Социопата
1. Социопат
Фантастика:
боевая фантастика
рпг
постапокалипсис
6.17