1

我有以下 XML:

<pets>
    <dog name="Rupert" color="grey"/>
    <dog name="Ralph" color="brown"/>
    <cat name="Marvin the Cat" color="white"/>
    <cat name="Garfield the Cat" color="orange"/>
    <cat name="Cat" color="grey"/>
    <cat name="Fluffy" color="black"/>
</pets>

我有以下 XPath 查询:

//cat[@*[translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')] = 'marvin the cat']

但它不返回任何结果。我正在尝试将 的值转换@*为小写。

我正在寻找的是一个“匹配整个单词”同时不区分大小写的结果。如何更改此查询以达到我想要的结果?

注意:我本来想使用 XPath 2.0matches功能,但我发现我只能使用 XPath 1.0。因此我需要一个解决方法!

4

2 回答 2

6

您过早地结束了谓词。试试这个:

//cat[@*[translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'marvin the cat']]
于 2012-05-02T21:52:43.127 回答
1

避免翻译所有属性....

//cat[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'marvin the cat']
于 2012-05-02T21:55:32.770 回答