XQuery:声明一个不返回任何内容的函数
XQuery: declare a function returning nothing
declare variable $testseq as item()* := ();
declare function local:insertseq($target as item()*, $position as xs:integer?, $inserts as item()*)
as item()* (:might be great if we have a keyword to represent nothing:)
{
fn:insert-before($target, 1, $inserts) (:change the global sequence:)
() (:simulate returning nothing, empty sequence:)
};
element test
{
attribute haha {"&"},
local:insertseq($testseq, 1, ('a', 'b')),
$testseq
}
我需要在脚本 运行 时将一些东西收集到全局序列中。在脚本的末尾,我发布了序列。函数 insertseq
必须 return 什么都没有。 XQuery 有可能吗?或者还有其他技巧吗?
BaseX 错误:
$ basex test.xqy
Stopped at /Users/jack/Documents/SHK/XSD2OWL/Workspace/xqy/test.xqy, 7/4:
[XPTY0004] Item expected, sequence found: ("a", "b").
你原来问题标题的答案实际上是:
declare function local:f() as empty-sequence() {
()
};
由于您可能想要解决一个特定的问题,您可以考虑创建一个新问题,使用另一个标题和相应的问题描述(包括一个带有预期输入和输出的小示例)。
在XQuery等函数式语言中,变量一旦定义就不能再赋值(参见Referential Transparency). As a consequence, you’ll need to use recursive functions to repeatedly add values to a sequence. fn:fold-left也可以这样用:第一次用感觉有点挑战,但是一旦你理解了它的作用,你不想错过的是。
declare variable $testseq as item()* := ();
declare function local:insertseq($target as item()*, $position as xs:integer?, $inserts as item()*)
as item()* (:might be great if we have a keyword to represent nothing:)
{
fn:insert-before($target, 1, $inserts) (:change the global sequence:)
() (:simulate returning nothing, empty sequence:)
};
element test
{
attribute haha {"&"},
local:insertseq($testseq, 1, ('a', 'b')),
$testseq
}
我需要在脚本 运行 时将一些东西收集到全局序列中。在脚本的末尾,我发布了序列。函数 insertseq
必须 return 什么都没有。 XQuery 有可能吗?或者还有其他技巧吗?
BaseX 错误:
$ basex test.xqy
Stopped at /Users/jack/Documents/SHK/XSD2OWL/Workspace/xqy/test.xqy, 7/4:
[XPTY0004] Item expected, sequence found: ("a", "b").
你原来问题标题的答案实际上是:
declare function local:f() as empty-sequence() {
()
};
由于您可能想要解决一个特定的问题,您可以考虑创建一个新问题,使用另一个标题和相应的问题描述(包括一个带有预期输入和输出的小示例)。
在XQuery等函数式语言中,变量一旦定义就不能再赋值(参见Referential Transparency). As a consequence, you’ll need to use recursive functions to repeatedly add values to a sequence. fn:fold-left也可以这样用:第一次用感觉有点挑战,但是一旦你理解了它的作用,你不想错过的是。