[英]what is the difference between these in xpath?
我是xpath的新手,現在可以讓我詳細介紹一下xpath中的/bookstore/*
和/bookstore
什么區別嗎?
可以說這是示例輸入
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
<bookstore>
<book>
<title lang="en">Harry Potter1</title>
<price>29.999</price>
</book>
<book>
<title lang="en">Learning XML1</title>
<price>39.955</price>
</book>
</bookstore>
兩種情況下將輸出什么? 提前致謝。
假設以下簡單的輸入文檔:
<bookstore>
<book/>
<book/>
</bookstore>
現在,表達
/bookstore
手段
選擇一個名為
bookstore
的元素,但前提是它是文檔的最外面的元素
格式良好的XML 1中只能有一個最外面的元素,因此上面的路徑表達式最多只能選擇一個元素節點。
/bookstore/*
手段
選擇一個名為
bookstore
的元素,但前提是它是文檔的最外面的元素。 然后,選擇其所有直接子元素,無論其名稱如何。
1正如Michael Kay指出的,除了您正在以編程方式構造XML樹。 然后,可能有多個最外面的元素。
那么如果/ bookstore / *輸出,則不包含
<bookstore>
和</bookstore>
我可以看到兩種閱讀此問題的方法。
為什么同時使用<element>
和</element>
?
將<bookstore>
和</bookstore>
視為一個元素 。 它們是該元素的開始和結束標簽 。 將輸入文檔讀入內存后,將其存儲在沒有打開和關閉標簽的樹狀結構(例如DOM)中。 而正是這種表示形式可以用來評估XPath表達式。
但是,如果輸出評估XPath表達式的結果,則結果樹將再次序列化 ,並且重新出現標簽-這可能會造成混淆。
是否選擇了路徑中提到的所有元素?
不,像這樣的表達
/bookstore/book
僅選擇book
元素節點。 僅選擇最后一個軸心步驟之后最右邊的項目(如/
和parent::
:) 。
表達式/bookstore/*
將選擇子節點, /bookstore
將選擇節點本身。
例如, /bookstore/*
將選擇/bookstore
下的所有子元素 ,因此您可能最終得到了一個元素集合。 請注意,如果這是一個更復雜的表達式(如/bookstore/book/*
並且存在多個/bookstore/book
元素,則將選擇所有匹配節點的所有子級。
表達式/bookstore
將僅選擇元素/bookstore
。 與上述類似,如果沿着/bookstore/book
類的路徑進行選擇,可能會導致元素集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.