我的XML文件的測試樣品如下:的XQuery返回文本節點是否包含特定關鍵字
的test.xml
<feed>
<entry>
<title>Link ISBN</title>
<libx:libapp xmlns:libx="http://libx.org/xml/libx2" />
</entry>
<entry>
<title>Link Something</title>
<libx:module xmlns:libx="http://libx.org/xml/libx2" />
</entry>
</feed>
現在,我想寫一個XQuery,將發現所有<entry>
作爲孩子有<libx:libapp>
的元素。然後,如果標題包含給定關鍵字(例如鏈接),則對於所有這些條目返回標題。所以,在我的xml文檔中,xquery應該返回「Link ISBN」。
我的示例XQuery是如下所示:
samplequery.xq(這裏是DOC_NAME上面所示的XML文件,並libapp_matchkey是一個關鍵字,例如 '鏈接')
declare namespace libx='http://libx.org/xml/libx2';
declare variable $doc_name as xs:string external;
declare variable $libpp_matchkey as xs:string external;
let $feeds_doc := doc($doc_name)
for $entry in $feeds_doc/feed/entry
(: test whether entry has libx:libapp child and has "Link" in its title child :)
where ($entry/libx:libapp and $entry/title/text()[contains(.,$libapp_matchkey)])
return $entry/title/text()
該XQuery是返回null而不是預期的結果'鏈接ISBN'。這是爲什麼?
我已經更換了'$ food_doc'聲明爲'/',糾正了'$ libapp_matchkey'錯字,併成功地與輸入樣本拼命地跑它。 – 2010-12-14 21:43:31
好問題,+1。 – 2010-12-14 22:14:57