2013-11-14 101 views
2

目前我有這個PHP:從XSL PHP如何通過XML節點

$xmlstrQs = '<QSHotel></QSHotel>'; 
$xmlqs = new SimpleXMLElement($xmlstrQs); 

$xmlqs->addChild('Occupancies'); 
$xmlqs->Occupancies->AddChild('Occupancy'); 
$xmlqs->Occupancies->Occupancy->AddChild('Rooms', 1);  
$xmlqs->Occupancies->Occupancy->AddChild('Adults', 2); 
$xmlqs->Occupancies->Occupancy->AddChild('Childrens');  

$myXmlqs = $xmlqs->asXML(); 
$myXmlqs = str_replace('<?xml version="1.0"?>', '', $myXmlqs); 

$xslt->setParameter('', 'qsHotel', $myXmlqs); 

我需要把它發送XML或任何走它在XSLT:

應達到下列方式XSLT :

<xsl:variable name="qsHotel"> 
    <QSHotel> 
    <Occupancy> 
     <Rooms>1</Rooms> 
     <Adults>2</Adults> 
     <Childrens/> 
    </Occupancy> 
    </QSHotel> 
</xsl:variable> 

然後穿過它作爲節點

<xsl:for-each select="exsl:node-set($qsHotel)/QSHotel/Occupancies/Occupancy"> 

回答

0

您無法使用XSL參數將XML傳遞到XSL樣式表中。 XSL參數只接受字符串。

您可以通過兩種方式將XML導入到XSL樣式表中;

  1. XML源文檔。
  2. 在XSLT中,使用document()函數加載XML文件。
+0

你有一個例子?請! – user2993916

+0

你想要一個1或2的例子嗎? –

+0

2.請進行測試! – user2993916

0

這裏有一個如何使用PHP來獲取XML文件到使用document()功能的XSL樣式表的例子...

<?php 

$xml = mini_transform('<doc/>', 'foo.xsl'); 
echo("<xmp>$xml</xmp>"); 

// Mini-transform. 
function mini_transform($str_xml, $file_xsl) { 
    $xslt = new XSLTProcessor(); 
    $xslt->importStylesheet(new SimpleXMLElement(file_get_contents($file_xsl))); 
    return $xslt->transformToXml(new SimpleXMLElement($str_xml)); 
} 

?> 

foo.xsl

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

    <xsl:template match="doc"> 
    <result> 
     <xsl:copy-of select="document('bar.xml')/*"/> 
    </result> 
    </xsl:template> 

</xsl:transform> 

bar.xml

<bar bish="234"> 
    <bosh/> 
</bar> 

結果

<?xml version="1.0"?> 
<result> 
    <bar bish="234"> 
    <bosh/> 
    </bar> 
</result>