2012-05-01 51 views
2

所以我下面從另一個問題,我會在這裏複製一個例子:XPath根據childs的子值返回多個值來選擇元素?

「嘗試基於它的一個價值選擇的元素的孩子的孩子」

./book[author/name = 'John'] 

「旺旺所有書籍,其中作者的名字=「約翰」

xml文檔」

<list> 
    <book> 
     <author> 
     <name>John</name> 
     <number>4324234</number> 
     </author> 
     <title>New Book</title> 
     <isbn>dsdaassda</isbn> 
    </book> 
    <book>...</book> 
    <book>...</book> 
</list> 

現在,無論出於何種原因,當我使用上面的XPath,它d OES選擇書籍節點,但它選擇所有這些節點,而不僅僅是author = John。是否有理由爲什麼xpath會忽略這一點,並拉動每個書籍節點?

我希望這是有道理的。謝謝!

+0

你確定選擇了所有'book'節點?您的xpath看起來不錯 –

+0

@AlehDouhi無可否認,我正在使用xpath來處理將Ruby映射到Ruby對象的Ruby gem。但是,文件很渺茫,似乎並不普遍。我希望XML示例丟失了一些東西,但我認爲你是對的。 XPath應該可以工作,但在我的Ruby應用程序的上下文中,它只是抓住一切。嘆。 – librarion

回答

2

下面應該工作:

/list/book[author/name/. = 'John'] 

/list/book[author/name/text() = 'John']