2012-12-29 98 views
1

我已經使用下面的一段代碼將XML轉換爲另一個XML文件。但是我試圖使用XSLT從一組字符串中創建一個新的XML文件。xslt php從字符串創建xml

$xsl = simplexml_load_file('template.xsl'); 
$xslt = new XSLTProcessor; 
$xslt->setParameter('', 'foo', $foo); 
$xslt->setParameter('', 'bar', $bar); 
$xslt->setParameter('', 'test', $test); 

$xslt->importStyleSheet($xsl); 

$data = $xslt->transformToXML($xml); 

所以我在做什麼的參數傳遞到template.xsl它創建節點和輸出結果傳遞給$data,其中PHP然後寫入到文件中。

但是我希望首先讀取XML文件並將其保存到變量$xml的示例代碼。但我不是在一個XML文件中讀取,因爲我生成的字符串的數據,這會生成一個警告:

PHP的警告:XSLTProcessor中:: transformToXml()預計參數1是對象,空給出

我意識到我可以使用PHP來編寫XML - http://www.developerfusion.com/code/3944/how-to-create-xml-files/ - 但我想知道如何使用XSLT執行此操作。

回答

1

但我不會在一個XML文件中讀取,因爲我生成字符串 數據,這產生'PHP Warning: X SLTProcessor::transformToXml() expects parameter 1 to be object, null given'。我意識到我可以使用PHP來編寫XML - http://www.developerfusion.com/code/3944/how-to-create-xml-files/ - 但我想知道如何用xslt做到這一點。

你可以使用任何XML文檔傳遞爲XSLTProcessor::transformToXml()

的第一個參數可以是人造的文檔,如<t/> - 從文件加載。

爲了不加載任何額外的XML文件,可以使用已經加載XSLT文件:

$data = $xslt->transformToXML($xsl); 

在改造,你將有一個模板(匹配/)和該模板裏面你將生成想要的XML文檔 - 結果。