如何删除 XQuery 中的重复节点?

2024-03-17

我有一个动态生成的 XML 文档,我需要一个函数来消除其中的任何重复节点。

我的函数如下所示:

declare function local:start2() {
    let $data := local:scan_books()
    return <books>{$data}</books>
};

示例输出为:

<books>
  <book>
    <title>XML in 24 hours</title>
    <author>Some Guy</author>  
  </book>
  <book>
    <title>XML in 24 hours</title>
    <author>Some Guy</author>  
  </book>
</books>

我只想要我的书籍根标签中的一个条目,还有其他标签,例如其中的小册子,也需要删除重复项。有任何想法吗?


更新了以下评论。我所说的唯一节点是指删除多次出现的具有完全相同内容和结构的节点。


一种更简单、更直接的单行 XPath 解决方案:

只需使用以下 XPath 表达式:

  /*/book
        [index-of(/*/book/title, 
                  title
                 )
                  [1]
        ]

例如,当应用于以下 XML 文档时:

<books>
    <book>
        <title>XML in 24 hours</title>
        <author>Some Guy</author>
    </book>
    <book>
        <title>Food in Seattle</title>
        <author>Some Guy2</author>
    </book>
    <book>
        <title>XML in 24 hours</title>
        <author>Some Guy</author>
    </book>
    <book>
        <title>Food in Seattle</title>
        <author>Some Guy2</author>
    </book>
    <book>
        <title>How to solve XPAth Problems</title>
        <author>Me</author>
    </book>
</books>

上面的 XPath 表达式正确选择以下节点:

<book>
    <title>XML in 24 hours</title>
    <author>Some Guy</author>
</book>
<book>
    <title>Food in Seattle</title>
    <author>Some Guy2</author>
</book>
<book>
    <title>How to solve XPAth Problems</title>
    <author>Me</author>
</book>

说明很简单:对于每一个book,仅选择其出现之一——这样它的索引就在全书与其第一个索引相同title in 所有标题.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何删除 XQuery 中的重复节点? 的相关文章

