如何在 xslt 中拆分字符串?

How can I split a string in xslt?

我想在双引号处拆分一个字符串。输入字符串如下,

<S>Test Example "{test1}" is "{equal}" "{test2}"</S>

我使用的 xslt 代码是,

<xsl:template name="SplitString">
<xsl:param name="text" select="''" />

<xsl:variable name="tag"  select="substring-before(substring-after($text, '&quot;'), '&quot;')" />
<xsl:variable name="Remainder" select="substring-after($text, '&quot;')" />

<xsl:choose>
<xsl:when test="$tag != ''">

<xsl:element name = "NP">
<xsl:value-of select = "$tag"/>
</xsl:element>

<!--recursive loop -->
<xsl:call-template name="SplitString">
<xsl:with-param name="text" select="$Remainder" />
</xsl:call-template>

</xsl:when>
</xsl:choose>
</xsl:template>

我得到的输出如下,

<NP>{test}</NP>
<NP>is</NP>
<NP>{equal}</NP>
<NP> </NP>
<NP>{test2}</NP>

如何避免创建空元素? 所需的输出将是,

<NP>{test}</NP>
<NP>is</NP>
<NP>{equal}</NP>
<NP>{test2}</NP>

只需添加一个条件:

<xsl:if test="normalize-space($tag)">
  <xsl:element name = "NP">
    <xsl:value-of select = "$tag"/>
  </xsl:element>
</xsl:if>