XSLT
Шрифт:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:script language="javascript">
<![CDATA[
function milesToKilometers(e) {
miles = parseInt(e.text);
return miles * 1.6;
}
]]>
</xsl:script>
.
.
.
Поскольку
<xsl:eval>
. Ниже показано, как это выглядит в таблице стилей kilometers.xsl
, где я передаю в функцию milesToKilometers
текущий узел <RADIUS>
для преобразования миль в километры. Поскольку IE 5.5 и младше не поддерживают правила по умолчанию (хотя версия 6.0, вышедшая одновременно с подписанием этой книги в печать, поддерживает их, и вам не нужно ничего менять), для этих браузеров я предоставил правило для корневого узла (листинг 5.16). Листинг 5.16. kilometers.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:script language="javascript">
<![CDATA[
function milesToKilometers(e) {
miles = parseInt(e.text);
return miles * 1.6;
}
]]>
</xsl:script>
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANETS">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><xsl:value-of select="NAME"/></TD>
<TD><xsl:value-of select="MASS"/></TD>
<TD><xsl:apply-templates match="RADIUS"/></TD>
<TD><xsl:value-of select="DAY"/></TD>
</TR>
</xsl:template>
<xsl:template match="RADIUS">
<xsl:eval>milesToKilometers(this)</xsl:eval>
</xsl:template>
</xsl:stylesheet>
Вот
Рис. 5.4. Применение функции расширения в Internet Explorer
Со временем производители будут поставлять все больше и больше функций расширения. Как можно определить, доступна ли заданная функция расширения? Для этого служит функция
function-available
. Применение функции function-available
Функция XSLT 1.0
function-available
служит для проверки доступности функции. В следующем примере я хочу воспользоваться функцией расширения starpowder:calculate
для математических вычислений, а если она недоступна, я отправляю в результирующий документ текст «Sorry, can't do math today.» (Извините, сегодня математические вычисления не работают.), хотя можно, конечно, прекратить обработку и вывести сообщение об ошибке при помощи элемента <xsl:message>
: <xsl:choose xmlns:starpowder="http://www.starpowder.com">
<xsl:when test="function-available('starpowder:calculate')">
<xsl:value-of select="starpowder:calculate('2+2')"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>Sorry, can't do math today.</xsl:text>
Поделиться:
Популярные книги
Хозяйка лавандовой долины
2. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Черный Маг Императора 8
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 26
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Последняя Арена 10
10. Последняя Арена
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Батя
1. Медведевы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ваше Сиятельство 2
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Герцог и я
1. Бриджертоны
Любовные романы:
исторические любовные романы
8.92
рейтинг книги
Газлайтер. Том 18
18. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 3
3. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Я тебя не отпущу
4. Оголенные чувства
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Любимая учительница
1. совершенная любовь
Любовные романы:
современные любовные романы
эро литература
8.73
рейтинг книги
Лорд Системы 3
3. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00