Subject: [xsl] Processing a Sequence of String Tokens in XSLT 2|
From: "Eliot Kimber" <ekimber@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 06 Jun 2007 14:08:55 -0500
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).
<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.
Eliot -- W. Eliot Kimber Professional Services Innodata Isogen 8500 N. Mopac, Suite 402 Austin, TX 78759 (214) 954-5198