1

以下の要件が必要な場合に XSLT で choose 条件を使用する方法

<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()を使用してtopとの間のテキストを取得し、 translate()holdings関数を使用して数字と文字を削除し、結果が空の文字列であることを確認します。*

<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 を使用していた場合は、正規表現を使用してテキストを照合できるmatches関数を使用できます。

<xsl:when test="matches(@name, '.*top \d+ holdings.*')">

一方、XSLT 1.0 を使用していた場合、matches関数は使用できません。非常に特殊なケースでそれを行う1つの方法は、「トップ」の前にある「所蔵」の前のテキストを抽出し、それが数字であることを確認することです:

<xsl:when test="string(number(substring-before(substring-after(@name, 'top '), ' holdings' ) )) != 'NaN'">
于 2013-05-20T21:56:08.267 に答える