0

我正在 Adob​​e CRX 中执行 XPath 查询,并尝试查找包含字符串“Xbox Live”的节点列表。我得到的是同时包含“Xbox”和“Live”的节点。我想知道要获得与我的字符串完全匹配的查询是什么。

当前 XPath 查询:/jcr:root/content//*[jcr:contains(., 'Xbox Live')] order by @jcr:score

我想要返回的内容示例:

  • 此优惠需要 Xbox Live 帐户
  • 您的 Xbox Live 用户名无效
  • Xbox Live 就是未来!

我不想返回的内容示例:

  • Xbox 和 Playstation 将永远存在
  • 我会比我的 Xbox 活得更久吗?
  • Xbox 超越了我的 Wii
4

1 回答 1

1

您的 xpath/xquery 很好,应该返回包含精确短语的元素"Xbox Live",假设 Adob​​e CRX 具有不错的 xpath 1.0 实现。

可能的问题是,通过使用所有后代文本节点.contains()串联将被评估。例如,以下parent元素也被认为与contains(., 'Xbox Live')谓词匹配:

<parent>Xbox <child>Live</child></parent>

如果要评估contains()单个文本节点,并返回匹配文本节点的父元素,请尝试以下操作:

/jcr:root/content//text()[jcr:contains(., 'Xbox Live')]/parent::* order by @jcr:score
于 2015-06-12T23:03:34.457 回答