问题标签 [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.
xquery - 使用 xquery 和 FLWOR 在 BaseX 中遍历大型 XML 文档的最有效方法
我遇到了一个有趣的问题,我需要遍历多个大型 XML 文件(每个文件为数百 MB)并从每个元素中输出特定数据,并尽可能快地完成。例子:
点数.xml:
路由.xml:
在不同的文档中有数以万计的点/路线元素,它们比这复杂得多,但对于这个例子,这个摘录就足够了。
输出需要是这样的:
我不能自己修改文档,这是我必须处理的,现在的问题是 - 如何尽可能有效地根据标识符链接元素?我说的是这样做的方法,也许是一种不同的思考方式,而不是实际的代码,因为无论如何它最终都会完全不同。
我尝试循环遍历路线,然后使用 FLWOR 找到点:
效果不太好(花了将近一个小时才完成)。这种方法也有类似的故事:
最后,我需要在输出中使用来自点/路由的更多子元素,所以我认为我必须使用 for 迭代它们,然后连接输出,但也许我错了,这就是我在这里问的原因。
有没有我忽略的东西,或者根本没有更快的方法来做到这一点?
sql-server - 使用 FLWOR XQuery 返回多个 XML 节点和自定义父标记
我需要使用 FLWOR 表达式获得以下输出。
使用
我尝试了以下查询
这并没有给我预期的输出来找到Year < 1970
.
如何将自定义父节点设置为<oldPlanes>
如何返回 2 个节点作为预期输出?
sql-server - 使用 XQuery 连接 XML 节点
我需要以下输出
使用以下 XML 和 XQuery FLOWR 表达式。
我尝试了以下查询。但它返回不同的输出。
json - 将 XPath 语句添加到 FLOWR 以从 Twitter 数据库中选择“id”节点
查看twitter数据库的“id”字段:
我如何从FLWOR
语句中得到相同的结果?
它将所有内容包装在<result>
标签中,但仍提供每个节点。如何选择“id”节点?尝试变化:
没有积极的结果。也许是因为JSON
混合在一起?
xml - 使用主键从 BaseX 中删除重复的实体
如何删除重复条目?
在这种情况下,Twitter 使用雪花作为JSON
推文中的唯一 ID 字段,如下所示。按 ID建立推文索引,并删除每个附加$tweet
的重复项?但是如何不递归地删除每一条推文......?
一个简单 FLWOR
的打印数据库中每条推文的 ID:
结果:
这里的重复是故意的,但正在寻找某种“清理”数据库的方法。
只是寻找一个大致的轮廓或方法。我的想法是将输出从一个管道传输xquery
到另一个,但我被困在如何构建索引上。大概这是数据库本身内置的功能,只需要利用正确的模块(可能)。
--
这看起来至少会返回一个不同的结果:
虽然我不太确定它是所有id__str
值的集合。
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
xml-parsing - 如何将嵌套的 XML 转换为 CSV?
XML
虽然在这一点上并不严格,但希望将“列表”转换为可用于XML
切碎的东西,因此更像是一张桌子。适合导入电子表格或SQL
数据库中的表格。
这个输入如何:
- 人们
- 乔
- 起诉
- 爱丽丝
- 电话1
- 电话2
- 电话3
- 细胞4
- 主页5
- 属性6
- x7
- y9
- z10
转换为如下结构:
重要的是“名称”在第一列,其他“属性”在以下任何列CSV
或类似的列中,或可导出的东西CSV
。它不一定是CSV
,也许只是可以转换成这样的结构,BaseX
因为CSV
通过GUI
.
也许:
虽然对于这个特定的数据,我更喜欢前者。