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 要素のシーケンスを返します。頭字語は、括弧内の 2 つ以上の大文字として定義されます。

頭字語自体を返したい場合は、次を使用できます

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