XSLT
Шрифт:
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--В перигелии-->
</PLANET>
</PLANETS>
Предположим теперь, что вам нужно выбрать определенную планету, например, Венеру (Venus). Такая проверка не пройдет, потому что
NAME
вернет набор узлов из всех дочерних элементов <NAME>
контекстного узла, а так как у каждой планеты есть элемент <NAME>
со значением «Venus», такое условие
<xsl:template match="PLANET">
<xsl:if test="NAME='Venus'">
<TR>
<TD><xsl:value-of select="NAME"/></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="RADIUS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
</TR>
</xsl:if>
</xsl:template>
Для того чтобы проверить первый элемент
<NAME>
в каждом элементе <PLANET>
, можно воспользоваться функцией string
, поскольку она возвращает не набор узлов, а строку: <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
.
.
.
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<xsl:if test="string(NAME)='Venus'">
<TR>
<TD><xsl:value-of select="NAME"/></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="RADIUS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
</TR>
</xsl:if>
</xsl:template>
<xsl:template match="MASS">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
.
.
.
<xsl:template match="DAY">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
Конечно,
<NAME>
контекстного узла, проще воспользоваться NAME[1]
. string-length
Как можно предположить, функция
string-length
возвращает длину (length) переданной ей строки. Функция применяется таким образом: number string-length(string?)
В следующем примере я определяю длину названия каждой планеты при помощи
string-length
: <?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>
Length of Planet Names
</TITLE>
</HEAD>
<BODY>
<H1>
Length of Planet Names
</H1>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<xsl:value-of select="NAME"/> is
<xsl:value-of select-"string-length(NAME)"/>
characters long.
<BR/>
</xsl:template>
<xsl:template match="*">
</xsl:template>
</xsl:stylesheet>
А вот результат:
<HTML>
<HEAD>
<TITLE>
Length of Planet Names
</TITLE>
</HEAD>
<BODY>
<H1>
Length of Planet Names
Поделиться:
Популярные книги
Белые погоны
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Столичный доктор. Том III
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Король Руси
2. Иван Московский
Фантастика:
альтернативная история
6.25
рейтинг книги
Измена. Жизнь заново
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Идеальный мир для Лекаря 17
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эйгор. В потёмках
1. Эйгор
Фантастика:
боевая фантастика
7.00
рейтинг книги
Наследник
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Дракон
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
На изломе чувств
Любовные романы:
современные любовные романы
6.83
рейтинг книги
Боярышня Дуняша
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кодекс Охотника. Книга XII
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Я еще не князь. Книга XIV
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пограничная река. (Тетралогия)
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
По осколкам твоего сердца
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56