You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath识别上标后紧跟下标及仅上标的场景?

用XPath区分两种标签场景

针对你需要区分的两种场景,完全可以用XPath实现精准识别,以下是对应两种场景的表达式及说明:

场景1:后不紧跟(仅独立出现的)

要匹配这类,核心是判断它的第一个兄弟节点不是元素,对应的XPath:

//sup[not(following-sibling::*[1][self::sub])]

逻辑说明

following-sibling::*[1]取的第一个兄弟元素,self::sub判断该元素是否是,加上not()就表示排除掉那些后面紧跟的。比如你示例里的第一个,它的第一个兄弟是文本节点aaa,符合这个条件会被匹配。

如果需要更严格(确保没有任何文本/注释等节点插在和之间),可以用node()代替*,匹配所有类型的节点:

//sup[not(following-sibling::node()[1][self::sub])]

场景2:后立即紧跟

要匹配这类,直接判断它的**第一个兄弟节点就是**即可,XPath:

//sup[following-sibling::*[1][self::sub]]

同样,要精准匹配所有节点类型(确保没有任何文本/注释等节点插在中间),用:

//sup[following-sibling::node()[1][self::sub]]

示例里的第二个,它的第一个兄弟节点就是,会被这个表达式命中。

关于你之前的尝试

boolean(following-sibling::text())只能判断后面是否存在文本节点,但没法区分是否紧跟,而上面的表达式直接针对两种场景的核心差异,能精准实现你的需求。

内容的提问来源于stack exchange,提问作者srikrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:10:03