将以下内容保留为xmltest.php
<?php
require_once "xsl_class.php";
$xml = new XML;
$p = new XSL;
$p->parser("resume2.xsl",$xml->parser("resume.xml"));
$p->display();
?>
变换个中的resume2.xsl,咱们仍将看到分歧的页面,只是以改变成HTML格局了。
相干的类:
类xml_class解析xml文档发生一个相似于domxml的布局
类xsl_class派生于xml_class,用于解析xsl文档并摹拟xsl函数,个中template还没有完成。
*****************
xml_class.php
*****************
<?php
class Element {
var $Element; // 这类节点用于文档中的任何元素。元素节点的子节点可所以其内容的元素节点、正文节点、处置信息节点和文本节点。
var $Text; // 文档中呈现的一切文本,都分组归入到文本节点中。文本节点不成以有同为文本节点的紧接着的前或后的兄弟节点。
var $Attribute; // 每个元素节点都有一套本人附加的属性节点。默许的属性值以与指定属性一样的办法来处置。这些节点都没有子节点。
var $Namespace; // 关于每个以xlmns:和属性节点开首的元素,都有一个称号空格节点。这些节点没有子节点。
var $ProcessingInstruction; // 每个处置指令都有一个独自的节点。这些节点都没有子节点。
var $Comment; // 每个都有一个正文节点。这些节点都没有子节点。
var $parents = array();
var $childs = array();
}
class xml {
var $tm = array();
var $xml_parser;
var $data = array();
var $element = ""; // 以后节点
var $stack = array(); // 缓存以后标头的相干参数
var $type;
function trustedFile($file) {
// only trust local files owned by ourselves
if (!eregi("^([a-z]+)://", $file)
&& fileowner($file) == getmyuid()) {
return true;
}
return false;
}
//处置指令标头
function PIHandler($parser, $target, $data) {
switch(strtolower($target)) {
case "php":
global $parser_file;
// If the parsed document is "trusted", we say it is safe
// to execute PHP code inside it. If not, display the code
// instead.
if($this->trustedFile($parser_file[$parser])) {
eval($data);
} else {
$this->tm[] = sprintf("Untrusted PHP code: <i>%s</i>",
htmlspecialchars($data));
}
break;
default:
// echo $target;
// echo "==".$data;
// echo printf("%s %s",$target,$data);
break;
}
}