我想将一个函数应用于序列中的每个元素并获得结果。有人能指出我正确的方向吗?
e.g。
declare function local:ToTextNode($string as xs:string) as Node()
{
text { $string }
};
我想将上述内容应用于:
('foo','bar','baz')
...并获得一系列节点。
答案 0 :(得分:5)
使用simple map operator !
,但它需要XQuery处理器实现XQuery 3.0。
declare function local:ToTextNode($string as xs:string) as node()
{
text { $string }
};
('foo','bar','baz') ! local:ToTextNode(.)
您不需要为此定义函数,也可以直接使用文本节点构造函数:
('foo','bar','baz') ! text { . }
如果您的XQuery引擎不支持map运算符,则必须使用flwor表达式:
for $i in ('foo','bar','baz')
return text { $i }