使用xslt将一个xml的内容复制到其他内容中

时间:2013-01-28 20:32:31

标签: java xml xslt

我正在尝试使用Xslt将内容从一个xml复制到另一个xml。

我需要复制file1的内容

<?xml version="1.0"?>
<products author="Jesper">
  <product>
    <name>Delta</name>
    <price>800</price>
    <stock>
        <price>13a</price>
    </stock>
    <place>Denmark</place>
  </product>
</products>

到文件2.File2有类似的标签,但订单混乱,

<?xml version="1.0"?>
<products author="Jesper">
  <product>
    <stock>
        <price>13d</price>
    </stock>
    <price>700</price>
    <place>Copenhagen</place>
     <name>Beta</name>
  </product>
</products>

预期输出

<products author="Jesper">
  <product>
    <stock>
        <price>13a</price>
    </stock>
    <price>800</price>
    <place>Denmark</place>
     <name>Delta</name>
  </product>
</products>

所以基本上我需要使用for-each迭代file1,然后在file2中找到匹配的标记并复制标记值。不确定这样做的有效方法......双重迭代效率低下。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题,但我会尽力给你一些指导,让你开始。您可能希望使用doc()函数来加载文件,因为XSLT只允许您迭代单个“主”文件。 doc()将新文件加载到可以应用模板的变量中,依此类推。如果您担心迭代性能,您应该了解xsl:keykey()函数,它们构建了有助于此的索引。