使用 xslt 删除 xml 中的重复项

2023-12-07

我需要删除以下 xml 中的重复项:

<ListOfRowIDWithListOfBooks xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
  <RowIDWithListOfBooks>
    <Row_ID>ADOA-XssK</Row_ID>
    <ListOfBookInfo>
      <book>
        <BookType>Brand</BookType>
        <BookName>jon</BookName>
      </book>
      <book>
        <BookType>Brand</BookType>
        <BookName>jon</BookName>
      </book>
    </ListOfBookInfo>
  </RowIDWithListOfBooks>
</ListOfRowIDWithListOfBooks>

有人可以帮忙吗?


使用标准分组解决方案可以轻松完成此任务。不要使用单个 select 语句来执行众所周知会导致性能问题的操作。

Note参考identity.xsl只需将众所周知的包含到样式表中即可身份转变模板。

[XSLT 1.0]

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:key name="k-books" match="book" use="concat(BookType,'|',BookName)"/>

    <xsl:include href="identity.xsl"/>

    <xsl:template match="ListOfBookInfo">
        <ListOfBookInfo>
            <xsl:copy>
                <xsl:apply-templates select="book
                [generate-id()
                =generate-id(key('k-books',concat(BookType,'|',BookName))[1])]"/>
            </xsl:copy>
        </ListOfBookInfo>
    </xsl:template>

</xsl:stylesheet>

[XSLT 2.0]

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:include href="identity.xsl"/>

    <xsl:template match="ListOfBookInfo">
        <ListOfBookInfo>
            <xsl:for-each-group select="book" 
                group-by="concat(BookType,'|',BookName)">
                <xsl:apply-templates select="."/>
            </xsl:for-each-group>
        </ListOfBookInfo>
    </xsl:template>

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

使用 xslt 删除 xml 中的重复项 的相关文章

