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