6

値の一部に一致するノードを見つける方法はありますか。

私が以下を持っている場合:

<competition id="100" name="Barclays Premier League"/>
<competition id="101" name="CocaCola Championship" />
<competition id="102" name="CocaCola League 1" />

「Premier League」または「Prem」という文字列が与えられた場合、どのように正しいノードを照合して ID 100 を取得するのでしょうか。

for-each と contains を使用してこれを管理しましたが、これは非常に非効率的であり、要件を満たすのに十分な速度ではありません。

4

3 に答える 3

14

文字列の処理は XSLT が得意とするところではありませんが、いくつかのオプションがあります。

この場合、次のことを試してみてください。

//competition[contains(@name,'Prem')]

その他のオプションと詳細については、こちらを参照してください

于 2008-12-01T11:33:19.187 に答える
6

使用する:

    //competition[contains(@name, 'Prem')]/@id

その他の状況では、starts-with()またはend-with() (XPath 2.0 のみ)などの関数が役立ちます。

于 2008-12-01T13:31:44.143 に答える
1

正規表現を使用する「一致」機能もありますが、これは XSL 2.0 でのみ使用できます。

于 2008-12-01T12:38:32.627 に答える