如何解决使用xslt的xsl子元素节的副本
我正在尝试使用XSLT实现以下目标;仅保留第一个标题,然后保留所有“ Detail”元素-“ Order”下的所有内容。我尝试了多种xsl副本;我尝试过的内容也粘贴在下面。
输入:
<Root>
<Order>
<Header>
<H1>abc</H1>
<H2>123</H2>
</Header>
<Details>
<Detail>
<val1>test1</val1>
<OrderId>111</OrderId>
</Detail>
<Detail>
<val1>test2</val1>
<OrderId>112</OrderId>
</Detail>
</Details>
</Order>
<Order>
<Header>
<H1>abc</H1>
<H2>123</H2>
</Header>
<Details>
<Detail>
<val1>test3</val1>
<OrderId>113</OrderId>
</Detail>
<Detail>
<val1>test4</val1>
<OrderId>114</OrderId>
</Detail>
</Details>
</Order>
</Root>
预期输出为
<Order>
<Header>
<H1>abc</H1>
<H2>123</H2>
</Header>
<Details>
<Detail>
<val1>test1</val1>
<OrderId>111</OrderId>
</Detail>
<Detail>
<val1>test2</val1>
<OrderId>112</OrderId>
</Detail>
<Detail>
<val1>test3</val1>
<OrderId>113</OrderId>
</Detail>
<Detail>
<val1>test4</val1>
<OrderId>114</OrderId>
</Detail>
</Details>
</Order>
我尝试过的如下。但这并没有为我提供预期的结果
<?xml version="1.0" encoding="UTF-8"?>
<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" omit-xml-declaration="no" />
<xsl:template match="*">
<xsl:element name="{name(*[1])}">
<xsl:copy-of select="*[1]/Header"/>
<xsl:for-each select="*">
<xsl:copy-of select="Detail"/>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
非常感谢您的帮助
谢谢 法里斯
解决方法
为什么不简单:
<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:template match="/Root">
<Order>
<xsl:copy-of select="Order[1]/Header"/>
<Details>
<xsl:copy-of select="Order/Details/Detail"/>
</Details>
</Order>
</xsl:template>
</xsl:stylesheet>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。