以下是一个XML示例:
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<price>39.95</price>
<title lang="eng">Learning XML</title>
</book>
</bookstore>
使用XPath,我想选择所有第一个子元素为标题元素,第二个子元素为价格元素的书籍。这将返回示例中的第一本书。
我尝试了以下表达式:
book[title[1] and price[2]]
但是这个表达式不匹配,因为它选择了所有至少有一个标题元素和至少有两个价格元素的书籍。我该如何更改此表达式以选择第一个子元素为标题元素,第二个子元素为价格元素的所有书籍?
//book[title/following-sibling::price]
没有检查title
是否是第一个子节点,因此它并没有回答这个问题!第二个表达式是正确的,但可能可以简化为//book[name(*[1]) = "title"][name(*[2]) = "price"]
。 - adamretter