使用 XSLT 更改 XML 元素名称

2023-11-30

我正在尝试更改 XML 节点名称,但它不允许我这样做。在下面的代码中,我有两个模板 1.更改节点名称 2.为 DocumentReference 创建父节点。请参阅我的 XML 和 XSLT。

My XML

  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <DataArea>
    <PurchaseOrder>
        <PurchaseOrderLine>
            <DocumentReference>
                <DocumentID>
                    <ID>23423</ID>
                </DocumentID>
            </DocumentReference>
            <DocumentReference>
                <DocumentID>
                    <ID>23424</ID>
                </DocumentID>
            </DocumentReference>
            <Item>
                <CustomerItemID>
                    <!-- ArtNr -->
                    <ID>444</ID>
                </CustomerItemID>
            </Item>
            <Quantity unitCode="PCE">17.3</Quantity>
        </PurchaseOrderLine>
    </PurchaseOrder>
  </DataArea>

预期结果

  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <DataArea>
    <PurchaseOrder>
        <POL>
            <DocumentReference>
                <DocumentID>
                    <ID>23423</ID>
                </DocumentID>
            </DocumentReference>
            <DocumentReference>
                <DocumentID>
                    <ID>23424</ID>
                </DocumentID>
            </DocumentReference>
            <Item>
                <CustomerItemID>
                    <!-- ArtNr -->
                    <ID>444</ID>
                </CustomerItemID>
            </Item>
            <Quantity unitCode="PCE">17.3</Quantity>
        </POL>
    </PurchaseOrder>
  </DataArea>

My XSLT

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

  <xsl:template match="@*|node()">
    <xsl:copy>
       <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
   </xsl:template>   

   <xsl:template match="PurchaseOrderLine">
      <POL>
        <xsl:apply-templates />
      </POL>
  </xsl:template>  

  <xsl:template match="PurchaseOrderLine">
        <xsl:copy>
        <Kiran>
            <xsl:apply-templates select="@*|DocumentReference"/>
        </Kiran>
        <xsl:apply-templates select="@*|Item|Quantity"/>
    </xsl:copy>
  </xsl:template>   

  </xsl:stylesheet>

那么我想你希望模板看起来像

<xsl:template match="PurchaseOrderLine"> 
  <POL> 
    <xsl:apply-templates select="@*"/>
    <Kiran>
      <xsl:apply-templates select="DocumentReference"/>
    </Kiran>
    <xsl:apply-templates select="node() except DocumentReference" />
  </POL> 
</xsl:template>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XSLT 更改 XML 元素名称 的相关文章

