合并多个 xml 文件并一次插入元素以使用 xslt 输出更新的 xml



我有几个xml文件如下:

文件 : 1.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <config>
       <info>
           <info1>val1</info1>
           <info2>val2</info2>
       </info>
       <info>
           <info1>val3</info1>
           <info2>val4</info2>
       </info>
   </config>

文件 : 2.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <config>
       <info>
           <info1>val5</info1>
           <info2>val6</info2>
       </info>
       <info>
           <info1>val7</info1>
           <info2>val8</info2>
       </info>
   </config>

文件: 3.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <config>
       <info>
           <info1>val9</info1>
           <info2>val10</info2>
       </info>
       <info>
           <info1>val11</info1>
           <info2>val12</info2>
       </info>
   </config>

我想合并它们并添加到每个节点:

<info3>XXX</info3>

输出应如下所示:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <config>
       <info>
           <info1>val1</info1>
           <info2>val2</info2>
           <info3>XXX</info3>
       </info>
       <info>
           <info1>val3</info1>
           <info2>val4</info2>
           <info3>XXX</info3>
       </info>
       <info>
           <info1>val5</info1>
           <info2>val6</info2>
           <info3>XXX</info3>
       </info>
       <info>
           <info1>val7</info1>
           <info2>val8</info2>
           <info3>XXX</info3>
       </info>
       <info>
           <info1>val9</info1>
           <info2>val10</info2>
           <info3>XXX</info3>
       </info>
       <info>
           <info1>val11</info1>
           <info2>val12</info2>
           <info3>XXX</info3>
       </info>
   </config>

到目前为止,我已经能够通过创建一个列出我要合并的文件的 xml 文件来合并文件(merge.xml):

<mergeData newRoot="config">
   <filelist>
       <fileItem>1.xml</fileItem>
       <fileItem>2.xml</fileItem>
       <fileItem>3.xml</fileItem>
   </filelist>
</mergeData>

使用以下 XSL (merge.xsl):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
       <xsl:element name="{mergeData/@newRoot}">
           <xsl:apply-templates select="mergeData/fileList/fileItem"/>
       </xsl:element>
  </xsl:template>
  <xsl:template match="fileItem">   
       <xsl:copy-of select="document(.)/config/*"/>
  </xsl:template>
</xsl:stylesheet>

但是我应该如何修改 xsl 以同时将"info3"添加到每个信息中。"info3"对于每个节点始终是相同的信息。

有人可以帮忙吗?

注意:下一个问题将是如何使用位于特定文件夹中的xml文件生成合并.xml。

使用

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param  name="new">
    <info3>XXX</info3>
  </xsl:param>
  <xsl:template match="/">
       <xsl:element name="{mergeData/@newRoot}">
           <xsl:apply-templates select="document(mergeData/fileList/fileItem)/config/*"/>
       </xsl:element>
  </xsl:template>
  <xsl:template match="config/*">   
       <xsl:copy>
         <xsl:copy-of select="node()"/>
         <xsl:copy-of select="$new"/>
       </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

相关内容

  • 没有找到相关文章

最新更新