[英]XPath to find an element whose attribute contains a text, case-insensitively?
[英]Selecting an element whose sibling contains an attribute XML
我試圖選擇屬性值大於1的標題值:
path="//book/price[@value >1]
我不確定如何僅選擇元素價格的屬性值大於1的標題。 我是XML初學者,並且正在從教程中進行一些練習。
我的重點是
XML:
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price value="1">49.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price value="2">29.95</price>
</book>
<book>
<title lang="en">super xml</title>
<price value="3">39.95</price>
</book>
</bookstore>
更新資料
第一個查詢是完美的,您能告訴我如何從嵌套元素中獲取它嗎?
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<possibleprice>
<price value="1">49.99</price>
</possibleprice>
</book>
<book>
<title lang="en">Learning XML</title>
<possibleprice>
<price value="2">29.95</price>
</possibleprice>
</book>
<book>
<title lang="en">super xml</title>
<possibleprice>
<price value="3">39.95</price>
</possibleprice>
</book>
</bookstore>
例如:
對於OP的第一個版本:
輸入:
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price value="1">49.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price value="2">29.95</price>
</book>
<book>
<title lang="en">super xml</title>
<price value="3">39.95</price>
</book>
</bookstore>
XPath:
//book/price[@value > 1]/preceding-sibling::title
結果:
<title lang="en">Learning XML</title>
<title lang="en">super xml</title>
對於OP的更新的第二個XML版本,例如:
XPath:
//book/possibleprice/price[@value > 1]/ancestor::book/title
與上述相同的結果。
要回答評論中的問題,是否有必要對第二個版本使用兩次同級兄弟:否。 preceding-sibling
以當前節點的preceding-sibling
為目標。 在這種情況下,當前節點是price ,沒有兄弟姐妹,但parent
可能是price 。 為了獲得上述給出一個不同的方式相同的結果,將有可能得到parent
的價格 ,然后將preceding-sibling
possibleprice的:
//book/possibleprice/price[@value > 1]/parent::possibleprice/preceding-sibling::title
結果相同。
如前所述,OP是XML的初學者,也許以下內容對說明XPath軸很有用: http : //www.xmlplease.com/axis
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.