XPath - “not”和“!=”之间的区别

2024-02-11

只是一个简单的问题,关于以下内容中 xpath 的“not”和“!=”之间的区别。

获取 XML:

<years>
  <year value="2010"></year>
  <year value="2010"></year>
  <year value="2010"></year>
  <year value="2009"></year>
</years>

我想选择独特的年份。为了实现这一目标,我奋斗了一段时间,但最终以一种我意想不到的奇怪方式实现了。

以下 xpath 符合我的意图,并返回 2009 和 2010 这两个唯一的年份节点。

years/year[not(@value = preceding-sibling::year/@value)]

以下仅返回 2009 年节点。

years/year[@value != preceding-sibling::year/@value]

它们之间的唯一区别是 != 和 not 运算符。我对此思考了一段时间,但找不到可以向其他人令人满意地解释的差异。

也许有人可以帮忙。

Cheers

Steve


第二个示例不起作用,因为如果将其应用于前 3 个节点中的每一个,它永远不会匹配。为了第一<year>,没有可以尝试比较其值的前同级,因此它无法匹配。对于第二个和第三个,它们的前一个节点确实具有相同的值,因此非相等测试失败并再次导致不匹配。

The not(...)版本有效,因为在第一个节点中,整个@value = preceding-sibling::year/@value由于缺少前一个兄弟而失败,并且此失败由not,在第一个节点上为您提供匹配项。

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

XPath - “not”和“!=”之间的区别 的相关文章

随机推荐

  • Rails 在开发模式下不会记录模板错误

    我的 Rails 3 2 9 app 没有向我显示任何有关错误的具体错误信息在模板中 无论我使用 haml 还是 erb 我总是会得到 我们很抱歉 但有些不对劲 事实上 韦布里克is in 发展模式 如果我的模型或控制器出现错误 我会看到完
  • 如何在 GDAL ruby​​ 绑定中显式关闭数据集?

    我在用GDAL https gdal org 1 7 1 从ruby1 9生成GeoTIFF文件 在里面tutorial https gdal org tutorials raster api tut html他们建议使用 GDALClos
  • Ubuntu 11.10链接perftools库

    我无法让 Ubuntu 11 10 中的 gcc 正确链接到 google perftools lprofiler 问题似乎是链接器丢弃了程序中未直接使用的库 一个例子会有所帮助 我们称之为 main cpp include
  • Xamarin iOS UIButton 如何以编程方式单击按钮?

    我试图通过在 ViewWillAppear 函数中以编程方式调用按钮来伪造单击按钮的行为 onclick 函数是在我的 ViewDidLoad 中定义的 您可以看到我正在尝试使用执行选择器来手动调用按钮 该按钮似乎没有运行 有任何想法吗 p
  • WebRTC:对多个对等连接使用相同的 SDP?

    是否可以在多个对等连接中使用相同的 SDP 我正在使用 WebRTC 构建视频会议 这个想法是 呼叫者使用某种信令机制 使用其 SDP 每个用户相同的 SDP 向所有其他用户发送广播消息 然后用户将使用其 SDP 进行响应 当用户收到某人的
  • 调整窗口大小时是否可以完全消除闪烁?

    通常 即使使用双缓冲 在调整窗口大小时 似乎也不可避免地会发生闪烁 第1步 原始窗口 第2步 调整窗口大小 但多余的区域尚未绘制 第3步 调整窗口大小 并绘制额外区域 是否有可能以某种方式隐藏步骤 2 我可以暂停调整大小过程 直到绘画操作完
  • 图像,onload 事件在 Chrome 中不起作用

    我正在使用 html5 创建拖放图像上传功能 这在 Firefox 中对我来说非常有用 但在 chrome 中图像 onload 事件仅在第一次触发 如果我只在第一个作品中拖动多个图像 而如果我在其中拖动第二个图像 则会失败 我相信问题出在
  • iTunes Connect:带有特殊字符的应用程序名称(德语“umlaute”)

    今天 我想提交一个新的德语应用程序 应用程序名称中有一个 元音变音 B rse AppStore 中有很多带有特殊字符 Di t F hrerschein 等的应用程序 当我输入应用程序名称时 JavaScript onBlur 事件会将名
  • Java中如何设置语言?

    我正在使用带有外国操作系统 韩语 日语等 的Java程序 FileChooser等swing组件的显示是外语 我需要将其更改为英文 java util Locale setDefault java util Locale ENGLISH J
  • Noop for Swift 详尽的 Switch 语句

    Swift 需要详尽的 switch 语句 并且每种情况都有可执行代码 switch 中的 case 标签应至少有一个可执行语句 有没有人找到了一种好方法来处理您实际上不想做任何事情的情况 我可以在那里放一个 println 但这感觉很脏
  • Java EE 7 和 Java EE 6 之间的区别 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Java EE 7 和 Java EE 6 之间的主要区别是什么 如果您必须向另一位开发人员解释主要差异 你会怎么做 就问题而言 我真
  • 用“/”字符修补 kubernetes 标签

    我有以下代码 https stackoverflow com questions 57310483 whats the shortest way to add a label to a pod using the kubernetes go
  • 更改 Laravel 中的控制器模型模板

    我想知道是否有任何方法可以更改控制器和模型的基本模板laravel5 4 我的意思是当我跑步时 php artisan make controller ControllerName resource 它会生成这个
  • Matlab 中的布尔矩阵乘法

    Matlab 有布尔 有时称为逻辑或二进制 矩阵乘法函数吗 我具体讨论的是通常用带有点的圆圈表示的内容 以表示布尔矩阵乘法 cij ai1 b1j ai2 b2j ai3 b3j aik bkj 我很难找到一个 现在假设它不存在 如果是这种
  • 存储登录的用户详细信息

    创建 Web 应用程序时 假设您有一个表示单个用户的 User 对象 您认为存储用户已登录的最佳方式是什么 我考虑过的两种方法是 将用户数据库 ID 存储在会话变量中 将整个用户对象存储在会话变量中 有更好的建议吗 使用上述方法有什么问题吗
  • 大型 RSS 阅读器如何工作(netvibes、Google 阅读器...)

    我想知道像 Google Reader Logline technorati 这样的 Web 应用程序是如何工作的 以及它们遵循哪些技术使用 cron 作业一次性解析数百万个 RSS 提要 有一个lot不同的技术 最糟糕 的技术就是您所描述
  • jQuery 悬停动画多次触发

    我试图找出为什么我的悬停功能表现得很奇怪 当您将鼠标悬停在一个 div 上时 另一个 div 将变得可见 但是 当我将光标向下移动到可见的 div 时 它会淡出并再次淡入 这种情况不应该发生 并且应该保持可见 直到我的光标离开主容器 这是我
  • CSS问题Ngx-table angular2泳道

    我目前在获取 ngx datatable 以获得正确的 CSS 时遇到问题 我的 css 文件中有这个来导入正确的 css import swimlane ngx datatable release index css import swi
  • 如何比较 iOS 和 Android 中的加速度计值

    我在 iOS 中获取加速度计值如下 if motionManager accelerometerAvailable NSLog Accelerometer avaliable motionManager startAccelerometer
  • XPath - “not”和“!=”之间的区别

    只是一个简单的问题 关于以下内容中 xpath 的 not 和 之间的区别 获取 XML