xsl-list
[Top] [All Lists]

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

2010-10-30 05:44:46
pankaj(_dot_)c(_at_)thomsondigital(_dot_)com 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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>