Главная -> XML&... -> XSLT в примерах 
>> Страница 50 << | Назад | Вперед | Содержание | Указатель

Функции substring-before() и substring-after() находят в первой строке вторую. Первая из них возвращает подстроку, которая ей предшествует, а вторая — подстроку, котороя за ней следует. Функция substring() возвращает подстроку переданного ей строкового аргумента, начинающуюся с позиции, определенной вторым аргументом, и длиной, определенной в третьем аргументе. Если третий аргумент опущен, то она возвращает подстрока продолжается до конца строки. Позицией первого символа является 1 (преобразование 1). Преобразование 2 демонстрирует ситуацию, когда некоторые аргументы выходят за допустимый диапазон или не являются целыми. Возращаемая строка содержит те символы, для которых позиция больше или равна, чем значение второго аргумента и, если третий аргумент определен, меньше, чем сумма значений второго и третьего аргументов.

Преобразование 1

Исходный XML
<source>

<text>Welcome to XSL world.</text>
<string>XSL</string>
<start>4</start>
<end>10</end>

</source>

Результат
<DIV>
  <B>Text: </B>Welcome to XSL world.</DIV>
<B>Text before XSL: </B>Welcome to <DIV>
  <B>Text after XSL: </B> world.</DIV>
<DIV>
  <B>Text from position 4: </B>come to XSL world.</DIV>
<DIV>
  <B>Text from position 4 of length  10: </B>come to XS</DIV>

Представление HTML
Text: Welcome to XSL world.
Text before XSL: Welcome to
Text after XSL: world.
Text from position 4: come to XSL world.
Text from position 4 of length 10: come to XS
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <DIV>
          <B>
               <xsl:text>Text: </xsl:text>
          </B>
          <xsl:value-of select="//text"/>
     </DIV>
     <B>
          <xsl:text>Text before </xsl:text>
          <xsl:value-of select="//string"/>
          <xsl:text>: </xsl:text>
     </B>
     <xsl:value-of select="substring-before(//text,//string)"/>
     <DIV>
          <B>
               <xsl:text>Text after </xsl:text>
               <xsl:value-of select="//string"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring-after(//text,//string)"/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start)"/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start"/>
               <xsl:text> of length </xsl:text>
               <xsl:value-of select="//end"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start,//end)"/>
     </DIV>
</xsl:template>


</xsl:stylesheet>



Преобразование 2

Исходный XML
<source>

<text>Welcome to XSL world.</text>
<string>XSL</string>
<start>4</start>
<end>10</end>

</source>

Результат
<DIV>
  <B>Text from position -4: </B>Welcome to XSL world.</DIV>
<DIV>
  <B>Text from position 4.45: </B>come to XSL world.</DIV>
<DIV>
  <B>Text from position -8 of length  15: </B>Welcom</DIV>
<DIV>
  <B>Text from position 4.4 of length  1.7: </B>co</DIV>
<DIV>
  <B>Text from position 4.4 of length  1.2: </B>c</DIV>

Представление HTML
Text from position -4: Welcome to XSL world.
Text from position 4.45: come to XSL world.
Text from position -8 of length 15: Welcom
Text from position 4.4 of length 1.7: co
Text from position 4.4 of length 1.2: c
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start * -1"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start * -1)"/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start + 0.45"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start + 0.45)"/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start *-2"/>
               <xsl:text> of length </xsl:text>
               <xsl:value-of select="//end *1.5"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start * -2,//end * 1.5)"/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start + 0.4"/>
               <xsl:text> of length </xsl:text>
               <xsl:value-of select="//end div 10 + 0.7"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start + 0.4,//end div 10 + 0.7)"/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>Text from position </xsl:text>
               <xsl:value-of select="//start + 0.4"/>
               <xsl:text> of length </xsl:text>
               <xsl:value-of select="//end div 10 + 0.2"/>
               <xsl:text>: </xsl:text>
          </B>
          <xsl:value-of select="substring(//text,//start + 0.4,//end div 10 + 0.2)"/>
     </DIV>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002