XQuery是XPath的擴展,但這個問題的答案完全與XPath相關。
XPath表達式具有動態上下文;以下是XPath規範中的詳細信息:http://www.w3.org/TR/xpath-30/#id-xp-evaluation-context-components。上下文項可以是作爲引用.
:
fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[. eq "my product name"]
謂詞[. eq "my product name"]
重新評估每個產品元件,並且.
是上下文項,即,元件的特定於該評估的參考。
幾個XPath函數只接受上下文,而另一些函數默認上下文,並帶有可選的參數。
下面是僅接受XPath 3中上下文的函數的完整列表:http://www.w3.org/TR/xpath-functions-30/#context。
一些例子:
fn:last()
取零個參數和如果有10個<product/>
元件返回上下文項
的大小,即下面的表達式是等效的:
fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[fn:last()]
fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[10]
fn:position()
取零組的參數和返回上下文位置
fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product[fn:position() > 3]
有跡象表明,採取零或-1個參數,其中,所述零參數形式訪問上下文許多功能。我看到它們中的15個,在規範中搜索這個短語:「這個函數的零參數形式是·確定性的··依賴於上下文的·和·依賴於焦點的·」。
一個例子:
fn:string()
取零或-1參數和返回參數或上下文項作爲字符串
fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product/fn:string()
返回每個的字符串值<product/>
元素。這相當於
fn:doc('http://www.functx.com/input/catalog.xml')/catalog/product/fn:string(.)
文意項目被明確作爲參數傳遞。 fn:string()
也可用於類型轉換:fn:string(1)
返回"1"
。
是的,這很有道理,謝謝! – MrD