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 { // the php online docs only mention setSecurityPrefs, but somehow some installs have setSecurityPreferences... if (method_exists('XSLTProcessor', 'setSecurityPrefs')) { $proc->setSecurityPrefs(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])) { file_put_contents($_SERVER['argv'][3], $out); } echo "OK\n";