| 
<?php
 function getmicrotime() {
 list($usec, $sec) = explode(" ", microtime());
 return ((float)$usec + (float)$sec);
 }
 $time_start = getmicrotime();
 
 $root = $_SERVER['DOCUMENT_ROOT'];
 $path[] = $root.'/PEAR';
 $path[] = $root.'/myXML';
 
 if (substr(PHP_OS, 0, 3) == 'WIN') {
 $searchPath = implode(';', $path).';';
 } else {
 $searchPath = implode(':', $path).':';
 }
 
 // Set the search path.
 ini_set('include_path', $searchPath);
 
 require_once('XML_Preprocessor.php');
 require_once('myDOM/myDOM.php');
 require_once('myXPath/myXPath.php');
 require_once('myXSLT/myXSLT.php');
 
 PEAR::setErrorHandling(PEAR_ERROR_RETURN, E_USER_ERROR);
 
 // Create new DOM documents for input, output and stylesheet data.
 $oDocument = new Document;
 $oStylesheet = new Document;
 $oOutDocument = new Document;
 
 // Create object of class XML_Preprocessor.
 $oXml = XML_Preprocessor::create(&$oDocument);
 
 // As in a file sample.xml is used PHP code, for its parsing the object of class
 // XML_Preprocessor will be used.
 $oXml->parseFile('sample.xml');
 
 // Use of a new features.
 $xmlData = "
 <book id='10'>
 <title><b>New features in myDOM</b> (see manual)</title>
 <author><i>Tereshchenko Andrey</i> ;~)</author>
 <price>0.00</price>
 </book>";
 $oDocument->documentElement->parse($xmlData);
 
 // For parse of sample.xsl file we use a method of the DOM document parseFile().
 $oStylesheet->parseFile('sample.xsl');
 
 // Create object myXPath.
 $oXPath =& myXPath::create(&$oDocument);
 
 // Select any "book" nodes.
 $nodeSet = $oXPath->evaluate('//book');
 
 $length = sizeof($nodeSet);
 for ($i = 0; $i < $length; $i++) {
 $node =& $nodeSet[$i];
 // Add child element "date"
 $date =& $oDocument->createElement('date');
 $text =& $oDocument->createTextNode(date("d M Y", time()));
 $date->appendChild(&$text);
 $node->appendChild(&$date);
 }
 
 // Create object myXSLT.
 $oXSLT = myXSLT::create(&$oDocument, &$oOutDocument, &$oStylesheet, &$oXPath);
 
 // Start translating.
 $oXSLT->translate();
 
 // For display of the document now it is possible to use a method toString()
 // instead of object Output.
 $oOutDocument->setOption('indent', true);
 print $oOutDocument->toString();
 
 $time_end = getmicrotime();
 $time = $time_end - $time_start;
 print("<br>Time: $time s.");
 
 ?>
 
 |