gpt4 book ai didi

xml - xpath using//and descendant-or-self 和 self

转载 作者:行者123 更新时间:2023-12-04 13:39:53 24 4
gpt4 key购买 nike

我正在尝试获取与哈利波特同年的所有书名

"/bookstore/book[year=//descendant-or-self::book[title='Harry Potter']/year]/title"

正确生成与名为“哈利波特”的书同年的所有书名

"/bookstore/book[year=descendant-or-self::book[title='Harry Potter']/year]/title";

只生成标题为“哈利波特”的书

虽然,最初我做了:

"/bookstore/book[year=self::book[title='Harry Potter']/year]/title";

也只生成标题为“哈利·波特”的书。

XML 文档来自:http://www.w3schools.com/xml/xml_xpath.asp

为什么最后两个没有产生我想要的所有结果,而只产生本书本身?

最佳答案

首先,出于所有实际目的,//descendant-or-self::book//book 的含义相同,因此您的第一个表达式是正确的,但没有必要冗长。

您的第二个表达式使用 book[year=descendant-or-self::book...]。在您的示例 XML 文档中,书籍没有后代书籍,因此这等同于 book[year=self::book...],这是您的第三个表达式。

您的第三个表达式 /bookstore/book[year=self::book[title='Harry Potter']/year]/title 非常多余。如果我们删除内部谓词,它会说

/bookstore/book[year=self::book/year]/title

这是选择每本书的年份与图书年份相同的图书 - 如果图书有年份,则始终为真。

如果你忽略了重言式的条件,你就剩下

/bookstore/book[title='哈利波特']/title

选择所有书名为'Harry Potter'的书名,只能是零次或多次重复的“Harry Potter”。

基本上,您还没有了解上下文的重要性。您需要重新阅读您最喜欢的 XPath 教科书中的那一部分。

关于xml - xpath using//and descendant-or-self 和 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com