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

如何使用XPath 1.0提取文本内容的最后一个单词

问题原因

你之前编写的表达式仅完成了「筛选文本末尾为PT的Example节点」的逻辑,后续直接返回了节点完整文本,没有做截取最后一个单词的操作。

解决方案

XPath 1.0没有内置字符串分割函数,我们可以通过字符串长度计算、字符替换组合实现通用的最后一个单词提取逻辑,同时兼容空格、短横线两种分隔符场景:

通用提取逻辑(任意节点文本最后一个单词,兼容多单词、混合分隔符)

substring(
  normalize-space(translate(目标节点路径, '-', ' ')),
  string-length(
    translate(
      normalize-space(translate(目标节点路径, '-', ' ')),
      ' ',
      ''
    )
  ) + 1
)

对应场景的具体表达式

如果不需要筛选,直接提取Ctry节点文本最后一个单词:

substring(
  normalize-space(translate(//Ctry, '-', ' ')),
  string-length(
    translate(
      normalize-space(translate(//Ctry, '-', ' ')),
      ' ',
      ''
    )
  ) + 1
)

如果需要先筛选出文本末尾为PT的Example节点再提取:

substring(
  normalize-space(translate(//Example[substring(normalize-space(.), string-length(normalize-space(.)) - string-length('PT') + 1) = 'PT']/Ctry, '-', ' ')),
  string-length(
    translate(
      normalize-space(translate(//Example[substring(normalize-space(.), string-length(normalize-space(.)) - string-length('PT') + 1) = 'PT']/Ctry, '-', ' ')),
      ' ',
      ''
    )
  ) + 1
)

原理解释

  1. translate(目标节点, '-', ' '):将文本中所有短横线替换为空格,统一分隔符格式
  2. normalize-space(...):去除首尾空白,将连续空白统一为单个空格,得到规整字符串S
  3. translate(S, ' ', ''):删除S中所有空格,得到无分隔符的字符串T
  4. 字符串S的长度减去T的长度就是S中空格的总数量,substring(S, string-length(T)+1)就是从最后一个空格的下一位开始截取,正好得到最后一个单词。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:03