xml ファイル内の特定のキーワードを含むすべてのテキスト ノードを検索する XQuery を作成しようとしています。テキスト ノードは長いので、一致するキーワードから始まるテキストの部分文字列 (必要な長さ) を返したいと思います。
サンプルファイル.xml
<books>
<book>
<title>linear systems</title>
<content>vector spaces and linear system analysis </content>
</book>
<book>
<title>some title</title>
<content>some content</content>
</book>
</books>
samplexquery.xq
declare namespace functx = "http://www.functx.com";
for $match_result in /*/book/*[contains(.,'linear')]/text()
return substring($match_result, functx:index-of-match-first($match_result,'linear'), 50)
結果 [線形システム、線形システム解析] が得られることを期待しています。最初の本のタイトル ノードには、'linear' という単語が含まれています。「linear....」から始まる 50 文字を返します。最初の本のコンテンツ ノードについても同様です。
私は XQuery 1.0 を使用しており、http ://www.xqueryfunctions.com/xq/functx_index-of-match-first.html の例に示すように名前空間 functx を含めました。
しかし、これは私にエラーを与えています: [XPST0017] Unknown function "functx:index-of-match-first(...)".
ありがとう、ソニー