title: select the string before ":" or a function like first() in xslt
body: <p>i wish to select the string before ":" or a function like first() in xslt</p>
  
  <p>my input is</p>
  
  <pre><code>&lt;E T="B"&gt;1.1.1-CES: Describe the normal anatomy.&lt;/E&gt;
  </code></pre>
  
  <p>expected output is</p>
  
  <pre><code>&lt;span class="emph_B"&gt;
    &lt;span class="emph_Bcol"&gt;1.1.1-CES:&lt;/span&gt;
    Describe  the normal  anatomy.
  &lt;/span&gt;
  </code></pre>
  
  <p>i am having trouble selecting the first string i.e <strong>(1.1.1-CES before :)</strong></p>
  
  <p>presently on doing the following:</p>
  
  <pre><code>        &lt;xsl:template match="E"&gt;
      &lt;span&gt;
          &lt;xsl:attribute name="class"&gt;emph_I&lt;/xsl:attribute&gt;
          &lt;xsl:if test="contains(.,':')"&gt;
          &lt;xsl:variable name="token" select="tokenize(.,': ')[last()]"/&gt;
          &lt;xsl:value-of select="$token"/&gt;
          &lt;xsl:variable name="seprate"  
          select="translate(current(),$token,'')"/&gt;    
          &lt;xsl:value-of select="$seprate"/&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:apply-templates /&gt;
          &lt;/span&gt;
          &lt;/xsl:template&gt;
  </code></pre>
  
  <p>i get the output as</p>
  
  <pre><code>           &lt;div class="P"&gt;&lt;img class="rarr" src="images/FFU1.gif"&gt;&lt;/img&gt;&lt;span class="emph_I"&gt;Describe  the
                   normal c anatomy.111-CES:1.1.1-CES: Describe  the
                   normal anatomy.&lt;/span&gt;&lt;/div&gt;
  </code></pre>
  
  <p>is there a function like first() or before() like last() in xslt?</p>
  
  <p>code:
                   </p>
  
  <p>
      
      
      </p>
  
  <pre><code>&lt;xsl:template match="/"&gt;
      &lt;xsl:apply-templates select="//CHAPTER" /&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="CHAPTER"&gt;
      &lt;xsl:result-document href="{$pDest}chapter{position()}.xhtml"&gt;
          &lt;xsl:text disable-output-escaping='yes'&gt;&amp;lt;!DOCTYPE HTML&gt;&lt;/xsl:text&gt;
          &lt;html&gt;
              &lt;head&gt;
                  &lt;title&gt;
                      &lt;xsl:value-of select="CHSO/THD/HD" /&gt;
                  &lt;/title&gt;
                  &lt;link rel="stylesheet" type="text/css" href="styles/stylesheet.css" /&gt;
              &lt;/head&gt;
              &lt;body&gt;
                  &lt;div&gt;
                      &lt;xsl:attribute name="class"&gt;CHAPTER&lt;/xsl:attribute&gt;
                      &lt;div&gt;
                          &lt;xsl:attribute name="class"&gt;CHSO&lt;/xsl:attribute&gt;
                          &lt;div&gt;
                              &lt;xsl:attribute name="class"&gt;THD box-style&lt;/xsl:attribute&gt;
                              &lt;div&gt;
                                  &lt;xsl:attribute name="class"&gt;HNUM&lt;/xsl:attribute&gt;
                                  &lt;xsl:attribute name="style"&gt;text-align:center;color:white;&lt;/xsl:attribute&gt;
                                  &lt;xsl:value-of select="CHSO/THD/HNUM" /&gt;
                              &lt;/div&gt;
                              &lt;div&gt;
                                  &lt;xsl:attribute name="class"&gt;HD&lt;/xsl:attribute&gt;
                                  &lt;xsl:attribute name="style"&gt;text-align:center;color:white;&lt;/xsl:attribute&gt;
                                  &lt;xsl:value-of select="CHSO/THD/HD" /&gt;
                              &lt;/div&gt;
                          &lt;/div&gt;
                      &lt;/div&gt;
                      &lt;xsl:apply-templates /&gt;
                  &lt;/div&gt;
              &lt;/body&gt;
          &lt;/html&gt;
      &lt;/xsl:result-document&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="TBD"&gt;
      &lt;div&gt;
          &lt;xsl:attribute name="class"&gt;TBD&lt;/xsl:attribute&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/div&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="TLV1"&gt;
      &lt;div&gt;
          &lt;xsl:attribute name="class"&gt;TLV1&lt;/xsl:attribute&gt;
          &lt;xsl:variable name="chapVal" select="tokenize(../../@CHAN,'-')[last()]" /&gt;
          &lt;xsl:variable name="myId"
              select="translate($chapVal,translate($chapVal, '1234567890', ''),'')" /&gt;
          &lt;xsl:variable name="tlvId" select="translate(./@ID, '.', '-')" /&gt;
          &lt;h2&gt;
              &lt;xsl:attribute name="class"&gt;HD&lt;/xsl:attribute&gt;
              &lt;xsl:attribute name="id"&gt;ch&lt;xsl:value-of
                  select="$myId" /&gt;-&lt;xsl:value-of select="$tlvId" /&gt;
              &lt;/xsl:attribute&gt;
              &lt;xsl:attribute name="style"&gt;margin-bottom:0.5em;&lt;/xsl:attribute&gt;
              &lt;xsl:value-of select="HD" /&gt;
          &lt;/h2&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/div&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="P"&gt;
      &lt;div&gt;
          &lt;xsl:attribute name="class"&gt;P&lt;/xsl:attribute&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/div&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="FILE"&gt;
      &lt;img&gt;
          &lt;xsl:attribute name="class"&gt;rarr&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="src"&gt;images/&lt;xsl:value-of
              select="@NAME" /&gt;
          &lt;/xsl:attribute&gt;
      &lt;/img&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="E"&gt;
      &lt;span&gt;
          &lt;xsl:attribute name="class"&gt;emph_I&lt;/xsl:attribute&gt;
          &lt;xsl:if test="contains(.,':')"&gt;
          &lt;xsl:variable name="token" select="tokenize(.,': ')[last()]"/&gt;
          &lt;xsl:value-of select="$token"/&gt;
              &lt;xsl:variable name="seprate" select="translate(current(),$token,'')"/&gt;
              &lt;xsl:value-of select="$seprate"/&gt;
          &lt;/xsl:if&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/span&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="LK"&gt;
      &lt;a&gt;
          &lt;xsl:attribute name="class"&gt;LK&lt;/xsl:attribute&gt;
          &lt;xsl:variable name="chapVal"
              select="tokenize(../../../../@CHAN,'-')[last()]" /&gt;
          &lt;xsl:variable name="myId"
              select="translate($chapVal,translate($chapVal, '1234567890', ''),'')" /&gt;
          &lt;xsl:attribute name="href"&gt;chapter&lt;xsl:value-of
              select="$myId" /&gt;.xhtml#&lt;xsl:value-of select="@IDREF" /&gt;
          &lt;/xsl:attribute&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/a&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="SIDEBAR/TLV1"&gt;
      &lt;div&gt;
          &lt;xsl:attribute name="class"&gt;SIDEBAR &lt;xsl:value-of
              select="@CLASSF" /&gt;&lt;/xsl:attribute&gt;
          &lt;div&gt;
              &lt;xsl:attribute name="class"&gt;TLV1&lt;/xsl:attribute&gt;
              &lt;div&gt;
                  &lt;xsl:attribute name="class"&gt;HD bg-col&lt;/xsl:attribute&gt;
                  &lt;span&gt;
                      &lt;xsl:attribute name="class"&gt;sb-head&lt;/xsl:attribute&gt;
                      &lt;span&gt;
                          &lt;xsl:attribute name="class"&gt;col-auto&lt;/xsl:attribute&gt;
                          &lt;xsl:value-of select="HD"&gt;&lt;/xsl:value-of&gt;
                      &lt;/span&gt;
                  &lt;/span&gt;
              &lt;/div&gt;
              &lt;xsl:if test="P"&gt;
                  &lt;div&gt;
                      &lt;xsl:attribute name="class"&gt;sb-pad&lt;/xsl:attribute&gt;
                      &lt;xsl:for-each select="P"&gt;
                          &lt;div&gt;
                              &lt;xsl:attribute name="class"&gt;P&lt;/xsl:attribute&gt;
                              &lt;xsl:apply-templates select="ancestor-or-self::text()" /&gt;
                              &lt;xsl:if test="E"&gt;
                                  &lt;xsl:for-each select="E"&gt;
                                      &lt;span&gt;
                                          &lt;xsl:attribute name="class"&gt;emph_Bcol&lt;/xsl:attribute&gt;
                                          &lt;xsl:apply-templates select="node()" /&gt;
                                      &lt;/span&gt;
                                      &lt;xsl:apply-templates select="following-sibling::node()[1]" /&gt;
                                  &lt;/xsl:for-each&gt;
                              &lt;/xsl:if&gt;
                          &lt;/div&gt;
                      &lt;/xsl:for-each&gt;
                  &lt;/div&gt;
              &lt;/xsl:if&gt;
          &lt;/div&gt;
      &lt;/div&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="FG"&gt;
      &lt;div&gt;
          &lt;xsl:attribute name="class"&gt;FG&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="id"&gt;&lt;xsl:value-of select="@ID"&gt;&lt;/xsl:value-of&gt;
              &lt;/xsl:attribute&gt;
          &lt;xsl:for-each select="P"&gt;
              &lt;xsl:if test="FILE"&gt;
                  &lt;img&gt;
                      &lt;xsl:attribute name="class"&gt;center&lt;/xsl:attribute&gt;
                      &lt;xsl:attribute name="src"&gt;images/&lt;xsl:value-of
                          select="FILE/@NAME" /&gt;
                          &lt;/xsl:attribute&gt;
                  &lt;/img&gt;
              &lt;/xsl:if&gt;
              &lt;xsl:if test="E"&gt;
                  &lt;div&gt;
                      &lt;xsl:attribute name="class"&gt;caption&lt;/xsl:attribute&gt;
                      &lt;xsl:for-each select="E"&gt;
                          &lt;span&gt;
                              &lt;xsl:attribute name="class"&gt;emph_Bcol&lt;/xsl:attribute&gt;
                              &lt;xsl:apply-templates /&gt;
                          &lt;/span&gt;
                          &lt;xsl:apply-templates select="following-sibling::node()[1]" /&gt;
                      &lt;/xsl:for-each&gt;
                  &lt;/div&gt;
              &lt;/xsl:if&gt;
          &lt;/xsl:for-each&gt;
      &lt;/div&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="TB"&gt;
      &lt;div&gt;
          &lt;xsl:attribute name="class"&gt;TB&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="id"&gt;&lt;xsl:value-of select="@ID" /&gt; &lt;/xsl:attribute&gt;
          &lt;table&gt;
              &lt;xsl:attribute name="class"&gt;FIGURE&lt;/xsl:attribute&gt;
              &lt;xsl:attribute name="style"&gt;border-collapse:collapse;margin-bottom:1em;&lt;/xsl:attribute&gt;
              &lt;tr style="background-color:#0768a9;"&gt;
                  &lt;td style="vertical-align:top;" class="FIGURE-COL2" colspan="2"&gt;
                      &lt;span class="emph_B"&gt;
                          &lt;xsl:value-of select="TI/E" /&gt;
                      &lt;/span&gt;
                      &lt;span class="white"&gt;
                          &lt;xsl:value-of select="TI/node()[2]" /&gt;
                      &lt;/span&gt;
                  &lt;/td&gt;
              &lt;/tr&gt;
              &lt;xsl:apply-templates /&gt;
          &lt;/table&gt;
      &lt;/div&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="TI"&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="tr"&gt;
      &lt;tr&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/tr&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="th"&gt;
      &lt;th&gt;
          &lt;xsl:attribute name="style"&gt;vertical-align:bottom;text-align:left;&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="rowspan"&gt;1&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="colspan"&gt;1&lt;/xsl:attribute&gt;
          &lt;xsl:choose&gt;
              &lt;xsl:when test="contains(., '&amp;#160;')"&gt;
                  &lt;xsl:value-of select="translate(., '&amp;#160;', '')" /&gt;
              &lt;/xsl:when&gt;
              &lt;xsl:otherwise&gt;
                  &lt;xsl:apply-templates /&gt;
              &lt;/xsl:otherwise&gt;
          &lt;/xsl:choose&gt;
      &lt;/th&gt;
  &lt;/xsl:template&gt;
  
  &lt;xsl:template match="td"&gt;
      &lt;td&gt;
          &lt;xsl:attribute name="style"&gt;vertical-align:top;&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="rowspan"&gt;1&lt;/xsl:attribute&gt;
          &lt;xsl:attribute name="colspan"&gt;1&lt;/xsl:attribute&gt;
          &lt;xsl:choose&gt;
              &lt;xsl:when test="contains(., '&amp;#160;')"&gt;
                  &lt;xsl:value-of select="translate(., '&amp;#160;', '')" /&gt;
              &lt;/xsl:when&gt;
              &lt;xsl:otherwise&gt;
                  &lt;xsl:apply-templates select="node()[1]" /&gt;
              &lt;/xsl:otherwise&gt;
          &lt;/xsl:choose&gt;
      &lt;/td&gt;
  &lt;/xsl:template&gt;
  </code></pre>
  
  <p></p>