2011-04-26 66 views
0

我有3個XML文件加載XML子元素:如何從另一個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> 

是否可以加載m ain.xml並查看main.xml中<elements></elements>節點內的elements.xml的所有<elements>以及main.xml的<templates></templates>節點內的templates.xml的所有<templates>

所以,main.xml中會像這樣的輸出:

<page> 
<title>main page</title> 
<elements> 
    <element_1>element 1</element_1>  
    <element_2>element 2</element_2> 
</elements> 
<templates> 
    <template_1>template 1</template_1>  
    <template_2>template 2</template_2> 
</templates> 
</page> 

我應該使用一個XSL文件?你能否給我舉一個它如何工作的例子?

我喜歡避免使用服務器端語言,但如果這是嚴格的祕密,我將使用PHP。

回答

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> 
+0

謝謝羅伯特。我用'document()'去了,它就像一個魅力。再次感謝。 – Tony 2011-04-26 19:09:28

相關問題