如何从另一个xml文件中加载XML子元素

时间:2011-04-26 11:22:04

标签: xml

我有3个xml文件:

main.xml中:

<page>
 <title>main page</title>
 <elements></elements>
 <templates></templates>
</page>

Elements.xml的:

<elements>
 <element_1>element 1</element_1>    
 <element_2>element 2</element_2>
</elements>

templates.xml:

<templates>
 <template_1>template 1</template_1>    
 <template_2>template 2</template_2>
</templates>

是否可以加载main.xml并查看main.xml的<elements>节点内的所有<elements></elements> elements.xml以及{{中{template}内的所有<templates> 1}} main.xml的节点?

所以最后,main.xml将输出如下:

<templates></templates>

我应该使用xsl文件吗?能告诉我一个如何运作的例子吗?

我喜欢避免使用服务器端语言,但如果这是严格的nessecary,我将使用PHP。

1 个答案:

答案 0 :(得分:2)

如果你可以控制你的主文件,你可以使用XInclude然后使用知道XInclude的解析器和处理器。

否则,XSLT可能会使用document()函数包含辅助源文档。以下样式表应该按照您的要求进行:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

  <xsl:template match="elements">
    <xsl:copy-of select="document('elements.xml')"/>
  </xsl:template>

  <xsl:template match="templates">
    <xsl:copy-of select="document('templates.xml')"/>
  </xsl:template>

  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>