xsltProcessor = $proc; } /** * @note Allows a string $xsl filename to be passed */ public function importStylesheet($xsl) { if (is_string ( $xsl )) { $xsl_file = $xsl; $xsl = new DOMDocument (); $xsl->load ( $xsl_file ); } return $this->xsltProcessor->importStylesheet ( $xsl ); } /** * Transforms an XML file into compatible XHTML based on the stylesheet * * @param $xml XML * DOM tree, or string filename * @return string HTML output * @todo Rename to transformToXHTML, as transformToHTML is misleading */ public function transformToHTML($xml) { if (is_string ( $xml )) { $dom = new DOMDocument (); $dom->load ( $xml ); } else { $dom = $xml; } $out = $this->xsltProcessor->transformToXML ( $dom ); // fudges for HTML backwards compatibility // assumes that document is XHTML $out = str_replace ( '/>', ' />', $out ); //
not
$out = str_replace ( ' xmlns=""', '', $out ); // rm unnecessary xmlns if (class_exists ( 'Tidy' )) { // cleanup output $config = array ( 'indent' => true, 'output-xhtml' => true, 'wrap' => 80 ); $tidy = new Tidy (); $tidy->parseString ( $out, $config, 'utf8' ); $tidy->cleanRepair (); $out = ( string ) $tidy; } return $out; } /** * Bulk sets parameters for the XSL stylesheet * * @param array $options * Associative array of options to set */ public function setParameters($options) { foreach ( $options as $name => $value ) { $this->xsltProcessor->setParameter ( '', $name, $value ); } } /** * Forward any other calls to the XSLT processor */ public function __call($name, $arguments) { call_user_func_array ( array ( $this->xsltProcessor, $name ), $arguments ); } } // vim: et sw=4 sts=4