Nic Miloslav     Example 47    KEYWORDS      EXAMPLES      AUTHORS     

The substring-before function returns the substring of the first argument string that precedes and the substring-after function that follows the first occurrence of the second argument string in the first argument string. The substring function returns the substring of the first argument starting at the position specified in the second argument with length specified in the third argument. If the third argument is not specified, it returns the substring starting at the position specified in the second argument and continuing to the end of the string.Counting starts with 1. (Stylesheet 1). Stylesheet 2 demonstrates a situation where some arguments are out of range or they are not integrals. The returned substring contains those characters for which the position of the character is greater than or equal to the second argument and, if the third argument is specified, less than the sum of the second and third arguments.


     XML     HOME     XSL 1     XSL 2      
<xslTutorial >
<text>Welcome to XSL world.</text>
<string>XSL</string>
<start>4</start>
<end>10</end>
</xslTutorial>

     XSL 1     HOME     XML     HTML 1     OUTPUT 1     
<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>

     HTML 1     HOME     XML     XSL 1     OUTPUT 1     
<HTML>
<HEAD> </HEAD>
<BODY>
<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> </BODY> </HTML>

     OUTPUT 1     HOME     XML     XSL 1     HTML 1     
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

     XSL 2     HOME     XML     HTML 2     OUTPUT 2     
<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>

     HTML 2     HOME     XML     XSL 2     OUTPUT 2     
<HTML>
<HEAD> </HEAD>
<BODY>
<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> </BODY> </HTML>

     OUTPUT 2     HOME     XML     XSL 2     HTML 2     
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