首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个XPath查询不能像我假设的那样工作?(搜索带有一些@的元素,而排除带有其他@的元素)

为什么这个XPath查询不能像我假设的那样工作?(搜索带有一些@的元素,而排除带有其他@的元素)
EN

Stack Overflow用户
提问于 2017-06-16 18:11:54
回答 2查看 213关注 0票数 0

我有以下查询(XPath 2.0):

代码语言:javascript
运行
复制
//xref[contains(@href,'#') and @class='- topic/xref ' and @type!='step' and @type!='fig' and @type!='substep']

如您所见,我希望在href属性中查找带有散列的主题/xref元素。我想排除ceratin类型的元素。问题是,上面的查询没有显示@outputclass='expandable‘的元素

我不得不运行一个单独的程序来识别它们:

代码语言:javascript
运行
复制
//xref[contains(@href,'#') and @outputclass='expandable']

为什么第一个较长的查询不显示这些元素?我也尝试了contains( @class=‘- topic/xref ),而不是@class=’- topic/xref‘,它没有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-16 18:58:54

XPath下面尝试

代码语言:javascript
运行
复制
//xref[@class="- topic/xref " and contains(@href, "#") and not(@type=("fig", "substep", "table") or @outputclass="expandable")]

这将返回xref元素,其中href属性中包含class="- topic/xref "#,但没有值为"fig", "substep", "table"type属性或值为"expandable"outputclass属性

票数 0
EN

Stack Overflow用户

发布于 2017-06-16 19:12:54

您还没有展示XML源,但我怀疑您希望检索没有@type属性的元素。但是,只有当元素的@type属性值不是'XYZ‘时,条件@type!='XYZ'才为真。如果我的猜测是正确的,那么您打算使用not(@type='XYZ')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44586670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档