根据相同的子值 (ID) 合并两个不同的父节点内容 - XSL 转换

2024-03-26

我找不到这个特定的场景(我猜我无法用英语正确描述它)。

输入 XML 看起来像这样(当然,“listOne”和“listTwo”内有多个项目:

<root>

   <listOne>

      <listOneItem>
         <ID>1</ID> // Always Unique
         <SKU>ABC</SKU>
      </listOneItem>

   </listOne>

   <listTwo>

      <listTwoItem>
         <ID>1</ID> / Identical to node in listOneItem, but unique (no scenario of a third element with such ID)
         <STOCK>10</STOCK>
      </listTwoItem>

   </listTwo>

</root>

所需的输出应基于相同的子“ID”节点值合并“listOne”和“listTwo”项:

<root>

   <finalItemsList>

     <item>

       <ID>1</ID>
       <SKU>ABC</SKU>
       <STOCK>10</STOCK>

     </item>

   </finalItemsList>

</root>

XSLT 有一个内置的key https://www.w3.org/TR/xslt20/#key解决交叉引用的机制:

XSLT 1.0

<xsl:stylesheet version="1.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="list2" match="listTwoItem" use="ID" />

<xsl:template match="/root">
    <root>
        <finalItemsList>
            <xsl:for-each select="listOne/listOneItem">
                <item>
                    <xsl:copy-of select="*"/>
                    <xsl:copy-of select="key('list2', ID)/STOCK"/>
                </item>
            </xsl:for-each>
        </finalItemsList>
    </root>
</xsl:template>

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

根据相同的子值 (ID) 合并两个不同的父节点内容 - XSL 转换 的相关文章

随机推荐

  • Pandas 按 Zscore 过滤每组异常

    我有一个数据框 其中的 组 列可以有 50 个不同的值 还有一个数字 值 列 一个例子可以是 pd DataFrame group a b c a a b a c c value 2 123 4 2 3 2 5 127 128 4 0 00
  • 如何在sparkR中绑定两个数据框列?

    如何在spark 1 4的SparkR中绑定两列dataframe 蒂亚 阿伦 没有办法做到这一点 这是一个关于scala中的spark 1 3 的问题 能够做到这一点的唯一方法是使用某种 row numbering 因为这样您就可以加入
  • Rails 用范围扩展领域,PG 不喜欢它

    我有一个小部件模型 小部件属于 Store 模型 Store 模型属于 Area 模型 Area 模型属于 Company 在公司模型中 我需要找到所有关联的小部件 简单的 class Widget lt ActiveRecord Base
  • 如何子类化 UITextField 并重写 drawPlaceholderInRect 来更改占位符颜色

    我有一个 3UITextField与占位符文本集 在其中之一UITextField我希望占位符文本为红色 现在 在谷歌搜索之后 似乎最好的方法是子类化 UITextField 并覆盖drawPlaceholderInRect 我如何进行子类
  • 在只有一个键的哈希中查找键名?

    如果我有一个哈希 my h secret gt 1 我知道这只是哈希中的一个键 但我不知道它叫什么 然后我是否必须迭代该哈希 my key foreach my i keys h key h i 或者有更好的方法来获取密钥的名称吗 A 列表
  • 如何从另一个分支获取一个文件

    我有一个main带有名为的文件的分支app js 我对此文件进行了更改experiment branch 我只想应用所做的更改app js from experiment到main branch git checkout main firs
  • mov ah、word_variable 上的“无效指令操作数”以及在 16 位数字上使用 imul

    这是我想要实现的目标 a x b x a y b y a z b z 我正在尝试在汇编中创建一个宏来执行上述计算 我在用WORDs 代表我所有的号码 这是我的代码 dotProduct MACRO A X A Y A Z B X B Y B
  • 在沙箱中运行插件

    我正在设计一个 C C 系统 可以使用各种插件进行扩展 有一个定义良好的 C 公共 API 主要适用于 const char 和其他指针类型 插件被编译成 so 或 dll 文件 主应用程序在启动时加载它们 然后根据请求卸载或重新加载它们
  • Java 的单文件、持久、排序键值存储(Berkeley DB 的替代方案)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Berkeley DB JE 许可可能是交易杀手 我有一个面向一小部分客户的 Java 应用程序 但由
  • 如何使 .NET 反射与动态生成的对象一起工作? [复制]

    这个问题在这里已经有答案了 看下面的例子 void Main APPROACH 1 With an anonymous type var myObject new Property1 PropertyValue1 WORKS Propert
  • 如何防止 EMR Spark 步骤重试?

    我有一个 AWS EMR 集群 emr 4 2 0 Spark 1 5 2 我在其中从 aws cli 提交步骤 我的问题是 如果 Spark 应用程序失败 则 YARN 会尝试再次运行该应用程序 在相同的 EMR 步骤下 我怎样才能防止这
  • PHP 日期转换为 strtotime

    我有一个array其中每条记录都有一个 date 场地 日期的格式如下 10 09 2015 当我使用strtotime在这些日期 其中一些结果是false 我认为数据结构中有错误 所以我创建了这个简单的array和一个简单的foreach
  • C++:cin while cout [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 好吧 我正在用 C 编写一个聊天程序 以便在 Linux 终端中使用 我希望在打字时也能收到消息 基本上 非阻塞cin
  • 开源 C/C++ 数学表达式解析器库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • file_get_contents(): php_network_getaddresses: getaddrinfo 失败

    我正在尝试使用 cron 作业将一些值从一台服务器更新到另一台服务器 我使用 file get contents 奇怪的是 这偶尔会失败 一分钟还可以 一分钟就不行了 我收到这两个错误 PHP 警告 file get contents ph
  • 升级到 ASP.NET MVC 版本 2

    我今天一直在 ASP NET MVC 项目上做一些工作 我尝试发布该网站 但出现错误 我的托管服务提供商告诉我 这是因为我拥有版本 1 而他们支持版本 2 我怎样才能升级到版本2 两个版本之间的差异是否如此巨大以至于后续版本不支持先前版本
  • GoogleUser 对象没有 grantOfflineAccess 方法?

    我在用谷歌登录 https developers google com identity sign in web reference对我网站上的用户进行身份验证 然后作为单独的步骤请求离线权限 根据文档 GoogleUser对象应该有一个方
  • 用户使用 FOSUserBundle 更新配置文件时忽略密码

    我正在使用 FOSUserBundle 并且正在尝试创建一个允许用户更新其用户个人资料的页面 我面临的问题是 如果用户不想更改 更新密码 我的表单不要求用户重新输入密码 因此 当用户使用空密码提交表单时 数据库将使用空字符串进行更新 并且用
  • .NET Core 中的 Kustos 连接字符串问题

    我想访问 Kusto 数据库 而无需硬编码密码或任何应用程序密钥 它与 NET Framework 完美配合 以下是代码 var serviceName help var authority contoso com Or the AAD t
  • 根据相同的子值 (ID) 合并两个不同的父节点内容 - XSL 转换

    我找不到这个特定的场景 我猜我无法用英语正确描述它 输入 XML 看起来像这样 当然 listOne 和 listTwo 内有多个项目