在这个 xml 示例中:
<concept><title>Another Neat Tool(ANT)</title></concept>
上下文是:/concept/title/
我想返回包含任何左括号、任何文本和右括号的任何概念标题元素。我希望它找到 (ANT) 或 ( ) 内的任何其他文本。
我成功了/context/title/text(), "("
但它只定位并突出显示(不是(ANT)
如何修改 xpath 2.0 以定位任何包含括号内的首字母缩略词的概念标题元素。
在这个 xml 示例中:
<concept><title>Another Neat Tool(ANT)</title></concept>
上下文是:/concept/title/
我想返回包含任何左括号、任何文本和右括号的任何概念标题元素。我希望它找到 (ANT) 或 ( ) 内的任何其他文本。
我成功了/context/title/text(), "("
但它只定位并突出显示(不是(ANT)
如何修改 xpath 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
XPath 表达式
/concept/title[matches(., '\([A-Z]{2,}\)')]
将返回包含首字母缩写词的所有 /concept/title 元素的序列,定义为括号中的两个或多个大写字母。
如果要自己返回首字母缩写词,可以使用
/concept/title[matches(., '\([A-Z]{2,}\)')]/
replace(., '^.*\(([A-Z]{2,})\).*$', '$1')