2009-12-12 26 views
5

estoy tratando de utilizar archivos XML y hojas de estilo XSL en lugar de plantillas PHTML ordinarios en Zend Framework. Aunque no estoy seguro de cómo implementarlo.Zend Framework y XML/XSLT Integración

Lo que he tratado de hacer hasta ahora:

  • en lugar de puntos de vista .phtml utilizo hojas de estilo .xsl
  • utilizo diseños .xml

Esto es lo que hago en el método init() de cada controlador:

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

que me da una ruta como:

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

Mi diseño es el siguiente:

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

Y las vistas este aspecto, por ejemplo:

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

Lo que me sale en el navegador (Firefox), aunque es sólo una página en blanco con una fuente como esta, por ejemplo:

<?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> 

Podría alguien lp me fuera? Tenga en cuenta que soy un principiante de XML, así que estoy empezando a aprender a usarlo de manera efectiva.

Respuesta

6

He aquí un artículo sobre cómo crear una clase Zend_View personalizada que utiliza XSLT para render:

"Zend Framework: XSL and self-serializing Views" (Pascal Opitz)

+0

Gracias. ¿Hay algún plan para incluir soporte para XSLT en el lanzamiento oficial de ZF a veces en el futuro? –

+0

XSLT no parece estar en la hoja de ruta para ZF 2.0: http://framework.zend.com/wiki/display/ZFDEV2/Zend+Framework+2.0+Roadmap –

+0

también que no encuentran ninguna de estas solicitudes relacionadas con usando XSLT en Vistas en su rastreador de problemas. Creo que a la mayoría de los usuarios y desarrolladores de ZF no les gustaría esta característica (aunque XSLT a menudo es mucho más rápido de renderizar que los scripts de PHP). –