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

如何通过XPath判断table-title是否含文本,为其设置不同行高?

解决XPath判断table-title是否含直接文本的问题

你的问题核心出在contains(text(), '')这个条件上——这个表达式永远会返回true,因为空字符串是任何字符串的子串,哪怕text()返回的是空白文本节点或者空的节点集合,contains都会判定为成立,所以不管有没有实际标题文本,都会返回100%,完全不符合你的预期。

要实现“当table-title除了<meta-ref>子元素之外有实际文本时行高100%,无文本时行高0.1%”的需求,我们需要准确判断table-title的直接子文本节点是否包含非空白内容(排除子元素<meta-ref>里的文本),可以用下面的写法:

{ctrl:If(table-title[text()[normalize-space() != '']], '100%', '0.1%')}

逻辑解释:

  • table-title/text():获取table-title下所有直接子文本节点(也就是<meta-ref>元素之外的文本部分,比如你示例里的"This is a table title text.")
  • text()[normalize-space() != '']:筛选出那些去掉首尾空白、压缩中间空白后不为空的文本节点——也就是存在实际的标题文本
  • 如果这个条件成立(有实际文本),返回100%;否则返回0.1%

你也可以用另一种等价的写法,通过拼接直接文本节点并检查规范化后是否为空:

{ctrl:If(normalize-space(table-title/text()) != '', '100%', '0.1%')}

这个写法会把table-title的所有直接子文本节点拼接成一个字符串,用normalize-space处理掉空白后,判断是否非空,逻辑和上面完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:11:10