ここでtokenizeを使用することは可能です。特に、単一スペース以外の他の単語区切り文字を処理したい場合は、tokenizeを使用できます(tokenizeの2番目の引数では、正規表現を指定できます。
とにかく、あなたの場合、tokenizeの結果を変数に割り当ててから、最初の2つの単語に対して異なるアクションを実行する価値があるかもしれません。次のXSLTを試してください
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/*">
<h1>
<xsl:variable name="words" select="tokenize(title, ' ')"/>
<span class="className">
<xsl:value-of select="concat($words[1], ' ', $words[2])"/>
</span>
<xsl:for-each select="$words[position() > 2]">
<xsl:value-of select="concat(' ', .)"/>
</xsl:for-each>
</h1>
</xsl:template>
</xsl:stylesheet>
例としてこのXMLに適用した場合
<data>
<title>This is a test</title>
</data>
以下が出力されます
<h1>
<span class="className">This is</span> a test
</h1>