【问题标题】:Read and Write to a XML file using XSLT使用 XSLT 读取和写入 XML 文件
【发布时间】:2017-04-06 12:08:03
【问题描述】:

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

要求是,打开并读取input.xml并在“filepath”标签中找到文件路径,然后打开并读取“filepath”中的AddressBook01.xml,然后读取AddressBook01中的“Name”标签。 xml 文件并将它们写入到 Name01.xml 之类的文件中。

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

这可能吗?我是新手,非常感谢任何帮助。

在 input.xml 中输入 XML

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

AddressBook01.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>

Names01.xml 中的预期输出

?xml version="1.0" encoding="UTF-8"?>
<Name>Tom</Name>
<Name>Peter</Name>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    使用 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 工具读取/处理创建的文件的方法很少。

    【讨论】:

    • 如果我使用 XSLT 1.0 会怎样?那我怎么能做同样的事情呢?
    • 您使用哪种 XSLT 1.0 处理器?部分支持exslt.org/exsl/elements/document/index.html创建结果文档,读入文档可以用document(filepath)//Contact/Name代替doc(filepath)//Contact/Name
    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2013-03-20
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多