xmlファイルに特定のキーワードを含むすべてのテキストノードを見つけるXQueryを作成しようとしています。テキストノードは長いので、一致するキーワードから始まるテキストの部分文字列(希望する長さの文字列)を返したいと思います。XQueryでfunctx:index-of-match-firstを使用してテキストノードの部分文字列を返します。
Samplefile.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 ....'から50文字を返します。最初の本のコンテンツノードについても同様です。
私は、XQuery 1.0を使用していますが、私が例に示すように、名前空間のfunctxを含ま:http://www.xqueryfunctions.com/xq/functx_index-of-match-first.html
しかし、これは私にエラーを与えている:[XPST0017]不明な機能「functx:インデックスの-match-最初(...)"。
おかげで、 ソニー
良い質問、+1。説明と解決方法については私の答えを見てください。 :) –