以下の要件が必要な場合に XSLT で choose 条件を使用する方法
<xsl:choose>
<xsl:when test="contains(@name,'top %d holdings' ) ">
<!--code-->
</xsl:when>
</xsl:choose>
... を含むすべてのデータを選択する必要があります。
- トップ5保有
- トップ10保有
- トップ30保有
- トップ27保有
- トップ・所蔵
以下の要件が必要な場合に XSLT で choose 条件を使用する方法
<xsl:choose>
<xsl:when test="contains(@name,'top %d holdings' ) ">
<!--code-->
</xsl:when>
</xsl:choose>
... を含むすべてのデータを選択する必要があります。
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>
ここで 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'">