XSLT
Шрифт:
</xsl:template>
</xsl:stylesheet>
Теперь то же самое можно сделать при помощи единственного элемента
<xsl:choose>
: <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xml: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>
<xsl:value-of select="NAME"/>
<xsl:choose>
.
.
.
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Нам
<xsl:when>
. У этого элемента только один атрибут: •
test
(обязательный). Принимает логическое (Boolean
) значение (true/false
) проверяемого условия. Элемент
<xsl:when>
содержит тело шаблона. Атрибут проверки принимает значение true/false выражения, определяющего, будет ли применяться заключенное в элементе
<xsl:when>
тело шаблона или нет. Например, вот как я добавил элементы <xsl:when>
с соответствующими знаками пунктуации для всех планет, кроме последней: <?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>
<xsl:value-of select="NAME"/>
<xsl:choose>
<xsl:when test="position!=last">, </xsl:when>
<xsl:when test="position=last-1">and </xsl:when>
.
.
.
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Эти
<PLANET>
за исключением последнего, поэтому элемент <xsl:otherwise>
можно применить для последнего элемента <PLANET>
. Тело шаблона в этом элементе будет применено, если ни в одном элементе <xsl:when>
в элементе <xsl:choose>
условие не примет значение true
. У элемента
<xsl:otherwise>
нет атрибутов, и он содержит тело шаблона. Вот как это выглядит в листинге 5.4. Листинг 5.4. Применение <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>
The first three planets are: <xsl:apply-templates select="PLANET"/>
</PLANETS>
</DOCUMENT>
</xsl:template>
<xsl:template match="PLANET">
<xsl:if test="NAME[not(text)]">
Поделиться:
Популярные книги
Последний Паладин. Том 13
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
На границе империй. Том 7. Часть 5
11. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На цепи
1. На цепи
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Последний Паладин. Том 2
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Перешагнуть пропасть
1. Перешагнуть пропасть
Фантастика:
боевая фантастика
космическая фантастика
8.38
рейтинг книги
Полигон
S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
7.78
рейтинг книги
Протокол "Наследник"
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неучтенный элемент. Том 5
5. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Я все еще не царь. Книга XXVI
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Слово мастера
11. Гибрид
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга IV
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Печать Пожирателя
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Жена неверного генерала, или Попаданка на отборе
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Эммануэль
1. Эммануэль
Любовные романы:
эро литература
7.38