可以在这里使用tokenize,特别是如果您想处理除单个空格之外的其他单词分隔符(tokenize的第二个参数允许指定正则表达式。
无论如何,在您的情况下,可能值得将 tokenize 的结果分配给一个变量,然后对前两个单词采取不同的操作。尝试以下 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>