我正在嘗試編寫一個XQuery,它將查找包含xml文件中給定關鍵字的所有文本節點。文本節點很長,所以我想返回一個從匹配關鍵字開始的文本的子串(所需長度)。在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'。返回從'linear ....'開始的50個字符。對於第一本書的內容節點也是如此。
我使用XQuery 1.0和我包括命名空間functx所示的例子中,在:http://www.xqueryfunctions.com/xq/functx_index-of-match-first.html
但是,這是給我一個錯誤:[XPST0017]未知功能「functx:索引的-匹配 - 第一(...)」。
感謝, 索尼
好問題,+1。請參閱我的回答以獲得解釋和解決方案。 :) – 2010-12-17 19:47:44