随机推荐

  • 阻止用户使用 jquery 或 javascript 重新加载页面 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 jQuery Javascript 防止任何形式的页面刷新 https stackoverflow com questions 3527041 prevent any form of page
  • 如何摆脱“打印中的宽字符”?

    我有文件 tmp xxx与下一个内容 00000000 D0 BA D0 B8 D1 80 D0 B8 D0 BB D0 B8 D0 BA 当我读取文件内容并打印它时 出现错误 Wide character in print at 来源是
  • scikit-learn 中预计算内核的网格搜索中的嵌套交叉验证

    我有一个大小为 NxN 的预先计算的内核 我使用 GridSearchCV 来调整 SVM 的 C 参数 其中 kernel precompulated 如下 C range 10 np arange 2 9 param grid dict
  • PCL 上的 TPL,适用于 PCL 配置文件 78 的 MvvmCross

    尝试使用PCL for mvvmcross通过 Profile 78 与 TPL 合作 关于问题mvvmcross 的 PCL 上的 TPL https stackoverflow com questions 16914738 tpl on
  • Spring Boot + JPA2 + Hibernate - 启用二级缓存

    我使用 Spring Boot 1 2 5 和 JPA2 来注释实体 并将 hibernate 作为底层 JPA 实现 我想在该设置中使用二级缓存 因此实 体被注释为 javax persistence Cacheable 我还在 appl
  • Mac OS Xocks代理环境变量

    我知道可以通过网络应用程序设置袜子代理服务器 并且有一个 Mac 特定实用程序可以设置它 但如果可能的话 我更喜欢将袜子代理服务器设置为环境变量 有谁知道合适的export环境 如果有人想知道这对于 http 代理来说是可能的 例如 exp
  • NodeJS 和 C# 中的 AES256 加密/解密

    我对以下问题的结果采取了一些自由态度 NET 中的 AES 加密并使用 Node js 加密解密 https stackoverflow com questions 17306552 aes encrypt in net and decry
  • 图中轴标签隐藏了轴标签吗?

    我正在尝试制作极坐标 sypder 图 但轴标签存在一些问题 x 轴刻度标签似乎总是位于 y 轴网格下方的一层上 字母被网格线覆盖 如下图所示 我希望它们位于顶部 我尝试设置 zorder 但没有成功 如果我将绘制的线的 zorder 设置
  • 从后台进程重定向 stdout 和 stderr

    我有一个名为 foo 的脚本 它运行程序 a exe 并将计时统计信息发送到文件 time log bin bash date 1 gt gt time log time a exe 2 gt gt time log 如果我在终端后台运行脚
  • 将现有 SVN 项目导入 Eclipse

    我在 C 盘上有一个文件夹 该文件夹已从 SVN 中签出 在该文件夹的某个位置 我有一个 Eclipse 项目文件夹 它已经在 SVN 存储库中 我启动了 Eclipse 导入了该项目 但我不知道如何将它连接到 SVN 当我正在做一个CVS
  • PDFBox - 如何创建目录

    有没有办法使用创建目录Java PDFBox图书馆 目录应该是可点击的 跳转到右侧页面 Thanks 没有简单的方法可以做到这一点 但这里有一个方法 我还没有弄清楚如何将链接直接附加到文本 所以我的方法意味着您必须将注释分别绘制为矩形和文本
  • blockui 优于 jQueryUI 模式对话框

    我无法让 BlockUI 在模式对话框上工作 我尝试解决 z index 问题 但没有成功 在我的网页中 这是标题
  • 如何在XtraReport中使用子报表?

    我有一份主要报告 其中包括 详细报告 Transaction Amount Due PaymentType Money Tendered 我还有另一份报告 其中包含订购的物品 物品报告 Transaction ItemName Quanti
  • Python“所有其他元素”习语[重复]

    这个问题在这里已经有答案了 我觉得我花了很多时间用 Python 编写代码 但没有足够的时间创建 Pythonic 代码 最近我遇到了一个有趣的小问题 我认为可能有一个简单 惯用的解决方案 解释一下原文 我需要收集列表中的每个连续对 例如
  • 正在分析的二进制文件必须是可执行文件

    我正在尝试上传一个应用程序供 Apple 审核 但不确定我做错了什么而收到此错误消息 二进制文件必须是可执行文件 zip 文件名看起来应有的样子 项目名称中没有可见的空格 路径末尾的名称除外 示例 ProjectName app zip P
  • 为什么单例类很难测试?

    有效的Java第 3 条 使用私有构造函数或枚举类型强制执行单例属性 指出 将类设置为单例可能会使测试其客户端变得困难 因为不可能用模拟实现替代单例 除非它实现了充当其类型的接口 出于测试目的 为什么实例化一个单例实例并测试其 API 还不
  • 在 chrome 开发工具中隐藏 401 console.error 在 fetch() 调用时获取 401 [重复]

    这个问题在这里已经有答案了 我有一些代码可以进行提取调用 这利用了现代 chrome firefox 中内置的 window fetch api 该代码有时会出现 401 未经授权的响应 这是正常的 我希望忽略它 我可以通过代码流来做到这一
  • 从 Dock 中删除 AppleScript 脚本的图标

    如何隐藏正在运行的 AppleScript 的停靠栏图标 并仅将应用程序保留在菜单栏中 要隐藏应用程序使其不显示在 Dock 中 您需要修改应用程序内的 Info plist 文件 最简单的方法是在 Finder 窗口中选择应用程序 按住
  • numpy 中两个二维掩码数组的快速内积

    我的问题如下 我有两个数组X and Y形状为 n p 其中p gt gt n 例如 n 50 p 10000 我也有口罩mask 大小为布尔值的一维数组p 关于p of small密度 例如np mean mask 为 0 05 我尝试尽
  • 如何删除 XQuery 中的重复节点?

    我有一个动态生成的 XML 文档 我需要一个函数来消除其中的任何重复节点 我的函数如下所示 declare function local start2 let data local scan books return