题
我想转换一串成一个节点。我有一个方法是定义采取的一个节点,但是值我有一串(这是很难编码).我怎么把那串成一个节点?
所以,给予属的方法:
define function foo($bar as node()*) as node() {
(: unimportant details :)
}
我有一串,我想通过的foo方法。我怎样转换的串的一个节点,以便该方法将会接受。
解决方案
MarkLogic解决方案:
将字符串转换为节点的最佳方法是使用:
xdmp:unquote($string).
相反,如果您想将节点转换为字符串,您可以使用:
xdmp:quote($node).
与语言无关的解决方案:
节点到字符串是:
fn:string($node)
其他提示
如果您想在字符串中创建 text 节点,只需使用 text 节点构造函数:
text { "your string goes here" }
或者如果您希望使用字符串内容创建元素,则可以构建元素,如下所示:
element (some-element) { "your string goes here" }
如果你正在谈论串包含的XML标记,还有标准化的解决方案(自XPath/属职能3.0),以及:
- 串节点: fn:分析xml()
- 节点string: fn:serialize()
这个问题的答案取决于使用的引擎。例如, Saxon 的用户使用 saxon:parse
方法。
事实是 XQuery 规范没有为此内置。
一般来说,如果您需要从 CDATA 部分中提取一些嵌入的 XML ,您只需要使用它。否则,您可以从文件系统中读取文件,或直接内联声明 XML 。
最多使用声明性表单,而不是硬编码字符串,例如(使用Stylus工作室)
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)
不隶属于 StackOverflow