substring-before() returns the substring of the first argument that precedes : substring before « XSLT stylesheet « XML Tutorial






File: Data.xml

<?xml version="1.0" encoding="utf-8"?>
<data>
    <text>Welcome to XSL world.</text>
    <string>XSL</string>
    <start>4</start>
    <end>10</end>
</data>
File: Transform.xslt

<?xml version="1.0" encoding="utf-8"?>
<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>

Output:

<?xml version="1.0" encoding="UTF-8"?><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>








5.31.substring before
5.31.1.substring-before() returns the substring of the first argument that precedes