Re: [xsl] Select first letter of first word [xsltproc 1.0]

Subject: Re: [xsl] Select first letter of first word [xsltproc 1.0]
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Sat, 30 Oct 2010 12:44:26 +0200
pankaj.c@xxxxxxxxxxxxxxxxxx wrote:
Input:
=====
<para>Abc efg ijk <i>pie</i>amf. The quick brown <b>fox</b> jumps over a <i>lazy little dog</i></para>

Required
======
<para mypara="type_first"><dummy id="first_letter">A</dummy>bc efg ijk <i>pie</i>amf. The quick brown <b>fox</b> jumps over a <i>lazy little dog</i><para>

<xsl:template match="para"> <para mypara="type_first"> <xsl:apply-templates/> </para> </xsl:template>

  <xsl:template match="para//text()[1]">
    <dummy id="first_letter">
      <xsl:value-of select="substring(., 1, 1)"/>
    </dummy>
    <xsl:value-of select="substring(., 2)"/>
  </xsl:template>

should do I think. I am not sure whether you want to perform that "dummy" wrapper for any first descendant text node, if you only want it for the first text child node then use

  <xsl:template match="para">
    <para mypara="type_first">
      <xsl:apply-templates/>
    </para>
  </xsl:template>

  <xsl:template match="para/text()[1]">
    <dummy id="first_letter">
      <xsl:value-of select="substring(., 1, 1)"/>
    </dummy>
    <xsl:value-of select="substring(., 2)"/>
  </xsl:template>


--


	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread