2008-12-01 91 views
6

有沒有辦法找到一部分值匹配的節點。XSLT,XPath和InStr

如果我有以下幾點:

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

鑑於字符串「英超」,甚至「炳」,我將如何匹配正確的節點並獲得ID 100

我設法這個使用for-each幷包含,但這是非常低效的,並且不能滿足我們的要求。

回答

14

字符串處理不是什麼XSLT是驚人的,但有幾個選項。

在這種情況下,你可以嘗試:

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

看到here了更多的選擇和細節

+0

如果你想只是id,那麼//競爭[包含(@name,「Prem」)]/@ id – 2008-12-01 11:35:47

1

還有一個「匹配」功能,它使用正則表達式,但這僅適用於XSL 2.0。

6

使用:

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

在其他情況下,例如作爲:starts-with()ends-with()(XPath 2.0中只)可以是有用的。