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
</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 приведена в следующих двух разделах).
<?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>
