function perform_xslt($xml, $s, $islast, $isfirst, $param_path) { global $base_path, $charset; $transform = "{$base_path}/admin/convert/imports/" . $param_path . "/" . $s['XSLFILE'][0]['value']; //Si c'est la première transformation, on rajoute les entêtes if ($isfirst) { if ($s['ENCODING']) { $xml1 = "<?xml version=\"1.0\" encoding=\"" . $s['ENCODING'] . "\"?>\n<" . $s['ROOTELEMENT'][0]["value"]; } else { $xml1 = "<?xml version=\"1.0\" encoding=\"{$charset}\"?>\n<" . $s['ROOTELEMENT'][0]["value"]; } if ($s["NAMESPACE"]) { $xml1 .= " xmlns:" . $s["NAMESPACE"][0]["ID"] . "='" . $s["NAMESPACE"][0]["value"] . "' "; } $xml1 .= ">\n" . $xml . "\n</" . $s['ROOTELEMENT'][0]['value'] . ">"; $xml = $xml1; } $f = fopen($transform, "r"); $xsl = fread($f, filesize($transform)); fclose($f); //Création du processeur $xh = xslt_create(); //Encodage = $charset if (defined("ICONV_IMPL")) { xslt_set_encoding($xh, "{$charset}"); } // Traite le document if ($result = @xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array("/_xml" => $xml, "/_xsl" => $xsl))) { $r['VALID'] = true; $r['DATA'] = $result; $r['ERROR'] = ""; //Si c'est la dernière transformation, on supprime les entêtes et l'élément root if ($islast) { $p = preg_match("/<" . $s['TNOTICEELEMENT'][0]['value'] . "(?:\\ [^>]*|)>/", $r["DATA"], $m, PREG_OFFSET_CAPTURE); if ($p) { $r['DATA'] = " " . substr($r['DATA'], $m[0][1]); } $p1 = 0; $p = 0; while ($p !== false) { $p1 = $p; $p = @strpos($r['DATA'], "</" . $s['TNOTICEELEMENT'][0]['value'] . ">", $p1 + strlen("</" . $s['TNOTICEELEMENT'][0]['value'] . ">")); } if ($p1 !== false && $p1 != 0) { $r['DATA'] = substr($r['DATA'], 0, $p1 + strlen($s['TNOTICEELEMENT'][0]['value']) + 3) . "\n"; } } } else { $r['VALID'] = false; $r['DATA'] = ""; $r['ERROR'] = "Sorry, notice could not be transformed by {$transform} the reason is that " . xslt_error($xh) . " and the error code is " . xslt_errno($xh); } xslt_free($xh); return $r; }
function transform() { $args = array("/_stylesheet", $this->xsl, "/_xmlinput", $this->xml, "/_output", 0, 0); if ($err = xslt_run($this->processor, "arg:/_stylesheet", "arg:/_xmlinput", "arg:/_output", 0, $args)) { $output = xslt_fetch_result($this->processor, "arg:/_output"); $this->setOutput($output); } else { $this->setError(xslt_error($this->processor)); $this->setErrorCode(xslt_errno($this->processor)); } }
function transform() { $args = array('/_xml' => $this->xml, '/_xsl' => $this->xsl); $result = xslt_process($this->processor, 'arg:/_xml', 'arg:/_xsl', NULL, $args); if ($result) { $this->setOutput($result); } else { // $err = "Error: " . xslt_error ($this->processor) . " Errorcode: " . xslt_errno ($this->processor); $this->setError(xslt_error($this->processor)); $this->setErrorCode(xslt_errno($this->processor)); } }
function output($output) { /* Falls die Seite als HTML ausgegeben werden soll */ /* Eine Weiche einbauen, fals die XSLT Extension nicht geladen ist -> http://koders.com/php/fidB0434D36F01703F9ACAB5E21065E315FE44D2C57.aspx?s=xslt_process http://koders.com/php/fid78371B5F37DAE258E3258B91CC791A712CBF2AAC.aspx?s=xslt_process */ if (isset($_SESSION['variables']['extention']) and $_SESSION['variables']['extention'] == "html" and IS_XSLT) { if (version_compare(phpversion(), "5.0", ">")) { $processor = new XSLTProcessor(); $xmlDom = new DOMDocument(); $xslDom = new DOMDocument(); $xmlDom->loadXML($output); $xslDom->load(BIN_DIR . "xslt/index.xsl"); $processor->importstylesheet($xslDom); /* Transformiert den Output :TODO: Fehlerabfrage der Resultates :ATTENTION: eventuell werden die im XSL-File includeten Dateien falsch eingebunden*/ $result = $processor->transformtoxml($xmlDom); } else { /* PHP4 XSLT Prozessor, ist auch unter PHP5 erreichbar, nur langsamer */ /* XSL File auslesen und Content ueberschreiben */ $filename = "xslt/main.xsl"; $handle = fopen($filename, "r"); $xsl_contents = fread($handle, filesize($filename)); fclose($handle); /* :TODO: Anpassen des xsc fuer die Uebergabe des Templatefiles */ // $xsl = sprintf($xsl_contents, $_SESSION['variables']['template_content']); $xsl = $xsl_contents; /* Stylesheet uebergeben */ $processor_arguments = array('/_xml' => $output, '/_xsl' => $xsl); $processor = xslt_create(); xslt_set_encoding($processor, 'ISO-8859-1'); xslt_set_base($processor, 'file://' . BIN_DIR . 'xslt/'); /* Transformiert den Output */ $result = xslt_process($processor, 'arg:/_xml', 'arg:/_xsl', NULL, $processor_arguments); if (!$result && xslt_errno($processor) > 0) { $result = sprintf("Kann XSLT Dokument nicht umarbeiten [%d]: %s", xslt_errno($processor), xslt_error($processor)); } xslt_free($processor); } /* Gibt das HTML-Dokument aus */ echo $result; } else { header("Content-Type: text/xml"); echo $output; } }
/** * Transformation générique d'un document XML via XSLT * @param string $filename nom du fichier source * @param string $filename_source nom du fichier en sortie * @param string $stylesheet nom de la feuille XSLT * @param array $params paramètres à passer à la feuille XSLT * @access private * @return boolean vrai quand tout se passe bien */ function _output_xsl_generic_transform($filename, $filename_cible, $stylesheet, $params = array()) { /* Attention : code hautement toxique, il a fallu aller fouiller dans les sources de PHP pour découvrir une grande partie des engins nucléaires en jeu ici et rien ne garantit leur stabilité. Désolé pour le développement durable, c'est pas trop ça ici. */ $xh = xslt_create(); $result = xslt_process($xh, $filename, PATH_INCLUDE . "xslt/" . $stylesheet, $filename_cible, array(), $params); if (!$result) { $msgerr = 'Erreur XSLT ' . xslt_errno($xh) . ' : ' . xslt_error($xh); xslt_free($xh); return false; } else { return true; } }
function transform() { $args = array('/_xml' => $this->xml, '/_xsl' => $this->xsl); $result = xslt_process($this->processor, 'arg:/_xml', 'arg:/_xsl', NULL, $args); if (xslt_error($this->processor) != '') { echo "class.XSLTransformer41.php<br>"; echo "xslt_error:" . xslt_error($this->processor) . "<br>"; echo "result:" . $result . "<br>"; } if (strlen($result) == 0) { echo "class.XSLTransformer41.php<br>"; echo "xslt_error:" . xslt_error($this->processor) . "<br>"; echo "result:" . $result . "<br>"; } if ($result) { $this->setOutput($result); } else { echo "class.XSLTransformer41.php<br>"; $err = "<br/>Error: " . xslt_error($this->processor) . "<br/>Errorcode: " . xslt_errno($this->processor); $this->setError($err); } }
/** * Atom 0.3 を RSS 1.0 に変換する(PHP4, XSLT) */ function atom_to_rss_by_xslt($input, $stylesheet, $output) { $xh = xslt_create(); if (!@xslt_process($xh, $input, $stylesheet, $output)) { $errmsg = xslt_errno($xh) . ': ' . xslt_error($xh); P2Util::pushInfoHtml('<p>p2 error: XSLT - AtomをRSSに変換できませんでした。(' . $errmsg . ')</p>'); xslt_free($xh); return FALSE; } xslt_free($xh); return FileCtl::file_read_contents($output); }
/** * Returns the current error number. * * @access public * @return string * */ function errno() { if (PHP_VERSION < '4.1.0') { return @xslt_errno(); } else { return @xslt_errno($this->handle); } }
/** * Use PHP4's xslt extension to do the XSL transformation * @param $xml mixed * @param $xmlType integer * @param $xsl mixed * @param $xslType integer * @param $resultType integer * @return string return type for PHP4 is always string or "false" on error. */ function &_transformPHP4(&$xml, $xmlType, &$xsl, $xslType, $resultType) { $falseVar = false; // PHP4 doesn't support DOM if ($xmlType == XSL_TRANSFORMER_DOCTYPE_DOM || $xslType == XSL_TRANSFORMER_DOCTYPE_DOM || $resultType == XSL_TRANSFORMER_DOCTYPE_DOM) { return $falseVar; } // Create the processor $processor = xslt_create(); xslt_set_encoding($processor, XSLT_PROCESSOR_ENCODING); // Create arguments for string types (if any) $arguments = array(); if ($xmlType == XSL_TRANSFORMER_DOCTYPE_STRING) { $arguments['/_xml'] = $xml; $xml = 'arg:/_xml'; } if ($xslType == XSL_TRANSFORMER_DOCTYPE_STRING) { $arguments['/_xsl'] = $xsl; $xsl = 'arg:/_xsl'; } if (empty($arguments)) { $arguments = null; } // Do the transformation $resultXML = xslt_process($processor, $xml, $xsl, null, $arguments, $this->parameters); // Error handling if (!$resultXML) { $this->addError("Cannot process XSLT document [%d]: %s", xslt_errno($processor), xslt_error($processor)); return $falseVar; } // DOM is not supported in PHP4 so we can always directly return the string result return $resultXML; }
static function transformPHP4(&$InformationArray) { // create the XSLT processor^M $xh = xslt_create() or die("Could not create XSLT processor"); // Process the document $result = xslt_process($xh, $InformationArray['fileBase'] . $InformationArray['xml_file'], $InformationArray['fileBase'] . $InformationArray['xslt_file'], $InformationArray['fileBase'] . $InformationArray['out_file']); if (!$result) { // Something croaked. Show the error $InformationArray['error'] = "Cannot process XSLT document: " . xslt_errno($xh) . " " . xslt_error($xh); } // Destroy the XSLT processor xslt_free($xh); }
// This has to precede the inclusion of the header file. $langID = getLangID('it'); //require ('FiaHeader.html'); // $params = array ( // 'contentID' => $_GET['myID'], // 'expandID' => $_GET['expand'], // 'langID' => $langID // ); $params = array('contentID' => $_GET['myID'], 'expandID' => $_GET['expand'], 'highlight' => $_GET['highlight'], 'langID' => $langID); require '../header.php'; require 'FiaNavigation.php'; echo '<div id="text">'; // Allocate a new XSLT processor //$xh = xslt_create(); //xslt_set_encoding ($xh, 'UTF-8'); // Process the document, returning the result into the $result variable //$result = xslt_process($xh, 'itFiammetta.xml', 'itFiaShowText.xsl', NULL, array(), $params); // $result = xslt_process($xh, 'itFiammetta.xml', 'itFiaShowText.xsl'); $result = runXSLT($langID . 'Fiammetta.xml', 'FiaShowText.xsl', $params); if ($result) { // echo "<pre>\n"; echo $result; //echo "</pre>\n"; } else { echo "Sorry, transformation could not be performed" . xslt_error($xh); echo " error code " . xslt_errno($xh); } //xslt_free($xh); echo '</div>'; $last_modified = filemtime($_SERVER["SCRIPT_FILENAME"]); require '../footer.php';
// Get the contents of the files, using fopen($fileName, "r"); // Both calls work ok. if (empty($xslData)) { $xslData = implode('', file($xslFile)); } if (empty($xmlData)) { $xmlData = implode('', file($xmlFile)); } $hXslt = xslt_create(); $arguments = array('/_xml' => $xmlData, '/_xsl' => $xslData); $result = xslt_process($hXslt, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments); if ($result) { echo $result; } else { echo "There was an error that occurred in the XSL transformation...\n"; echo "\tError number: " . xslt_errno() . "\n"; echo "\tError string: " . xslt_error() . "\n"; exit; } xslt_free($hXslt); ?> <!-- ################################################################## --> <hr id="UpdateInstructions"> <p>To update the documentation, run the GeneratePhpDocumentation.pl script on your copy of <?php echo $FileName; ?> and pipe the output to <?php
function transform() { /* apply replacements on xml and xsl strings after process transformation */ if ($this->replacements != "") { $this->xml = $this->processReplace($this->xml); $this->xsl = $this->processReplace($this->xsl); } //debug("transform xml",$this->xml); //debug("transform xsl",$this->xsl); $args = array('/_xml' => $this->xml, '/_xsl' => $this->xsl); $result = xslt_process($this->processor, 'arg:/_xml', 'arg:/_xsl', NULL, $args); //debug("transform res",$result); if ($result) { $this->setOutput($result); return true; } else { $this->setError(xslt_error($this->processor)); $this->setErrorCode(xslt_errno($this->processor)); return false; } }
function process($xml = null, $xsl = null, $param = array()) { if ($xml) { $this->_xml = $xml; } if ($xsl) { $this->_xsl = $xsl; } $xml = trim($xml); $xsl = trim($xsl); if (!is_array($param)) { $param = array(); } if (!_XSLT_AVAILABLE_) { return false; } //dont let process continue if no xsl functionality exists //DOMXML Extension if (_USING_DOMXML_XSLT_) { // Set up error handling $ehOLD = ini_set('html_errors', false); set_error_handler('trapXSLError'); $xmldoc = domxml_open_mem($this->_xml, DOMXML_LOAD_PARSING, $xmlErrors); $xsldoc = domxml_xslt_stylesheet($this->_xsl); if (is_object($xmldoc) && is_object($xsldoc)) { $result = $xsldoc->process($xmldoc, $param); $result = $xsldoc->result_dump_mem($result); } // Restore error handling ini_set('html_errors', $ehOLD); restore_error_handler(); //Process the errors while opening the XML while ($e = @array_shift($xmlErrors)) { $this->__error("2", $e['errormessage'], "xml", $e['line']); } //Use one of the custom error handlers to grab a list of processing errors $errors = trapXMLError(null, null, null, null, null, true); //Process the rest of the errors while ($error = @array_shift($errors)) { $this->__error($error['number'], $error['message'], $error['type'], $error['line']); } unset($xmldoc); unset($xsldoc); //PHP4/5 XSL Extension } else { $arguments = array('/_xml' => $this->_xml, '/_xsl' => $this->_xsl); $xsltproc = xslt_create(); ##Make sure a bad document() call doesnt break the site if (PHP_VERSION < 5) { xslt_setopt($xsltproc, XSLT_SABOPT_IGNORE_DOC_NOT_FOUND); } $result = @xslt_process($xsltproc, 'arg:/_xml', 'arg:/_xsl', null, $arguments, $param); if (PHP_VERSION >= 5) { //Use one of the custom error handlers to grab a list of processing errors $errors = trapXMLError(null, null, null, null, null, true); while ($error = @array_shift($errors)) { $this->__error($error['number'], $error['message'], $error['type'], $error['line']); } } else { if (!$result && xslt_errno($xsltproc) > 0) { $this->__error(xslt_errno($xsltproc), xslt_error($xsltproc)); } } xslt_free($xsltproc); } return $result; }
<?php /* Allocation du processeur XSLT */ $xh = xslt_create(); $input = 'plan.xml'; $xslt = 'plan.xsl'; $output = 'plan.php'; $template1 = '<?php include(\'template1.php\');?>'; $template2 = '<?php include(\'template2.php\');?>'; /* Traitement du document */ if (xslt_process($xh, 'xml/' . $input, 'xsl/' . $xslt, $output)) { echo "Réussi!!!!!"; $fp = fopen($output, 'r+'); $contents = file_get_contents($output); fputs($fp, $template1 . $contents . $template2); fclose($fp); readfile('plan.php'); } else { echo "Echec : " . xslt_error($xh) . " et "; echo " le code d'erreur est " . xslt_errno($xh); } xslt_free($xh);
function errno() { return @xslt_errno(); }
function record_to_xml_unimarc($record, $style_sheets, $charset) { global $xslt_base_path; global $debug; if ($debug) { highlight_string(print_r($record, true)); } // file_put_contents('dublincoreextended1.xml', $record); $xh = xslt_create(); // echo $charset; xslt_set_encoding($xh, $charset); $result = $record; foreach ($style_sheets as $style_sheet) { if ($debug) { echo '<h3>' . $style_sheet . '</h3>'; } /* Traitement du document */ $arguments = array('/_xml' => $result, '/_xsl' => $style_sheet); $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments); if ($debug) { highlight_string(print_r($result, true)); } if (!$result) { $this->error = true; $this->error_message = "Sorry, notice could not be transformed by {$style_sheet} the reason is that " . xslt_error($xh) . " and the error code is " . xslt_errno($xh); } } xslt_free($xh); return $result; }
function transform() { $err = ""; if (getenv("ENV_SOCKET") == "true") { $result = $this->socket->transform($this->xsl, $this->xml); if (strlen($result) < 3) { $args = array('/_xml' => $this->xml, '/_xsl' => $this->xsl); $result = xslt_process($this->processor, 'arg:/_xml', 'arg:/_xsl', NULL, $args); if ($result) { $this->byJava = 'false'; $this->setOutput($result . "<!--transformed by PHP-->"); } else { $err = "Error: " . xslt_error($this->processor) . " Errorcode: " . xslt_errno($this->processor); $this->setError($err); } } else { $this->byJava = 'true'; $this->setOutput($result . "<!--transformed by JAVA " . date("h:m:s d-m-Y") . "-->"); } } else { $args = array('/_xml' => $this->xml, '/_xsl' => $this->xsl); $result = xslt_process($this->processor, 'arg:/_xml', 'arg:/_xsl', NULL, $args); if ($result) { $this->byJava = 'false'; $this->setOutput($result . "<!--transformed by PHP " . date("h:m:s d-m-Y") . "-->"); } else { $err = "Error: " . xslt_error($this->processor) . " Errorcode: " . xslt_errno($this->processor); $this->setError($err); } } if ($err) { var_dump($err); var_dump($this->xsl); var_dump($this->xml); } }