分类:
2008-05-27 22:03:59
本文节选于《Programming PHP》第二版(中译名《PHP程序设计》第二版,Haohappy等译,电子工业出版社出版)
11.6 使用XSLT转换XML
Transforming XML with XSLT
XSLT(eXtensible Stylesheet Language Transformation,可扩展样式表语言转换),是一种将XML文档转换成不同的XML、HTML或其他格式的语言。例如,很多网站提供几种不同 格式来输出内容,如HTML、可打印的HTML和WML(Wireless Markup Language,无线标记语言),这些都是很常见的。同一信息多种视图的最简单的实现方法是把内容放在一个XML文档中,然后用XSLT来生成 HTML、可打印的HTML和WML。
PHP的XSLT扩展使用了libxslt库来提供XSLT支持。PHP5默认支持这个库,只要在编译PHP时加上选项--with-xsl[=DIR],就能使用该类库。
一个XSLT转换过程中有3种文档:原始的XML文档、包含转换规则的XSLT文档和结果文档。最后生成的文档不一定要是 XML格式——XSLT常用的用法是从XML创建HTML。用PHP来进行XSLT转换,需要创建一个XSLT处理器,给它要转换的内容,然后销毁该处理 器。
通过创建一个XSLTProcessor对象来创建一个处理器:
$xslt = new XSLTProcessor;
把XML和XSL文件解析成DOM对象:
$xml = new DOMDocument
$xml->load($xml_file);
$xsl = new DOMDocument;
$xsl->load($xsl_file);
给该对象添加XML转换规则:
$xslt->importStyleSheet($xsl);
用transformToDoc( )、transformToURI( )、或transformToXML( )方法来处理一个文件:
$result = $xslt->transformToXML($xml);
Document参数是一个表达XML文档的DOM对象。
示例11-11是我们要转换的XML文档。它的格式和你在网络上看到的许多新闻的格式很相似。
示例11-11:XML文档
示例11-12是我们用来将XML文档转换成HTML的XSL文档。每个xsl:template元素包含一个处理输入文档的规则。
示例11-12:News XSL transform
method="html" indent="yes" encoding="utf-8" />
[ More ]
示例11-13是一段简短的代码,用XSL样式表将XML文档转换成HTML文档。我们创建了一个处理器,传递文档给它,然后打印出结果。
示例11-13:XSL转换
$processor = new XSLTProcessor;
$xsl = new DOMDocument;
$xsl->load('rules.xsl');
$processor ->importStyleSheet($xsl);
$xml = new DOMDocument;
$xml->load('feed.xml');
$result = $processor ->transformToXML($xml);
echo "
$result";
?>
尽管没有特别讨论PHP,Doug Tidwell所著的《XSLT》(O'Reilly出版)提供了XSLT样式表的详细语法指南。