从以下xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="de">Vom Winde verweht</title>
<price>39.95</price>
</book>
</bookstore>
我想要所有有lang = "eng"及其祖先节点的书籍,即以下输出:
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
</bookstore>
如何使用XPath获取此信息?
EDIT: 如果我的描述和示例输出由于术语不佳而不匹配,则样本描述了我想要的内容 .
3 回答
这应该返回所有内部英语的书籍:
这本书的祖先是包含一切的
bookstore
. 你确定你也想要它吗?XPath is a query language over XML documents .
因此,作为评估XPath表达式的结果,不可能改变现有文档或创建新文档/节点 .
您要求的是从当前文档创建一个新的XML文档 - 这是一个转换,不能单独在XPath中完成 . XSLT是一种最适合执行XML文档转换的语言 . 使用XSLT生成所需文档是微不足道的 .
Are you interested in an XSLT solution? Here is one :
When this transformation is applied on the provided XML document:
the wanted, correct result is produced:
您的描述与您的示例输出不完全匹配 . 我和你的样本一起去了:
书籍祖先和书籍后代的联合 .