xml - XSLT 1.0 将子元素移动到新的父节点
问题描述
输入 XML
<Location>
<AdditionalInterest>
<GeneralPartyInfo>
<NameInfo>
<CommercialName>munmun</CommercialName>
</NameInfo>
<Addr>
<Addr1>1234 Oak Street</Addr1>
<City>Waterville</City>
<StateProvCd>ME</StateProvCd>
</Addr>
</GeneralPartyInfo>
<AdditionalInterestInfo>
<NatureInterestCd>Loss Payee</NatureInterestCd>
</AdditionalInterestInfo>
<GeneralPartyInfo>
<NameInfo>
<CommercialName>jaan</CommercialName>
</NameInfo>
<Addr>
<Addr1>555 Park Avenue</Addr1>
<City>Waterville</City>
<StateProvCd>ME</StateProvCd>
</Addr>
</GeneralPartyInfo>
<AdditionalInterestInfo>
<NatureInterestCd>Mortgage Holder</NatureInterestCd>
</AdditionalInterestInfo>
</AdditionalInterest>
</Location>
所需的输出 XML
<Location>
<AdditionalInterest>
<GeneralPartyInfo>
<NameInfo>
<CommercialName>munmun</CommercialName>
</NameInfo>
<Addr>
<Addr1>1234 Oak Street</Addr1>
<City>Waterville</City>
<StateProvCd>ME</StateProvCd>
</Addr>
</GeneralPartyInfo>
<AdditionalInterestInfo>
<NatureInterestCd>Loss Payee</NatureInterestCd>
</AdditionalInterestInfo>
</AdditionalInterest>
<AdditionalInterest>
<GeneralPartyInfo>
<NameInfo>
<CommercialName>jaan</CommercialName>
</NameInfo>
<Addr>
<Addr1>555 Park Avenue</Addr1>
<City>Waterville</City>
<StateProvCd>ME</StateProvCd>
</Addr>
</GeneralPartyInfo>
<AdditionalInterestInfo>
<NatureInterestCd>Mortgage Holder</NatureInterestCd>
</AdditionalInterestInfo>
</AdditionalInterest>
</Location>
我需要创建单独的 AdditionalInterest 父节点,每个父节点都有子节点 GeneralPartyInfo 和 AdditionalInterestInfo,如上面所需的输出 XML 所示。关于如何使用 XSLT 1.0 完成此任务的任何想法?谢谢!
解决方案
如果可以假设 eachGeneralPartyInfo
紧随其后是 one AdditionalInterestInfo
,那么您可以这样做:
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:strip-space elements="*"/>
<xsl:template match="/Location">
<xsl:copy>
<xsl:for-each select="AdditionalInterest/GeneralPartyInfo">
<AdditionalInterest>
<xsl:copy-of select=". | following-sibling::AdditionalInterestInfo[1]"/>
</AdditionalInterest>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
推荐阅读
- javascript - 如何制作一个值为其他两个条目之和的 JSON 数据条目?
- regex - scala apache访问日志正则表达式不起作用
- flutter - Flutter:构建函数返回 null
- netscaler - CItrix Netscaler Nitro API 是否是跨国的?
- javascript - 消除渲染阻塞资源 Wordpress
- node.js - 使用 Node.js 和 TypeScript 从标准输入获取值
- css - 随着窗口大小减小到 500 像素,滑块向左拉
- python - 将浮点数转换为二进制的函数中的解包错误
- git - IntelliJ IDEA 2019+ Git“提交目录”显示排除的 Maven 目标文件夹
- r - 在 R 中使用 cat 函数打印矢量 - 如何避免丢失元素名称