如何在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>

相关内容

  • 没有找到相关文章

最新更新