Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

<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>

Поделиться:
Популярные книги

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Душелов. Том 4

Faded Emory
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Душелов. Том 4

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

(Не) моя ДНК

Рымарь Диана
6. Сапфировые истории
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
(Не) моя ДНК

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Инквизитор Тьмы 4

Шмаков Алексей Семенович
4. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 4

Кротовский, сколько можно?

Парсиев Дмитрий
5. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, сколько можно?