xsl-list
[Top] [All Lists]

[xsl] Processing a Sequence of String Tokens in XSLT 2

2007-06-06 12:08:28
I suspect this is an FAQ, and if so, feel free to point me to existing
discussion, but I'm curious as to what the most efficient/elegant way to
process a sequence of string tokens is.

In my specific case, I need to init-cap all the words in a string (I
don't need any sophistication like special case for conjunctions or
anything).

Here's the XSLT 2 function I came up with:

  <xsl:function
    name="func:normalizeTitleContent">
    <!-- Normalizes the case of titles based on the FASB-defined rules
for title case -->
    <xsl:param
    name="titleElem"/>
    <xsl:variable name="titleTokens"
select="tokenize(string($titleElem), ' ')"/>
    <xsl:variable name="resultString">
      <xsl:for-each select="$titleTokens">
        <xsl:sequence select="concat(upper-case(substring(., 1,1)),
substring(., 2))"/>
      </xsl:for-each>
    </xsl:variable>
    <xsl:sequence select="$resultString"/>
  </xsl:function>

Which seems reasonably compact and understandable but I suspect that I'm
not doing things as cleverly or as "correctly" as I could.

Is there a better way to have written this function?

Thanks,

Eliot
--
W. Eliot Kimber
Professional Services
Innodata Isogen
8500 N. Mopac, Suite 402
Austin, TX 78759
(214) 954-5198

ekimber(_at_)innodata-isogen(_dot_)com
www.innodata-isogen.com



--~------------------------------------------------------------------
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>