考虑以下XML示例:
<books category="cat1">
<book id="1" ... />
<book id="2" ... />
<book id="3" ... />
</books>
如果我使用XPath查询/books/book/parent::*/@category
我应该收到
仅限一行:
cat1
但是,如何修改XPath查询以返回
cat1
cat1
cat1
(意思是我想保留所有副本)。
答案 0 :(得分:3)
XPath中的“/”运算符会自动删除重复项。
在XPath 1.0中,您的要求存在根本性的困难:数据模型中唯一支持的复合值是节点集,而节点集(正在设置)不能包含重复项。所以没有包含重复节点的值,因此没有表达会产生这样的结果。
答案 1 :(得分:2)
在 XPath 2.0 中,您可以使用for
循环:
for $book in /books/book return $book/parent::*/@category