2011-06-21 56 views
3

我有兩個不同的XML結構化文檔,一個重命名元素,並將它們的節點,以滿足雙方的XSLT和PHP代碼,將它們保存到一個新的XML文檔。如何在我的PHP,DOM腳本中加載多個XML文檔?

這是我用於測試目的的代碼,但是我怎樣才能像book1.xml和列出book2.xml兩個或更多路徑裝入$xml?我知道如何$dom->load('book1.xml');

<?php 

// create an XSLT processor and load the stylesheet as a DOM 
$xproc = new XsltProcessor(); 
$xslt = new DomDocument; 
$xslt->load('stylesheet.xslt'); // this contains the code from above 
$xproc->importStylesheet($xslt); 


// your DOM or the source XML (copied from your question) 
$xml = ''; 
$dom = new DomDocument; 
$dom->loadXML($xml); 


?> 
+0

我想一個解決辦法是與所有的個XML數組,然後使用foreach循環可能? – EnexoOnoma

+0

好問題,+1。看到我的答案几種可能的解決方案。 –

回答

1

瞭解並使用標準的XSLT功能document()

在XSLT 2.0還有用於產生多個結果文檔標準支持 - 讀取有關<xsl:result-document>元件。

如果您被綁定到XSLT 1.0,則不能在一次轉換中生成多個結果文檔。您可以使用擴展庫(EXSLT中,<exsl:document>擴展元素),也可以產生一個結果文檔中的所有結果,然後用另一個轉換產生的每一個結果出來,你生產的每個結果運行一次。

+0

我正在使用2.0。因此,要清除我的腦海裏,我打開多個文檔中像'負載(「books1.xml」,「Books2.xml的」)'的XSLT的開頭,它使轉換?如果是這樣如何改變我的PHP代碼?有沒有工作的例子來更好地理解它? – EnexoOnoma

+0

@Sampas:你確定嗎?你在使用哪種XSLT處理器?你可以在代碼中使用''嗎?請記住,只要指定'版本=「2.0」'並不意味着你就可以讓你的XSLT 2.0代碼exacuted - 你必須使用一個XSLT 2.0處理器。 –

+0

哦,我只是指定了版本=「2.0」。我怎麼能說出我使用的是什麼?我在的cPanel共享主機(如果它的事項) – EnexoOnoma