Here is a 8 years old FXSL 1.x (an XSLT 1.0 libray written completely in XSLT 1.0) solution:
test-strSplit-to-Words10.xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
>
<xsl:import href="strSplitWordDel.xsl"/>
<!-- To be applied on: test-strSplit-to-Words10.xml -->
<xsl:output indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="vLower"
select="'abcdefgijklmnopqrstuvwxyz'"/>
<xsl:variable name="vUpper"
select="'ABCDEFGIJKLMNOPQRSTUVWXYZ'"/>
<xsl:template match="/">
<xsl:variable name="vwordNodes">
<xsl:call-template name="str-split-word-del">
<xsl:with-param name="pStr" select="/"/>
<xsl:with-param name="pDelimiters"
select="', .(	 '"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select="ext:node-set($vwordNodes)/*"/>
</xsl:template>
<xsl:template match="word">
<xsl:choose>
<xsl:when test="not(position() = last())">
<xsl:value-of
select="translate(substring(.,1,1),$vLower,$vUpper)"/>
<xsl:value-of select="substring(.,2)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="delim">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
When this transformation is applied on the following XML document (test-strSplit-to-Words10.xml):
<t>004.lightning crashes (live).mp3</t>
the result is:
004.Lightning Crashes (Live).mp3
When applied to this XML document (your provided sample):
dInEsh sAchdeV kApil Muk
the result is:
DInEsh SAchdeV KApil Muk
With just a little tweek, we get this code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
>
<xsl:import href="strSplitWordDel.xsl"/>
<!-- To be applied on: test-strSplit-to-Words10.xml -->
<xsl:output indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="vLower"
select="'abcdefgijklmnopqrstuvwxyz'"/>
<xsl:variable name="vUpper"
select="'ABCDEFGIJKLMNOPQRSTUVWXYZ'"/>
<xsl:template match="/">
<xsl:variable name="vwordNodes">
<xsl:call-template name="str-split-word-del">
<xsl:with-param name="pStr" select="/"/>
<xsl:with-param name="pDelimiters"
select="', .(	 '"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select="ext:node-set($vwordNodes)/*"/>
</xsl:template>
<xsl:template match="word">
<xsl:value-of
select="translate(substring(.,1,1),$vLower,$vUpper)"/>
<xsl:value-of select="translate(substring(.,2), $vUpper, $vLower)"/>
</xsl:template>
<xsl:template match="delim">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
which now produces the wanted result:
Dinesh Sachdev Kapil Muk
Explanation:
The str-split-word-del
template of FXSL can be used for tokenization with (possibly more than one) delimiters specified as a string parameter.