随机推荐

  • iOS 8.1 自动旋转

    在我的项目中 我检查了我需要的所有方向类型 这在 iOS 7 1 上工作正常 但在 iOS 8 1 上无法正常工作 在 iOS 8 1 中 当我以纵向或横向模式打开应用程序时 它工作正常 但在使用过程中我旋转设备时 只有状态栏会更改旋转 我
  • Rails 3/delayed_job - Wanted:延迟邮件的基本示例

    我一直在试图弄清楚如何使用elasted job和rails 3发送延迟邮件 我已经尝试了几乎所有我能想到的可行可能性的组合 我可以让邮件在后台运行 我就是可以 不要让它延迟发送到未来的时间 数据库中的delayed jobs表清除任务 日
  • 如何自动检测Excel中的表格

    我有一本工作簿 其中包含大约 40 个表格 每个文件中的表格都非常混乱 因此您永远不知道表格可能位于工作表中的位置 在某些工作表中 您甚至可能有 2 个或 3 个表 此外 这些表非常非结构化 因此您无法知道行索引或列索引总是在哪里 我确实需
  • 在 DOS 中获取没有回显的键盘输入

    我正在制作游戏 Connect Four 玩家必须输入 1 4 之间的数字 以便圆盘落入其中一列 我目前正在研究第一专栏 问题是你可以输入任何字符并且它会起作用 它只需要在你按 1 时起作用 并且我不知道如何修复它 此外 该数字出现在屏幕左
  • 使用 crontab 执行 php

    我正在尝试按计划运行 php 脚本 所以我认为 crontab 是个好主意 我使用的服务器是Linux 我不太熟悉 所以我遇到的问题是 我不知道如何使脚本从 php 可执行 我需要引用该脚本 或者将其放入可以从命令行运行 php 的文件夹中
  • Jquery - 单击外部或单击另一个下拉列表时关闭下拉列表/删除活动类

    我刚刚创建了自己的 jquery 插件 并且有一个下拉菜单 可以在单击自身时切换 活动 类 我只想在单击元素外部或单击其他下拉列表时删除 活动 类 每个下拉菜单都有不同的标记 但具有相同的类 我通过调用以下命令通过 jquery 初始化了它
  • 如何将“打印”输出重定向到文件?

    我想使用 Python 将打印重定向到 txt 文件 我有一个for循环 这将print我想要重定向时每个 bam 文件的输出all输出到一个文件 所以我尝试输入 f open output txt w sys stdout f 在我的脚本
  • 如何转义正则表达式中所有具有特殊含义的字符

    我只是偶然发现了以下内容 但我无法完全理解 当你在 Ruby 中创建一个新的正则表达式时 如下所示 Regexp new http www example com 它将输出以下内容 http www example com 这是正确的 但没
  • 这里地图位置指针罗盘头?

    这里地图追随者确实可以将指南针头应用于map getPositionIndicator setVisible true 如果是 请分享我的答案 理论上 您可以更改位置指示器的图像 但不支持旋转图像 因此您需要永久替换图像 总而言之 我想说
  • 在工具提示格式化程序中创建图表

    我尝试创建一个内部格式化程序 工具提示配置 在其中我尝试动态创建图表 但未能实现 有什么好主意吗 在工具提示内创建新容器formatter 并且还创建新图表 重要的部分是创建图表after渲染工具提示 例如使用setTimeout Also
  • 在同一页面中在 ColumnDocumentRenderer 和 DocumentRenderer 之间切换?

    我正在使用 iText7 测试一些东西 我有一个场景 我需要在顶部有 DocumentRenderer 段落 然后在同一页面上在其正下方启动 ColumnDocumentRender 2 列 我遇到的问题是 当我更改同一页面上的内容时 它会
  • 测试变量是否是只读的

    要测试变量是否是只读的 有以下丑陋的技巧 True if readonly readonly p egrep declare lower var False if readonly temp var eval var x 2 gt dev
  • 如何删除链表中连续的两项

    void delete double LN
  • 再次:在 Windows 上安装 Z3 + Python

    中指出的安装问题先前的问题仍然存在 我尝试在Windows XP SP3 32位和Windows 7 64位下安装Z3 4 3 0和4 1 这些组合都不起作用 我能够做到 from z3 import 但是init Z3 dll 的失败 我
  • 用于跨浏览器事件支持的轻量级库[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 跨浏览器处理有时相当麻烦 在这种情况下 我需要捕获相当多的事件 但无法使用超过10ish Kb 例如 jQuery Prototype Dojo Y
  • 如何从 WebForms 重定向到 MVC 视图?

    我在 MVC 应用程序中使用 ASP net WebForm 我需要从 WebForm 按钮单击事件重定向到 MVC 视图或控制器中的 ActionResult 方法 有没有办法做到这一点 public ActionResult Index
  • ASP JSON:对象不是集合

    我应该如何从该 JSON 中检索 PitcherID 我正在使用来自的课程http aspjson com JSON PitcherID 456068 PitcherID 431148 Code oJSON loadJSON For Eac
  • Python pool.map/ Multiprocessing 的 Java 等效项

    我想知道是否有人可以向我指出 java 中 python 多处理模块的简单等效项 我有一个简单的并行处理场景 没有 2 个进程交互 获取一个数据集并将其分成 12 个 然后将 java 方法应用于 12 个数据集 收集结果并将它们加入到具有
  • 如何在 Windows 上从命令行运行 Java 程序?

    我正在尝试从 Windows 中的命令行执行 Java 程序 这是我的代码 import java io File import java io FileInputStream import java io FileOutputStream
  • 使用 XSLT 更改 XML 元素名称

    我正在尝试更改 XML 节点名称 但它不允许我这样做 在下面的代码中 我有两个模板 1 更改节点名称 2 为 DocumentReference 创建父节点 请参阅我的 XML 和 XSLT My XML