0

在这个 xml 示例中:

<concept><title>Another Neat Tool(ANT)</title></concept>

上下文是:/concept/title/

我想返回包含任何左括号、任何文本和右括号的任何概念标题元素。我希望它找到 (ANT) 或 ( ) 内的任何其他文本。

我成功了/context/title/text(), "("

但它只定位并突出显示(不是(ANT)

如何修改 xpath 2.0 以定位任何包含括号内的首字母缩略词的概念标题元素。

4

2 回答 2

0

试试这个表达式(你可能需要调整它以包含你的根节点):

/concept/title[contains(text(),"(") AND contains(text(),")")]/substring-before(substring-after(text(),"("),")")

在线测试代码在这里

由此:

<concept>
  <title>Automated Teller Machine (ATM)</title>
</concept>
<concept>
  <title>Central Standard Time (CST)</title>
</concept>
<concept>
  <title>OPEN AND CLOSE (ABC)</title>
</concept>
<concept>
  <title>CLOSE ONLY DEF)</title>
</concept>
<concept>
  <title>OPEN ONLY (GHI</title>
</concept>
<concept>
  <title>OPEN AND CLOSE (TEST)</title>
</concept>

它返回这个:

ATM
CST
ABC
TEST
于 2013-06-07T17:46:49.477 回答
0

XPath 表达式

/concept/title[matches(., '\([A-Z]{2,}\)')]

将返回包含首字母缩写词的所有 /concept/title 元素的序列,定义为括号中的两个或多个大写字母。

如果要自己返回首字母缩写词,可以使用

/concept/title[matches(., '\([A-Z]{2,}\)')]/
   replace(., '^.*\(([A-Z]{2,})\).*$', '$1')
于 2013-06-07T21:08:45.483 回答