Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : XSL functions : XSLTProcessor::importStylesheet

XSLTProcessor::importStylesheet

Import stylesheet ()


Code Examples / Notes » xsl xsltprocessor import stylesheet

diesel

This is not a problem. You may set DOMDocument's documentURI property.
Something like this
$xsl = new DOMDocument('1.0','UTF-8');
   
$xsl->loadXML(file_get_contents('/foo/bar/somefile.xsl');
$xsl->documentURI = '/foo/bar/somefile.xsl';
$xslProc = new XSLTProcessor();
$xslProc->importStylesheet($xsl);
and document('other.xsl') will work fine!


fcartegnie

PHP5 xsl processor has a different behaviour than PHP4's one with CDATA sections. (see http://bugs.php.net/bug.php?id=29837)
Loaded XSL sheet CDATA sections does not allow, by default, output-escaping handling (everything in the CDATA is escaped by default).
So in this case you can't build your XSL Dom the usual way:
   $xsldom = DomDocument::loadXML(file_get_contents('sheet.xsl'));
and must go through this one (allowing LIBXML_NOCDATA parameter):
   $xsldom = new DomDocument;
   $xsldom->load('sheet.xsl', LIBXML_NOCDATA);
Then the CDATA output-escaping behaviour will be correct.


bbrosseau

For those who wants to use external documents, it is important not to use the DomDocument::loadXML because the processor will not have the path to look for other files

So if you want to transform some xml with a pre-generated stylesheet $f:
$f = 'somestylesheet.xsl';
 $xsl = DomDocument::loadXML(file_get_contents($f));
document('other.xml') will not work with relative path and
 $xsl = DomDocument::load($f);

will!


Change Language


Follow Navioo On Twitter
XSLTProcessor::__construct
XSLTProcessor::getParameter
XSLTProcessor::hasExsltSupport
XSLTProcessor::importStylesheet
XSLTProcessor::registerPHPFunctions
XSLTProcessor::removeParameter
XSLTProcessor::setParameter
XSLTProcessor::transformToDoc
XSLTProcessor::transformToURI
XSLTProcessor::transformToXML
eXTReMe Tracker