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

ЖАНРЫ

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

Шрифт:

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

</H1>

Mercury is 7 characters long.

<BR>

Venus is 5 characters long.

<BR>

Earth is 5 characters long.

<BR>

 </BODY>

</HTML>

Этот результирующий документ показан на рис. 8.2.

Рис. 8.2. Определение длины строк в XSLT

substring

Функция

substring
возвращает подстроку переданной ей строки. Функция применяется следующим образом:

string substring(source-string, start-position, number-of-characters?)

Функция принимает параметры

source-string
(исходная строка),
start-position
(начальная позиция) и необязательный параметр
number-of-characters
(количество символов). Функция возвращает подстроку исходной строки с начальной позиции и до указанного количества символов или до конца строки, если это количество не задано.

Функция

substring
— одна из трех функций, оперирующих с подстроками:
substring-before
, возвращающая строку перед найденной подстрокой, сама
substring
, возвращающая заданную подстроку, и
substring-after
, возвращающая строку после найденной подстроки. В следующем примере (листинг 8.9) задействованы все три функции: в этом случае я разбил название планеты Меркурий (Mercury) на три подстроки — «Mer», «c» и «ury» — и затем объединил их снова. Вот как это можно сделать при помощи трех рассматриваемых функций (дополнительная информация о
substring-before
и
substring-after
приведена в следующих двух разделах).

Листинг 8.9. Применение функций substring-before, substring и substring-after

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

Planetary Information

</TITLE>

</HEAD>

<BODY>

<H1>

Planetary Information

</H1>

<xsl:apply-templates/>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:if test="NAME='Mercury'">

The first planet is

<xsl:value-of select="concat(substring-before(NAME, 'с'),

substring(NAME, 4, 1), substring-after(NAME, 'c'))"/>.

<BR/>

</xsl:if>

 </xsl:template>

 <xsl:template match="*">

 </xsl:template>

</xsl:stylesheet>

Вот

результирующий документ, созданный этим преобразованием:

<HTML>

 <HEAD>

<TITLE>

Planetary Information

</TITLE>

 </HEAD>

 <BODY>

<H1>

Planetary Information

</H1>

The first planet is Mercury.

<BR>

 </BODY>

</HTML>

substring-after

Функция

substring-after
возвращает подстроку, которая следует за найденной строкой. В эту функцию передается строка, подстрока, которую нужно найти внутри строки, — и функция возвращает подстроку, расположенную после совпадающей части строки, если она была найдена; иначе функция возвращает пустую строку. Функция применяется следующим образом:

string substring-after(string, string-to-match)

substring-before

В функцию

substring-before
передается строка, подстрока, которую нужно найти внутри строки, и функция возвращает подстроку, расположенную перед совпадающей частью строки, если она была найдена; иначе функция возвращает пустую строку. Функция применяется следующим образом:

string substring-before(string, string-to-match)

В разделе

substring
приведен пример применения функций
substring-before
,
substring
и
substring-after
.

Поделиться с друзьями: