当需要以下要求时如何在 XSLT 中使用选择条件
<xsl:choose>
<xsl:when test="contains(@name,'top %d holdings' ) ">
<!--code-->
</xsl:when>
</xsl:choose>
它应该选择包含...的所有数据。
- 前5名持股
- 前 10 名持股
- 前30名持股
- 前 27 名持股
- 顶部 * 持股
当需要以下要求时如何在 XSLT 中使用选择条件
<xsl:choose>
<xsl:when test="contains(@name,'top %d holdings' ) ">
<!--code-->
</xsl:when>
</xsl:choose>
它应该选择包含...的所有数据。
您可以使用substring-before()和substring-after()来获取和 之间的文本top
,holdings
然后使用translate()函数删除数字和*
字符,然后验证结果是否为空字符串。
<xsl:choose>
<xsl:when
test="translate(
substring-before(substring-after(@name, 'top '), ' holdings' ),
'0123456789*',
'') = '' ">
<!--code-->
</xsl:when>
</xsl:choose>
如果您在此处使用 XSLT2.0,则可以使用match函数,该函数允许您通过正则表达式匹配文本
<xsl:when test="matches(@name, '.*top \d+ holdings.*')">
另一方面,如果您使用的是 XSLT 1.0,则match函数不可用。您可以在非常具体的情况下执行此操作的一种方法是提取出现在“top”之前的“holdings”之前的文本并检查它是一个数字:
<xsl:when test="string(number(substring-before(substring-after(@name, 'top '), ' holdings' ) )) != 'NaN'">