XSLT
Шрифт:
<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->
</PLANET>
<PLANET COLOR="WHITE">
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE UNITS="million miles">66.8</DISTANCE><!--B
перигелии-->
</PLANET>
<PLANET COLOR="BLUE">
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->
</PLANET>
</PLANETS>
Отобразить названия различных планет при помощи элемента
<xsl:choose>
, отформатированные по-разному при помощи тегов HTML <В>
, <I>
и <U>
в зависимости от значения атрибута COLOR
, можно следующим образом (листинг 5.6). Листинг 5.6. Форматирование при помощи <xsl:choose>
<?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:choose>
<xsl:when test="@COLOR = 'RED'">
<В>
<xsl:value-of select="NAME"/>
</B>
</xsl:when>
<xsl:when test="@COLOR = 'WHITE'">
<I>
<xsl:value-of select="NAME"/>
</I>
</xsl:when>
<xsl:when test="@COLOR = 'BLUE'">
<U>
<xsl:value-of select="NAME"/>
</U>
</xsl:when>
<xsl:otherwise>
<PRE>
<xsl:value-of select="."/>
</PRE>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Вот
<HTML>
<HEAD>
<TITLE>
Planets
</TITLE>
</HEAD>
<BODY>
<B>Mercury</B>
<I>Venus</I>
<U>Earth</U>
</BODY>
</HTML>
Как вы видели, при помощи
<xsl:if>
можно проверять единственное условие, а при помощи <xsl:choose>
— несколько; аналогичные конструкции присутствуют в большинстве языков программирования. Кроме подобных этим условных операторов, в большей части языков программирования существуют также операторы цикла, и в XSLT содержится нечто похожее — элемент <xsl:for-each>
. Элемент <xsl:for-each>
Элемент
<xsl:for-each>
позволяет применять тело шаблона в цикле снова и снова для всех элементов набора узлов. С технической точки зрения, он работает с набором узлов, который возвращает выражение XPath и выполняет одно и то же действие с каждым узлом в наборе. При каждом шаге цикла тело шаблона применяется к следующему узлу из набора узлов, что дает возможность легко обрабатывать несколько узлов. <XSL:FOR-EACH> ПРОТИВ <XSL:APPLY-TEMPLATES>
Вы могли заметить, что это описание практически такое же, как и у элемента <xsl:apply-templates>, и я сравню элементы <xsl:for-each> и <xsl:apply-templates> через несколько страниц.
Поделиться:
Популярные книги
Мастер 3
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Бастард
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Ваше Сиятельство 2
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Дважды одаренный. Том VI
6. Дважды одаренный
Фантастика:
аниме
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
Кодекс Охотника. Книга XXII
22. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Низший - Инфериор. Компиляция. Книги 1-19
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
5.00
рейтинг книги
Гром Раскатного. Том 2
2. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Князь
5. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
5.00
рейтинг книги
Третий. Том 3
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Менталист. Революция
3. Выиграть у времени
Фантастика:
боевая фантастика
5.48
рейтинг книги
Analyste
Аналитик
Фантастика:
социально-философская фантастика
юмористическая фантастика
6.57
рейтинг книги
Вернувшийся: Новая жизнь. Том I
1. Вернувшийся
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Бастард Бога (Дилогия)
Фантастика:
альтернативная история
5.11
рейтинг книги
Принадлежать им
Любовные романы:
современные любовные романы
5.00