使用XSLT读取和写入XML文件

时间:2017-04-06 12:08:04

标签: xml xslt

我试图读取文件路径在XML中的文件,然后使用xslt将该文件中的内容写入另一个新的xml,假设所有文件都在同一个文件夹中。

要求是,打开并读取input.xml并在" filepath"中找到文件路径。标记,然后打开并读取位于" filepath"中的AddressBook01.xml。然后阅读"姓名"在AddressBook01.xml文件中标记并将其写入Name01.xml等文件。

基本上如果足以知道如何使用XSLT读取和写入文件。

这可能吗?我对此很陌生,非常感谢任何帮助。

在input.xml中输入XML

Bundler.require(*Rails.groups)

AddressBook01.xml中的内容

?xml version="1.0" encoding="UTF-8"?>
<AddressFiles>
   <AddressFile>
      <name>AdressBook01</name>
      <filepath>AddressBook01.xml</filepath>
   </AddressFile>
<AddressFiles>

Names01.xml中的预期输出

?xml version="1.0" encoding="UTF-8"?>
<ContactDetails>
    <Contact>
       <Name>Tom</Name>
       <Address>Toms Address</Address>
    </Contact>
    <Contact>
        <Name>Peter</Name>
        <Address>Peters Address</Address>
    </Contact>
</ContactDetails>

1 个答案:

答案 0 :(得分:0)

使用XSLT 2.0处理器,您可以使用doc函数读取文件并使用xsl:result-document创建结果文档,例如

<xsl:template match="AddressFile">
  <xsl:result-document href="Names{replace(name, '[^0-9]+', '')}.xml">
    <xsl:copy-of select="doc(filepath)//Contact/Name"/>
  </xsl:result-document>
</xsl:template>

请注意,您的预期输出缺少包含Name元素的根元素,因此它不是格式良好的XML文档。可以创建该结果格式,我的建议也是如此,但在大多数情况下,最好创建格式良好的XML文档,否则很少有方法可以使用XML工具读取/处理创建的文件。