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