【问题标题】:XQuery: Two namespaces in the same module?XQuery:同一个模块中有两个名称空间?
【发布时间】:2025-12-04 22:30:02
【问题描述】:

是否可以在其中声明 2 个命名空间和组 2 组不同的函数,然后在同一个主脚本中导入它们?

例如:主脚本中的类似内容

    import module namespace i = "UtilIntegers" at "Utils.xqm";
    import module namespace s = "UtilStrings" at "Utils.xqm";

文档非常模糊且依赖于实现:http://www.xquery.com/tutorials/guided-tour/external-functions-variables.html

【问题讨论】:

  • 您提到的“文档”来自一个 XQuery 供应商:它不是官方语言规范,尽管该供应商设法获取了“xquery.com”域名。

标签: xml xpath module namespaces xquery


【解决方案1】:

模块导入的很多方面确实是实现定义的,但是一个库模块只能有一个目标命名空间(因为它只能包含一个ModuleDecl),并且规则是明确的:

库模块中声明的每个变量和函数的名称必须具有与模块的目标命名空间相同的命名空间URI;否则会引发静态错误 [err:XQST0048]。

在您的示例中,“导入模块”声明之一将失败,因为“导入模块”中出现的命名空间与被导入模块的目标命名空间不匹配。

【讨论】:

    最近更新 更多