问题标签 [flwor]

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 回答
168 浏览

xquery - 使用 xquery 和 FLWOR 在 BaseX 中遍历大型 XML 文档的最有效方法

我遇到了一个有趣的问题,我需要遍历多个大型 XML 文件(每个文件为数百 MB)并从每个元素中输出特定数据,并尽可能快地完成。例子:

点数.xml:

路由.xml:

在不同的文档中有数以万计的点/路线元素,它们比这复杂得多,但对于这个例子,这个摘录就足够了。

输出需要是这样的:

我不能自己修改文档,这是我必须处理的,现在的问题是 - 如何尽可能有效地根据标识符链接元素?我说的是这样做的方法,也许是一种不同的思考方式,而不是实际的代码,因为无论如何它最终都会完全不同。

我尝试循环遍历路线,然后使用 FLWOR 找到点:

效果不太好(花了将近一个小时才完成)。这种方法也有类似的故事:

最后,我需要在输出中使用来自点/路由的更多子元素,所以我认为我必须使用 for 迭代它们,然后连接输出,但也许我错了,这就是我在这里问的原因。

有没有我忽略的东西,或者根本没有更快的方法来做到这一点?

0 投票
1 回答
311 浏览

sql-server - 使用 FLWOR XQuery 返回多个 XML 节点和自定义父标记

我需要使用 FLWOR 表达式获得以下输出。

使用

我尝试了以下查询

这并没有给我预期的输出来找到Year < 1970.

如何将自定义父节点设置为<oldPlanes>

如何返回 2 个节点作为预期输出?

0 投票
2 回答
648 浏览

sql-server - 使用 XQuery 连接 XML 节点

我需要以下输出

使用以下 XML 和 XQuery FLOWR 表达式。

我尝试了以下查询。但它返回不同的输出。

0 投票
1 回答
35 浏览

json - 将 XPath 语句添加到 FLOWR 以从 Twitter 数据库中选择“id”节点

查看twitter数据库的“id”字段:

我如何从FLWOR语句中得到相同的结果?

它将所有内容包装在<result>标签中,但仍提供每个节点。如何选择“id”节点?尝试变化:

没有积极的结果。也许是因为JSON混合在一起?

0 投票
2 回答
99 浏览

xml - 使用主键从 BaseX 中删除重复的实体

如何删除重复条目?

在这种情况下,Twitter 使用雪花作为JSON推文中的唯一 ID 字段,如下所示。按 ID建立推文索引,并删除每个附加$tweet的重复项?但是如何不递归地删除每一条推文......?

一个简单 FLWOR的打印数据库中每条推文的 ID:

结果:

这里的重复是故意的,但正在寻找某种“清理”数据库的方法。

只是寻找一个大致的轮廓或方法。我的想法是将输出从一个管道传输xquery到另一个,但我被困在如何构建索引上。大概这是数据库本身内置的功能,只需要利用正确的模块(可能)。

--

这看起来至少会返回一个不同的结果:

虽然我不太确定它是所有id__str值的集合。

0 投票
1 回答
45 浏览

regex - 简单的 XQuery FLWOR 返回不带数字的文本

如何返回非数字文本?

假设原始电子表格中的每个地址或电话号码单元格都有数字,我希望返回任何没有数字的字符串。


上下文,根据迈克尔凯的说明:

电子表格的每个单元格都有一个字符串。只有一列很容易成为CSV数据。看起来,只有名字没有数字。在这个假设下,希望将数据分解成“块”以区分每个人。数据没有真正的模式。

0 投票
1 回答
70 浏览

xml - 如何将一个 FLWOR 传输到另一个?

