2009-12-12 60 views
5

我想在Zend Framework中使用XML文件和XSL樣式表而不是普通的phtml模板。不過,我不確定如何實現它。Zend框架和XML/XSLT集成

什麼我試過到目前爲止做:

  • ,而不是一個.phtml意見我使用的.xsl樣式
  • 我使用的.xml佈局

這是我做每個控制器的init()方法:

$this->view->xmlStylesheet = '/../application/modules/default/views/scripts/' 
. $this->_request->getControllerName() . '/' 
. $this->_request->getActionName() . '.xsl'; 

這使我喜歡的路徑:

/../application/modules/default/views/scripts/index/index.xsl 

我的佈局是這樣的:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="<?php echo $this->escape($this->xmlStylesheet); ?>"?> 
<page> 
    <header></header> 
    <content></content> 
    <footer></footer> 
</page> 

而且觀點是這樣的,例如:

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

    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" 
     media-type="application/xhtml+xml" encoding="iso-8859-1" 
     doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
     doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> 

    <xsl:template match="/"> 
     <html> 
      <head> 
       <title>Hello World</title> 
       <meta http-equiv="content-type" content="application/xhtml+xml; charset=iso-8859-1"/> 
      </head> 
      <body> 
       <xsl:apply-templates/> 
      </body> 
     </html> 
    </xsl:template> 

</xsl:stylesheet> 

我在瀏覽器(Firefox)能得到什麼,雖然僅僅是一個空白頁與這樣的來源,例如:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="/../application/modules/default/views/scripts/index/index.xsl"?> 
<page> 
    <header></header> 
    <content></content> 
    <footer></footer> 
</page> 

有人可以他讓我出去?考慮到我是一名XML初學者,所以我剛開始學習如何有效地使用它。

回答

6

這裏有一個關於如何創建一個使用XSLT來渲染一個自定義的Zend_View類的文章:

Zend Framework: XSL and self-serializing Views」(帕斯卡奧皮茨)

+0

感謝。有沒有計劃在將來有時在官方ZF版本中包含對XSLT的支持? – 2009-12-13 11:52:46

+0

XSLT似乎不在ZF 2.0的路線圖中:http://framework.zend.com/wiki/display/ZFDEV2/Zend+Framework+2.0+Roadmap – 2009-12-13 18:19:26

+0

此外,我沒有找到任何有關的功能請求在問題跟蹤器中使用視圖中的XSLT。我認爲大多數ZF用戶和開發人員不會喜歡這個功能(即使XSLT的渲染速度通常比PHP腳本快得多)。 – 2009-12-13 18:21:57