随机推荐

  • R:根据多个变量的值定义不同的模式[重复]

    这个问题在这里已经有答案了 这是我所拥有的 data frame x c 0 0 0 1 1 1 y c 0 0 1 0 1 1 x y 1 0 0 2 0 0 3 0 1 4 1 0 5 1 1 6 1 1 这就是我想要的 data fr
  • .net:有没有办法从下到上读取txt文件? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在C 中使用迭代器反向读取文本文件 我想知道是否有一种方法可以从下到上读取文本文件而不会造成任何性能损失 即 readLine movenext 方法 但相反 这种事情在 net 中可能吗 为了让
  • python:utcfromtimestamp 与 fromtimestamp,当时间戳基于 utcnow() 时

    很确定这是一件容易的事 但我不明白 我当地的 TZ 目前是 GMT 3 当我从datetime utcnow timestamp 这确实比我少了3个小时datetime now timestamp 在我的流程中的另一个过程中 我采用 utc
  • 在 Magento 之外但在同一域中获取购物车内容

    我需要以某种方式使 Magento 商店中当前的购物车和客户信息可供 Magento 之外的网站的其余部分访问 例如 mysite com blog 位于 mysite com store 之外 在我的域的基础上 我运行了这段代码 但它只返
  • 重命名数据帧切片上的列未按预期执行

    我试图清理数据框中的列名 但只是清理一部分列 当尝试以某种方式替换数据帧切片上的列名称时 它不起作用 为什么呢 假设我们有以下数据框 Note 底部是可复制的代码来重现数据 Value ColAfjkj ColBhuqwa ColCouiq
  • 为什么 awk 中的“1”打印当前行?

    In 这个答案 awk 2 no 3 N A 1 file 被接受了 请注意1在 AWK 脚本的末尾 答案的作者在评论中说 1 是 一种显示当前行的神秘方式 我很困惑 这是如何运作的 In awk Since 1总是评估为true 执行默认
  • 将 NSArray 转换为 JSON 对象数组

    我想从 resultsArray 创建一个 JSON 对象数组 NSMutableArray resultsArray NSMutableArray array FMResultSet resultsSet database execute
  • 请求的资源上不存在“Access-Control-Allow-Origin”标头

  • jQuery-UI 对话框内存泄漏

    我正在使用 IE7 和一些 jQuery 对话框 每个打开的对话框都会遇到大约 6meg 的泄漏 我假设这与关闭有关 但到目前为止我为删除它们所做的一切都没有帮助 此时 我认为我已经处理了除传入的回调函数之外的所有闭包 但即使在关闭并删除对
  • 在 iOS 中从 Internet URL 或本地文件播放 .mp4 或 .mov 视频?

    我怎样才能玩 mp4 or mov视频来自任一Internet URL or a local file in iOS 如何在集合视图控制器中添加多个视频 试试这个 MPMoviePlayerController NSArray paths
  • 地图 API 不适用于 HTML 中的 Windows Phone

    最近遇到这个奇怪的问题 我更像是一名网络程序员 而且我才刚刚涉足应用程序开发 我一直在尝试使用 HTML 在 Windows Phone 8 1 上开发这个地图应用程序 但遇到了一个问题 当我尝试集成 Bing 地图时 我应该将其作为脚本添
  • Typeahead.js - 无法选择建议

    我一定是个白痴 我正在使用Typeahead js插入 我正在尝试使用自定义模板来获取建议 当我的自定义模板出现时 我无法使用箭头键实际选择项目 如果我将鼠标悬停在某个项目上 该选择也不会突出显示 我认为这可能只是一个样式问题 但是 如果出
  • iOS 中的富文本编辑器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个示例项目 它应该具有基本的富文本编辑功能 粗体 斜体 下划线 对齐 附加图像 我浏览了谷歌搜索结果 有几个编辑器可供使用iOS但这些都是通过使用开发的UIWebView
  • .NET 2.0 Web 应用程序身份验证失败:“提供的票证无效”

    我有一个 NET 4 0 应用程序和一个 2 0 应用程序作为子应用程序 Web 应用程序不在多服务器环境中 只有一台服务器参与服务这些请求 两个应用程序都使用自定义身份验证 并且两个应用程序具有相同的machineKey属性和值 当我访问
  • 如何使用 Node.js 创建不存在的目录

    如果目录不存在 以下创建目录的正确方法是吗 它应该具有脚本的完全权限并且可供其他人读取 var dir dirname upload if path existsSync dir fs mkdirSync dir 0744 对于个人目录 v
  • MySQL - 在 WHERE 子句中使用 COUNT(*)

    我正在尝试在 MySQL 中完成以下任务 请参阅pseudo code SELECT DISTINCT gid FROM gd WHERE COUNT gt 10 ORDER BY lastupdated DESC 有没有办法在 WHERE
  • 设置独立于模型名称的种类名称(App Engine 数据存储区)

    作为一名 Python 程序员 我喜欢我的代码是可重用的 我试图避免代码中的种类名称冲突 其中两个不同的模型共享相同的种类名称 目前 我只是在模型的类名前面添加一些有意义的文本 但这非常不符合Python风格 能够显式设置模型的种类将解决我
  • 如何自动升级 Firebreath 插件

    最近 我使用 Firebreath 编写了一个跨浏览器插件 并为所有浏览器制作了一个安装程序 我在 stackoverflow 中搜索了自动插件安装 并找到了很多很好的答案 FireBreath插件自动安装 在网页上部署 Firebreat
  • 如何识别 html5 媒体元素已停止并等待进一步的媒体继续播放

    我正在与MediaSource and SourceBuffer播放 html5 视频 我按顺序获取 DASH 片段以继续不间断的视频播放 但有时 由于网络状况 SourceBuffer数据耗尽无法继续游戏 当该数据到达时 比赛将继续 但在
  • 使用 xslt 删除 xml 中的重复项

    我需要删除以下 xml 中的重复项