2008-12-01 78 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中只)可以是有用的。