/** * @param string $inFile * @param string $xssFile * @param string $outFileOrDir * @throws \Exception */ public static function applyXslt($inFile, $xssFile, $outFileOrDir) { if (!file_exists($inFile)) { throw new \Exception("File {$inFile} cannot be found"); } if (!file_exists($xssFile)) { throw new \Exception("File {$xssFile} cannot be found"); } // Load the XML source $xml = new \DOMDocument(); $xml->load($inFile); $xsl = new \DOMDocument(); $xsl->load($xssFile); // Configure the transformer $processor = new \XSLTProcessor(); if (version_compare(PHP_VERSION, '5.4', "<")) { if (defined('XSL_SECPREF_WRITE_FILE')) { ini_set("xsl.security_prefs", XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE); } } else { // the php online docs only mention setSecurityPrefs, but somehow some installs have setSecurityPreferences... if (method_exists('XSLTProcessor', 'setSecurityPrefs')) { $processor->setSecurityPrefs(XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE); } else { $processor->setSecurityPreferences(XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE); } } $processor->importStyleSheet($xsl); // attach the xsl rules if (is_dir($outFileOrDir)) { if (!$processor->setParameter('', 'base.dir', realpath($outFileOrDir))) { echo "setting param base.dir KO\n"; } } $out = $processor->transformToXML($xml); if (!is_dir($outFileOrDir)) { file_put_contents($outFileOrDir, $out); } }
if (!file_exists($xss)) { die("KO: file {$xss} cannot be found\n"); } // Load the XML source $xml = new DOMDocument(); $xml->load($doc); $xsl = new DOMDocument(); $xsl->load($xss); // Configure the transformer $proc = new XSLTProcessor(); if (version_compare(PHP_VERSION, '5.4', "<")) { if (defined('XSL_SECPREF_WRITE_FILE')) { ini_set("xsl.security_prefs", XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE); } } else { $proc->setSecurityPreferences(XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE); } $proc->importStyleSheet($xsl); // attach the xsl rules //if ($_SERVER['argc'] >= 4) //{ if (is_dir($_SERVER['argv'][3])) { if (!$proc->setParameter('', 'base.dir', realpath($_SERVER['argv'][3]))) { echo "setting param base.dir KO\n"; } } else { //echo "{$_SERVER['argv'][3]} is not a dir\n"; } //} $out = $proc->transformToXML($xml); if (!is_dir($_SERVER['argv'][3])) {