2012-05-02 163 views
1

我有以下XML:XPath查詢:爲什麼沒有結果?

<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.0 matches函數,但是我發現我僅限於XPath 1.0。因此我需要一個解決方法!

回答

6

你過早地結束了謂詞。試試這個:

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

避免翻譯所有屬性....

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