我想將字符串轉換爲節點。我有一個被定義爲一個節點的方法,但是我的值是一個字符串(它是硬編碼的)。如何將該字符串轉換爲節點?如何將字符串轉換爲XQuery中的節點?
所以,對於一個XQuery方法:
define function foo($bar as node()*) as node() {
(: unimportant details :)
}
我有,我想傳遞給foo的方法的字符串。如何將字符串轉換爲節點,以便方法接受字符串。
我想將字符串轉換爲節點。我有一個被定義爲一個節點的方法,但是我的值是一個字符串(它是硬編碼的)。如何將該字符串轉換爲節點?如何將字符串轉換爲XQuery中的節點?
所以,對於一個XQuery方法:
define function foo($bar as node()*) as node() {
(: unimportant details :)
}
我有,我想傳遞給foo的方法的字符串。如何將字符串轉換爲節點,以便方法接受字符串。
MarkLogic解決方案:
將字符串轉換成一個節點的最佳方法是使用:
xdmp:unquote($string).
反之,如果你想一個節點轉換成你可以使用一個字符串:
xdmp:quote($node).
語言無關的解決方案:
節點串是:
fn:string($node)
xdmp:unquote和quote不屬於XQuery語言規範的一部分,它是一組MarkLogic擴展庫的一部分。從字符串文字加載xml到節點取決於正在使用的XQuery引擎。 http://www.xml.com/lpt/a/1660 – 2008-09-23 14:25:29
的這個問題的答案取決於正在使用的引擎。例如,用戶撒克遜,使用saxon:parse
方法。
事實上,XQuery規範沒有內置於此。
一般來說,你會才真正需要使用這個如果你需要從CDATA節拉一些嵌入式XML。否則,您可以從文件系統讀入文件,或直接內聯聲明XML。
對於大多數情況,您將使用聲明性表單而不是硬編碼字符串,例如(使用手寫筆工作室)
declare namespace my = "http://tempuri.org";
declare function my:foo($bar as node()*) as node() {
<unimportant></unimportant>
} ;
let $bar := <node><child></child></node>
return my:foo(bar)
如果你想創建一個文本節點出字符串,只需用一個文本節點構造:
text { "your string goes here" }
,或者如果你希望創建一個元素與字符串的內容,你可以構造一個元素這樣的事情:
element (some-element) { "your string goes here" }
如果您正在討論包含XML標記的字符串,則有標準化解決方案(來自XPath/XQuery函數3。0),以及:
是否字符串包含一些逃脫了要解析爲一個節點,或者你只是想XML將字符串轉換爲文本節點,以便您可以將它傳遞給此特定函數? – JeniT 2008-09-26 08:45:19