首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为XMLusing XSLT的同一层次结构中的多个子节点添加父节点

为XMLusing XSLT的同一层次结构中的多个子节点添加父节点
EN

Stack Overflow用户
提问于 2020-09-01 16:40:13
回答 1查看 29关注 0票数 0

我有一个场景,我的输入如下所示,需要解析的Xml无效,下面添加的预期输出可以帮助我获得所需的输出

代码语言:javascript
复制
<MessageHeader>
     <ServiceInitiatorKey>000</ServiceInitiatorKey>
     <ServiceProviderKey>SADAD-001</ServiceProviderKey>
     <ServiceConsumerId>000</ServiceConsumerId>
     <RqUID>4lkuo5bi-8e98-8bnn-32ge-ep3a6eiss241</RqUID>
     <Date>2020-00-00T00:00:00</Date>
     <Lang>en-gb</Lang>
  </MessageHeader><LoadRq>
     <Timestamp>2020-00-00T00:00:00</Timestamp>
     <Payment>
        <BillerId>000</BillerId>
        <CurAmt>0</CurAmt>
     
        <PrcDt>2020-00-00T00:00:00</PrcDt>
        <DueDt>2020-00-00T00:00:00</DueDt>
        <BillerPmtId>000000</BillerPmtId>
        <PaymentRef>
           <BillNumberWithAccount>
              <BillingAcct>0000000000</BillingAcct>
              <BillNumber>0000000000</BillNumber>
           </BillNumberWithAccount>
           
        </PaymentRef>
     </Payment>
  </LoadRq>

预期输出如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<root>
<MessageHeader>
     <ServiceInitiatorKey>000</ServiceInitiatorKey>
     <ServiceProviderKey>SADAD-001</ServiceProviderKey>
     <ServiceConsumerId>000</ServiceConsumerId>
     <RqUID>4lkuo5bi-8e98-8bnn-32ge-ep3a6eiss241</RqUID>
     <Date>2020-00-00T00:00:00</Date>
     <Lang>en-gb</Lang>
  </MessageHeader><LoadRq>
     <Timestamp>2020-00-00T00:00:00</Timestamp>
     <Payment>
        <BillerId>000</BillerId>
        <CurAmt>0</CurAmt>
     
        <PrcDt>2020-00-00T00:00:00</PrcDt>
        <DueDt>2020-00-00T00:00:00</DueDt>
        <BillerPmtId>000000</BillerPmtId>
        <PaymentRef>
           <BillNumberWithAccount>
              <BillingAcct>0000000000</BillingAcct>
              <BillNumber>0000000000</BillNumber>
           </BillNumberWithAccount>
           
        </PaymentRef>
     </Payment>
  </LoadRq>
EN

回答 1

Stack Overflow用户

发布于 2020-09-01 18:43:30

在XSLT/XPath3中有一个函数parse-xml-fragment,所以使用例如

代码语言:javascript
复制
<xsl:template name="xsl:initial-template">
  <root>
    <xsl:sequence select="parse-xml-fragment(unparsed-text('your-file.xml'))"/>
  </root>
</xsl:template>

应该允许你添加一个包装器元素。您将使用指定的模板开始转换(例如,Saxon9/10的-it命令行选项)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63684183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档