代码之家  ›  专栏  ›  技术社区  ›  Lithicas

XSLT读取外部XML文件

  •  0
  • Lithicas  · 技术社区  · 6 年前

    我有一个XML文件,其中包含指向其他XML文件的路径,例如:

    <PATH>InsertPathHere</PATH>
    <PATH>InsertPathHere</PATH>
    

    有没有办法用XSLT“打开”XML文件并使用它们的数据? 我想将数据放在单独的文件中,并与XSLT一起使用。

    1 回复  |  直到 6 年前
        1
  •  2
  •   zx485 potemkin    6 年前

    对于XML文件,如

    <?xml version='1.0' encoding='utf-8'?>
    <root>
      <PATH>InsertPath1Here.xml</PATH>
      <PATH>InsertPath2Here.xml</PATH>
    </root>
    

    以及辅助XML文件,如 InsertPath1Here.xml

    <data>
        <value name="Value1">ABC</value>
    </data>
    

    InsertPath2Here.xml

    <data>
        <value name="Value2">DEF</value>
    </data>
    

    您可以使用如下XSLT文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
    
      <xsl:template match="/root">
        <xsl:for-each select="document(PATH)">
            <xsl:copy-of select="data" />
        </xsl:for-each>
      </xsl:template>
    
    </xsl:stylesheet>
    

    创建(正确的)输出:

    <data>
        <value name="Value1">ABC</value>
    </data>
    <data>
        <value name="Value2">DEF</value>
    </data>