簡體   English   中英

選擇一個其兄弟姐妹包含屬性XML的元素

[英]Selecting an element whose sibling contains an attribute XML

我試圖選擇屬性值大於1的標題值:

path="//book/price[@value >1]

我不確定如何僅選擇元素價格的屬性值大於1的標題。 我是XML初學者,並且正在從教程中進行一些練習。

我的重點是

  1. 學習XML
  2. 超級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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM