问题标签 [xquery-3.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
146 浏览

xml - eXist-db 中 XML 文档中的命名空间返回空 API 调用

我有一个带有 XML 文档集合的 eXist-db。所有文档在顶部节点都有一个命名空间,如下所示

当我尝试从 REST API 查询文档以获取 //div/p 中的信息时,我得到一个空响应:

但是,当我编辑其中一个文档并删除 xmlns 时,我会从已编辑的文档中获取数据。

所以,问题是,如何在不编辑所有名称空间的情况下查询集合中的 XML 文档?

0 投票
1 回答
185 浏览

xpath - 如何将 XSLT 2 样式表模块中定义的函数公开给 fn:transform?

XPath 3.1transform函数允许您应用模板或调用命名模板或调用样式表函数。

但是,当我尝试使用现有的 XSLT 2.0 样式表模块时(例如,在 http://www.xsltfunctions.com/ 上记录的 functx 模块并在http://www.xsltfunctions.com/作为 XSLT 2 提供xsl/functx-1.0-doc-2007-01.xslxsl:stylesheet )在一个或xsl:transform根元素中以 XSLT 2 方式声明许多函数,但不使用 XSLT 3xsl:package构造,我无法说服 Saxon 9.8 或 9.9 运行任何使用transform函数和参数声明的函数,initial-function因为我总是收到错误“ XTDE0041:无法从外部调用函数 foo#2,因为它不是公共的”。

示例可能是:

但给出了上述错误。

我发现的唯一解决方法是动态构建(例如在 XQuery 中)一个 XSLT 3 包,导入 functx 模块并xsl:expose用于公开函数:

这可行,但需要使用 XPath 3.1 的宿主语言(如上面的 XQuery 3.1)。

有没有更简单的方法来使用该transform函数并initial-function使用现有的 XSLT 2 样式表模块声明函数?

0 投票
3 回答
484 浏览

xml - 使用 XQuery/XPath 获取祖先节点的相反顺序

我正在寻找一个好的解决方案(短表达式,最佳性能),以在 BaseX 上使用 XQuery 3.1 获得所有祖先节点的相反顺序。

现在我正在使用此代码来获取给定 XML 示例的dirA/dirA3/dirA31 :

这段代码可以得到相反的顺序dirA31/dirA3/dirA

我的意思是,是否有任何其他 XPath 或 XQuery 表达式以相反的顺序遍历祖先?

注解:文件节点的name属性值是唯一的

0 投票
3 回答
83 浏览

xquery - 为什么在 XQuery 中数字文字永远不能是 xs:positiveInteger 类型?

我注意到 XQuery 实现如何处理(子)类型的细微差别。特别是,将文字数字处理为声明了接受的输入类型的函数的输入。我天真地认为任何可转换为该特定数字类型的数字文字都会被接受。

exists-db 允许xs:long, xs:int, ... Saxon 不允许。

我在 Xquery Spec 2.5.5 SequenceType Matching 和 Xpath functions spec 1.6.3 Atomic Type Hierarchy中找不到该行为的任何原因

有人可以解释一下为什么 Saxon 9.3.1 HE、BaseX 9.3.1 [Standalone] 和 eXist 5.3.0-SNAPSHOT 会这样吗?

我是否错过了规范中定义将文字1转换为 xs:integer 的部分?xs:decimal 作为最顶层的类型会更有意义,但是如果允许一个子类型,为什么不一直走呢?

这是一个现场演示

0 投票
1 回答
105 浏览

xquery - 通过 URI 从 BaseX 数据库中选择文档作为根上下文

可能不难,但我找不到正确的命令和语法:

我打开了一个包含多个 XML 文档的 BaseX 数据库:

看起来像这样

我正在寻找的是一个 XQuery,它通过 URI 选择一个文档并将其用作 XPath 上下文,s.th。像这样:

另一个也非常有用:选择目录路径中的所有文档(递归:))

0 投票
1 回答
40 浏览

xquery - 为什么 xquery 允许局部变量重新声明?

这甚至不会发出警告:

为什么(函数式)编程语言允许变量重新声明?我真的只是想了解它背后的理由。我相信,通过在编译步骤拒绝这一点可以进行一些更积极的优化。由于子作用域也知道局部变量,这只会为难以捕捉错误留下更多空间。JavaScript 多年来一直存在这个问题,并最终通过引入和var来摆脱它。letconst

这是一个可能难以跟踪值的示例。

在评估它之前,您可能想先猜测一下。

0 投票
1 回答
78 浏览

count - XQuery 如何使用“where”条件进行计数

我刚刚开始学习 XQuery,我希望它向我展示流派 (genero) 的音乐节数量与“金属”相同。我不能得到它们的总数,只能分开。

查询

XML

结果

谢谢!

0 投票
1 回答
92 浏览

saxon - 查询因动态错误而失败:无法使用此输出方法序列化地图

这一定是个菜鸟问题,因为我刚开始使用 XQuery。我成功地为运行 XSL 转换的 eXist 构建了一个简单的 XQuery。但是我在为 Saxon (9.9.1.5J) 构建一个运行 XSL 转换的类似 XQuery 方面没有成功。

为 eXist 工作的 XQuery:

Saxon 的 XQuery 失败:

Saxon报告的错误是:

查询因动态错误而失败:无法使用此输出方法序列化地图

我已经在 Google 和 SO 中搜索过这个错误,但什么也没得到。我已经尝试过使用和不使用输出声明,以及在 XSL 中使用和不使用输出声明。我已经用 fn:transform() 和 transform() 试过了。我也为 fn 命名空间声明了一个。转换可通过 Saxon 命令行和 eXist 进行。所以我一定错过了一些关于为 fn:transform() 的选项构建地图的简单内容。

0 投票
1 回答
157 浏览

xml - 使用 BaseX/XQuery 将 XML 转换为 CSV

我正在尝试将大量 xml 转换为单个 csv 文件。xml 的简化结构如下所示:

我想获得的 csv 结果是

我的代码基于这个答案,但我只能在 csv 上为每个收据添加一行,并连接所有属性 2,或者只返回包含 Fields2 元素和 Field2 的收据,即:要么:

或这个:

我的第一种情况的代码是:

对于第二种情况,它将是:

0 投票
1 回答
36 浏览

xquery - Functx 模块和带有字符结尾的长字符串

我遇到了处理带有行尾字符的字符串的functx模块的问题。以下代码应该可以工作(?)

但是它失败了

“Something blah”预期,“Something blah other”返回。

删除换行符使测试正常工作。我不明白什么?:)

BR