1

当需要以下要求时如何在 XSLT 中使用选择条件

<xsl:choose>
<xsl:when test="contains(@name,'top %d holdings' ) ">
<!--code-->
</xsl:when>
</xsl:choose>

它应该选择包含...的所有数据。

  1. 前5名持股
  2. 前 10 名持股
  3. 前30名持股
  4. 前 27 名持股
  5. 顶部 * 持股
4

2 回答 2

1

您可以使用substring-before()substring-after()来获取和 之间的文本topholdings然后使用translate()函数删除数字和*字符,然后验证结果是否为空字符串。

<xsl:choose>
  <xsl:when 
       test="translate(
               substring-before(substring-after(@name, 'top '), ' holdings' ),
               '0123456789*', 
               '') = '' ">
        <!--code-->
    </xsl:when>
</xsl:choose>
于 2013-05-21T00:56:27.603 回答
1

如果您在此处使用 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'">
于 2013-05-20T21:56:08.267 回答