English | Français | Deutsch | Magyar | 中文 | >> Polski << ZVON > Tutorials > XSLT Tutorial
>> Strona 50 << | Poprzedni | Następny | Zawartość | Indeks elementu

Funkcja substring-before() zwraca fragment łańcucha znaków danego w pierwszym argumencie, takiego że poprzedza on pierwsze wystąpienie łańcucha znaków danego w drugim argumencie. Działanie funkcji substring-after() jest analogiczne, lecz w tym przypadku wybierany jest fragment łańcucha znaków występujący po pierwszym wystąpieniu. Funkcja substring() zwraca fragment łańcucha znaków pierwszego argumentu, zaczynając od pozycji określonej w drugim argumencie i długości danej w trzecim. Jeśli trzeci argument nie jest podany, zwracany jest fragment łańcuch do końca łańcucha źródłowego. Znaki w łańcuchu numerowane są od 1. ( Arkusz stylów XSLT 1 ). Arkusz stylów XSLT 2 demonstruje przypadek, kiedy wartości argumentów wykraczają poza zakres łańcucha lub gdy nie są liczbami całkowitymi. Zwracany fragment łańcucha znaków zawiera te znaki, dla których pozycja znaków jest większa lub równa drugiemu argumentowi oraz gdy trzeci argument jest podany - pozycja ta musi być mniejsza niż suma drugiego i trzeciego argumentu.

Arkusz stylów XSLT 1

Źródło XML
<source>

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

</source>

Dane wyjściowe
<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>

Widok 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
Arkusz stylów 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>


Arkusz stylów XSLT 2

Źródło XML
<source>

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

</source>

Dane wyjściowe
<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>

Widok 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
Arkusz stylów 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>