轻松FLWOR获取所有数据(来自电子表格

给出这种类型的输出:

另一个返回非数字数据:

似乎只返回名称。在这种假设下,希望在 a 上触发关闭标签<person>并打开一个新标签<person>,例如:

或类似的东西。只是在假设他们的名字中没有数字的情况下真正想将个人分开,然后在XML.

只要每次找到触发关闭标签然后“开始”一个新人的“名称”。完全不确定这里的标准术语。

0 投票
2 回答
42 浏览

grouping - 如何使用 FLOWR 和 XQuery 创建新的列表项?

我正在寻找从文件中选择非数字数据以将其XML切碎成数据库列,或者至少是xmltable类似的结构。这FLWOR给出了一个有用的结果:

但是,它将所有结果输出到单个li标签中,例如:

  • A B C D

首选输出将采用以下形式:

  • 一个
  • b

数据很可能在某种程度上存在问题,因为略有不同FLOWR

当然在新行上输出每个非数字字符串。如何将其输出到列表中

数据摘录:

0 投票
3 回答
144 浏览

xpath - 如何使用翻滚窗口按内容对 XML 元素进行分组?

如何根据是否匹配[0-9]带有 a 的数字进行分组tumbling window

所需的输出:

当前输出,未分组:

输入:

这个概念是每个“人”都有一个名字(没有数字),也许还有其他数据。因此,希望阅读每一行,然后根据找到名称的位置进行分组。

代码:

查看输出,“phone3sue”显然在进行一些匹配和分组,尽管并不完全符合预期,因为“phone3”应该在它自己的元素中,嵌套在“joe”而不是“sue”中。但是,仍然有一些匹配发生在那里。


来自撒克逊邮件列表:

2020 年 2 月 19 日星期三上午 10:31:37 -0800,thufir 脚本:

我将重新阅读有关窗口的部分;我的印象是它更多地用于显示或报告目的。

窗口化是您从数据流中取出块的方式。

您所拥有的是有效的线元素流;您可以识别“名称”行,但您现在不知道它们的距离/任何特定名称对之间的数据量。

Windows 让您说“我想要以名称行开头并继续(但不包括)下一个名称行的此流的块”。

您能否更具体地详细说明两个步骤的含义?

您正在尝试获取一些输入 XML 并将其转换为不同的输出 XML。

如果这是纯粹的转换——将所有名为 FOO 的元素更改为名为 BAZ 的元素——XQuery 不是最好的工具选择。如果可以,请使用 XSLT。它们在计算上是相同的,但语言有不同的偏见,XSLT 确实可以更自然地进行转换。

如果输出 XML 是您输入的抽象的表示——在道德上是某种报告——那么拥有抽象然后呈现它会有很大帮助。

因此,在您的情况下,您拥有的是一个包含名称和数据之间隐式关联的流。(这是一个行流;您知道这些数据行与该名称行一起使用的唯一方法是位置。所以隐含。)如果您将其转换为名称和数据之间的显式映射 - 例如通过创建一个映射变量,其中键是名称行的内容(以某种方式处理空格),每个键的条目是与该名称关联的数据行——您已经完成了抽象部分。

然后,您可以获取该映射并从中生成所需的 XML 输出,这比尝试结合“创建新 XML”和“执行抽象步骤”要简单得多。我发布的最后一件事是将地图转换为元素的示例,但作为一种模式,它只是

地图:钥匙($地图)!{.}{$map(.)}

(如果条目中有节点或序列,它会变得更加复杂,但不会更多。)

这让一些事情更接近意义?

——格雷登

_______________________________________________ saxon-help 邮件列表存档http://saxon.markmail.org/saxon-help@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/saxon-help

0 投票
1 回答
70 浏览

xml-parsing - 如何将嵌套的 XML 转换为 CSV?

XML虽然在这一点上并不严格,但希望将“列表”转换为可用于XML切碎的东西,因此更像是一张桌子。适合导入电子表格或SQL数据库中的表格。

这个输入如何:

  • 人们
    • 电话1
      电话2
      电话3
  • 起诉
    • 细胞4
      主页5
  • 爱丽丝
    • 属性6
      x7
      y9
      z10

转换为如下结构:

重要的是“名称”在第一列,其他“属性”在以下任何列CSV或类似的列中,或可导出的东西CSV。它不一定CSV,也许只是可以转换成这样的结构,BaseX因为CSV通过GUI.

也许:

虽然对于这个特定的数据,我更喜欢前者。