XPath max 函数和括号的使用

2023-11-30

假设我们有以下 XML:

<people>
  <student name="Peter">
    <subject>
      <name>English</name>
      <grade>60</grade>
    </subject>
    <subject>
      <name>Programming</name>
      <grade>70</grade>
    </subject>
    <diploma>80</diploma>
  </student>
</people>

我们试图找到的是“科目”的“名称”,其中“Peter”在“年级”中的数字最多。整个 XML 中多了几个不同名字的人,但我认为这并不重要。这一切都遵循相同的原则。

为什么这个 XPath 失败了:

people/student[@name="Peter"][max(subject/grade)]/subject/name

该错误称为:

NO MATCH!

如果我在计算最大值后必须打印出不同的值,我永远无法正确使用 max 函数。

我还花了相当多的时间在 XMLLINT 上,试图让它在 Xpath1.0 中工作

xmllint --xpath 'people/student[name='Peter'][not(subject/grade > subject/grade)]/subject/grade' grades.xml >result.txt

这将返回:

XPath set is empty

我已经阅读了这些函数,因此我希望获得代码示例,而不是文档链接。如果您发现 XML 错误,则可能是我手动将其翻译成英语时出现了问题。

EDIT:

people/student[@name="Peter"]/max(subject/grade)

工作正常并输出正确的最大值。这让我相信问题出在我对 [] 的使用上。


您的使用max()不起作用,因为您没有将 max() 与任何东西进行比较。

这里有几个选项...

XPath 2.0

/people/student[@name="Peter"]/subject[grade = max(../subject/grade)]/name

XPath 1.0

/people/student[@name="Peter"]/subject[not(preceding-sibling::subject/grade > grade) and not(following-sibling::subject/grade > grade)]/name

请注意,xmllint 仅支持 XPath 1.0。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XPath max 函数和括号的使用 的相关文章

