Книга: XSLT

substring()

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>

Оглавление книги


Генерация: 0.598. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз