使用 xslt 比较两个 xml 文件

2023-12-03

我有两个 XML 文件:

文件“a”:

<?xml version="1.0"?>
 <catalog>
  <cd>d</cd>
  <cd>e</cd>
  <cd>f</cd>
  <cd>c</cd>
</catalog>

文件“b”:

<?xml version="1.0"?>
<catalog>
  <cd>a</cd>
  <cd>b</cd>
  <cd>c</cd>
</catalog>

我想比较文件b针对文件a并获取仅存在于文件中的那些记录b.

即预期输出是:

<?xml version="1.0"?>
 <catalog>
  <cd>a</cd>
  <cd>b</cd>
</catalog>

如果您可以使用 XSLT 2.0,那么可以通过使用key。假设您正在处理“b”文件:

XSLT 2.0

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:key name="cd" match="cd" use="." />

<xsl:template match="/catalog">
    <xsl:copy>
        <xsl:copy-of select="cd[not(key('cd', ., document('a.xml')))]"/>
    </xsl:copy>
</xsl:template>

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

使用 xslt 比较两个 xml 文件 的相关文章

随机推荐

  • 如何查看 Maven 在部署期间发送到服务器的内容?

    我正在尝试使用 Github 的新 Actions CI 服务器将包部署到 Github 的新包功能 进展不顺利 我认为一切都设置正确 但我收到此错误 Failed to execute goal org apache maven plug
  • Unpivot SQL 事物

    我有一些数据 例如 Chocolate Strawberies Oranges 2 3 1 4 2 4 我如何得到回来 Chocolate 2 Chocolate 4 Strawberies 3 Strawberies 2 Oranges
  • 动态 Linq + 实体框架:动态选择的日期时间修改

    我正在尝试找到一种方法 在进行 sql 分组之前将 UTC 时间移至本地 我正在使用 System Linq Dynamic 在这里管理https github com kahanu System Linq Dynamic 它非常适合进行动
  • Galaxy Nexus 上的 Toast 大小

    当我在应用程序中使用 toast 时 尺寸非常非常小 但当另一个应用程序显示吐司时 大小是正常的 如高级任务杀手 或短信 我需要做什么才能得到正常大小的吐司 我有 Galaxy Nexus ICS 4 0 1 我的应用程序使用 SDK AP
  • 获取状态 -1 而不是 401 Angularjs

    我正在尝试从服务器获取响应 该函数看起来是这样的 function getOverview var req method GET url base headers authorization Bearer GottenTokens getS
  • 将 MySQL 数据与易用性解耦

    假设一个简单的酒店预订数据库包含三个表 表 1 预订该表包含入住和退房日期以及一间或多间客房的参考信息和优惠券 如果适用 表 2 房间该表包含所有酒店房间的数据 包括每晚的价格和床位数量 表 3 优惠券该表保存了所有优惠券的数据 选项1 如
  • 如何避免“if”链?

    假设我有这个伪代码 bool conditionA executeStepA if conditionA bool conditionB executeStepB if conditionB bool conditionC executeS
  • Android静默更新apk,然后重新启动应用程序

    好吧 首先我想澄清一下 我并不是想达到任何可疑的目的 我们有自己的企业应用程序 仅适用于我们自己的硬件 我们不使用 Google Play 商店 手机也已root 我已经实现了我们自己的Apk更新机制 到目前为止 我已经使用下面的代码成功地
  • Pandas:使用最后可用的值填充缺失值

    我有一个数据框如下 A B zDate 01 JAN 17 100 200 02 JAN 17 111 203 03 JAN 17 NaN 202 04 JAN 17 109 205 05 JAN 17 101 211 06 JAN 17
  • 解决 Solaris 上未声明的 -llapack 依赖性问题

    我已经发布了一个R封装在CRAN这取决于一些成功编译RcppArmadillo代码 该包构建正确 并且在我尝试过的所有测试系统上没有任何注释 如果有兴趣 CRAN 在这里评论 但是 CRAN 检查失败solaris sparc并且无法加载依
  • NSOutlineView 更改披露图像

    在我的大纲视图中 我正在添加自定义单元格 为了绘制自定义单元格 我正在引用 Cocoa 文档中提供的示例代码 http www martinkahr com 2007 05 04 nscell image and text sample 我
  • 无法链接最小的 Lua 程序

    我有以下简单的 Lua 程序 是从 Programming In Lua 一书中复制的 include
  • 如何在 python 中将现有的 google chrome 配置文件与 selenium chrome webdriver 一起使用?

    我需要加载我完整的现有 google chrome 配置文件以及我登录 google 和网站帐户的所有 chrome 扩展 我正在努力处理这段代码 某处存在语法错误 chrome options Options chrome options
  • Flash 未在 Rails 中的同一视图中显示

    成功更新对象后 我需要在同一视图 编辑 中显示 Flash 如果我重定向到另一个操作 一切正常 但是当我需要留在 edit 时 不起作用 有人可以向我解释一下我的错误是什么吗 谢谢 我的控制器中有以下代码片段 def edit settin
  • 多重计数和分组依据

    我有一个与此类似的数据库 MySQL 5 5 ID Name Page Visited Date 1 Tim Page A 11 2 2000 1 Tim Page B 11 3 2000 1 Tim Page B 11 3 2000 2
  • 用于在 Excel 中使用正则表达式的通用 UDF

    我需要每周解析和总结数千行文本 Excel 通配符不够灵活 我想删除粘贴到 Notepad 进行处理或输入脚本的额外步骤 这是我想出的工具 它们仍然有点慢 在公司笔记本电脑上可能每秒 3000 行 但它们很方便 RXMatch 返回第一个匹
  • setInterval 和更新值 AngularJS

    基于更改变量的值 我希望在 html 中显示错误消息 我从我的角度代码调用一个 api 如果它返回错误 我设置了一个 setInterval 函数 该函数应该将 bookingData tracking id 更新为 false 然后在 h
  • 使用什么来创建快速且简单的安装文件?

    我正在考虑帮助一个开源游戏项目创建他们的安装文件 该游戏目前大小约为 300 MB 打包为 zip 文件 解压后即可直接玩 该 zip 文件包含适用于 Windows Mac 和 Linux 的单独可执行文件以及在所有 3 个平台上使用的压
  • 从缓冲区创建的 NSData 创建 UIImage 返回 nil?

    我正在尝试变暗UIImage通过抓住CGImage 获取每个像素并减去0xa然后将每个像素保存到新的缓冲区中 但是当我尝试将该缓冲区作为图像加载回来时 函数 创建 CGImage 返回nil 这意味着我一定在我的代码中做错了什么 我不会感到
  • 使用 xslt 比较两个 xml 文件

    我有两个 XML 文件 文件 a