随机推荐

  • Xcode 4异常断点过滤

    中断 Objective C 异常确实非常有用 并且是调试问题的最佳方法NSArray等等 然而 在实际编程时 异常也是一个很好用的东西 Xcode 提供了两种中断 Obj C 异常的选择 每当抛出异常时就中断 每当捕获异常时就中断 打破捕
  • 用于类延续的 Xcode 代码片段?

    我有一个用于创建属性的 Xcode 4 6 代码片段 一个用于弱属性 一个用于强属性 Typing propstrong在接口声明 h 文件 中工作得很好 但是当我在课堂延续中执行此操作时 没有向我提供代码片段 interface MyCl
  • 搜索和链接库目录的顺序

    我很难理解搜索目录以链接到库的顺序 我有一个CentOS6系统和3个版本的gcc 4 4 7 4 7 2 4 9 2 系统版本为4 4 7 版本4 7 2和4 9 2为模块 在 etc ld so conf d 有两个文件 gcc 4 7
  • 如何安装适用于 Python 2.7 的 PyQT4?

    我正在尝试在 Python 2 7 9 上安装 PyQT4 我在 Mac OS X 上 所以我尝试通过 Homebrew 和 Macports 安装它 不幸的是它们似乎都不起作用 这是我尝试过的 brew install python qt
  • 如何检查一个数组元素是否完全存在于php中的另一个数组中[重复]

    这个问题在这里已经有答案了 我有两个数组 例如 array1 1 2 3 4 5 6 7 8 9 array2 4 6 9 有没有什么函数可以让我确定array2完全存在于array1 我知道我可以使用in array 循环中的函数 但在我
  • 包含文件中的包含路径失败

    我在 PHP 包含路径方面遇到了一些麻烦 并且不明白 那里出了什么问题 首先 我想向您展示我的文件 目录结构 文件 目录结构 index php foo baz php bar inc php asdf qwerty inc php ind
  • 批处理脚本帮助 - 将 DelayedExpansion Var 的子字符串替换为另一个 DelayedExpansion Var

    基本上我正在尝试做 var1 SomeText var2 但这段代码不起作用 我缺少什么 在执行使用变量进行搜索和 或替换的搜索和替换操作时 扩展顺序至关重要 内部变量必须在外部搜索和替换扩展发生之前扩展 尝试对两者都使用延迟扩展显然是行不
  • 如何在我的本地 Geth 账户中获取一些以太币?

    我已经设置了 Geth 并创建了一些没有余额的帐户 所以我无法进行任何交易 因为它需要花费 Gas 费 如何创建具有一些初始余额的帐户 以便我可以测试我的合同 我使用以下命令创建了帐户 gt personal newAccount 假设您正
  • 确保 for 循环中的可观察对象在执行其他代码之前全部完成

    我有一段代码 如下所示 getPersons subscribe persons gt for const person of persons getAddress person id subscribe address gt person
  • Android 11 - 访问Android/data目录

    除了 root 之外 还有什么方法可以访问 Android 11 上的 SD 卡的 android data 目录吗 我的 非 Play 商店 应用程序需要访问另一个应用程序的公共 Android data com appname 文件夹
  • PHP 8.1.1 的 __toString() 方法问题 - 如果在声明类本身之前创建实例,则导致找不到类

    从 PHP 7 3 升级到 8 1 1 后遇到问题 当然还有很多事情要做 但这有点奇怪 这个例子对我不起作用 出现错误致命错误 未捕获错误 找不到类 TestC C xampp81 htdocs helpdesk811 test81 ind
  • 修复了滚动项目时导航抽屉中的导航标题

    当前状态 具有 NavigationHeader 和 NavigationMenu 项的 NavigationDrawer 这些项目数量很大 因此需要滚动才能访问底部的项目 要求 向下滚动到底部时 导航标题应保持固定 这是我的 Activi
  • Flutter:英雄过渡+小部件动画同时进行?

    因此 我对 Flutter 的特定动画案例有一些疑问 基本上 我想做的是同时运行用于路线更改的英雄过渡和相邻小部件上的自定义动画 具体来说 我的根目录中有一个自定义的 InheritedWidget 它从 StatefulWidget 父级
  • 获取 XMPP 聊天历史记录 OpenFire

    我正在尝试使用 iOS 中的 XMPPFramework 和 OpenFire 服务器来实现聊天应用程序 我的聊天工作正常 我正在尝试从服务器检索聊天历史记录 当然 我已经在服务器上启用了邮件存档 这是我发送的请求
  • 如何在 Objective-C 中保持会话?

    所以我遇到了以下问题 我有一个登录视图控制器和一个表单视图控制器 在登录视图控制器上 我向 PHP 脚本发送 POST 请求 该脚本验证用户是否具有访问权限 该脚本仅返回 1 或 0 因此我可以选择关闭或维护视图控制器 当凭据正确传递时 用
  • C# 中的对象指针(object*)

    我想要做的是 我想传递一个指向函数的指针 该函数可以是任何类型的变量 int long string 甚至是一个类 我的意思是我应该能够传递任何变量的指针 我就是这样做的 unsafe class whatever whatever obj
  • 声明原子指针与原子指针

    据我所知 以下声明创建了一个值数组 每个值都是原子的 Atomic int x 10 但是 我不清楚这是否 Atomic int x x calloc 10 sizeof int 创建一个包含 10 个原子整数的数组 或者是指向非原子整数数
  • 计算文本的正确宽度

    我需要阅读由 AutoCAD 导出为 PDF 的计划 并使用 PDFBox 在其上放置一些带有文本的标记 除了计算写在标记旁边的文本宽度之外 一切正常 我浏览了整个 PDF 规范并详细阅读了涉及图形和文本的部分 但无济于事 据我了解 字形坐
  • Mac OS 10.16 链接 Homebrew 安装的库

    我已经使用自制程序很长时间了 从未遇到过这个奇怪的问题 由于某种原因 我不会在这里解释我使用的是 MacOS 10 16 Big Sur 这是最新 MacOS 的 Beta 版本 并且已经使用自制软件安装了库 其中一个图书馆是zlib 但是
  • XPath max 函数和括号的使用

    假设我们有以下 XML