PHP的Advanced DOMDocument, DOMXpath和XSLTProcessor库

1.2.0 2012-08-29 14:36 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:56:24 UTC


README

什么是DOMi?

DOMi是为PHP改进的DOM对象,它结合并提高了三个现有PHP对象(DOMDocument、DOMXpath和XSLTProcessor)的功能。这三个对象与XSL语言结合,可以创建一个用于渲染HTML页面的模板系统。

示例

创建DOMi对象

使用DOMi创建XSL模板的第一步是包含DOMi类并创建DOMi对象的实例。DOMi的构造函数需要一个参数传入。该参数用于设置DOMi将用来构建XML树的DOMDocument对象。可以传入三种不同类型的参数来创建一个DOMi对象。

创建DOMi对象的第一种方法是传递一个字符串作为XML文档根节点的节点名,如下面的示例所示。

$DOMi = new DOMi('root');

创建DOMi对象的第二种方法是传递一个字符串,该字符串是本地XML文件的文件名。

$DOMi = new DOMi();
$DOMi->load('/var/www/xml/document.xml');

创建DOMi对象的第三种方法是传递一个DOMDocument对象,DOMi将使用此DOMDocument作为其主要DOMDocument。

$DOMDocument = new DOMDocument('1.0', 'UTF-8');
$DOMi = new DOMi($DOMDocument);

在这三种情况下,DOMi都带有内置的DOMDocument、DOMXpath和XSLTProcessor。这些对象都是DOMi的成员属性,可以通过DOMi透明访问。例如,如果您想使用DOMXpath::query方法,可以通过以下两种方式之一访问它

$DOMi->Xpath->query()
$DOMi->query()

这两种方法都是相同的。当请求DOMi未知方法时,它会检查该方法是否存在于其成员对象中,如果是,则返回成员对象调用请求方法的返回结果。通过这个系统,对旧DOMDocument设置的遗留支持是100%的。

向DOMi添加数据

一旦DOMi对象存在,下一步就是开始向DOMDocument添加数据,最佳方式是通过DOMi::AttachToXml方法。此方法将接受一个PHP数据结构并将其转换为XML树,并将其附加到DOMi内部的DOMDocument。目前,AttachToXml支持以下PHP数据结构

  • 数组
  • 字符串
  • 整型
  • 空值
  • DOMDocument
  • DOMElement
  • 任何PHP对象

AttachToXml接受两个必需参数和一个可选参数。第一个参数是要转换为XML树的要转换的数据。第二个参数是要使用的节点名称。第三个参数是要附加新节点的DOMi的DOMDocument中的DOMNode,默认为根节点。

$DOMi->AttachToXml($_SERVER, 'server');

此代码将创建一个名为<server>的新节点,将其附加到DOMDocument的根节点,并为$_SERVER超全局数组中的每个元素创建新节点。

添加样式表

DOMi可以在渲染时导入样式表,或者可以通过手动调用添加样式表。如果您计划在渲染时添加,这是一个更简单、更干净的方法,可以跳到渲染部分。

如上所述,DOMi能够透明访问DOMDocument、DOMXpath和XSLTProcessor的任何方法。这意味着样式表是通过与XSLTProcessor相同的导入样式表方法添加的。

$DOMi->importStylesheet($DOMStylesheet);

然而,DOMi有一个方法,可以更轻松地创建用作样式的DOMDocument对象。GenerateXsl()方法接受字符串或要包含的文件名数组。此方法将动态创建一个包含提供的每个样式的DOMDocument,这对于要包含的样式表列表将根据用户查看的页面而变化非常有用。默认情况下,GenerateXsl将导入这些样式表,尽管可以通过传递第二个参数来禁用此功能。

$DOMi->GenerateXsl('/var/www/xsl/skin.xsl');

渲染

一旦创建了DOMi,添加了数据,并导入了样式表,剩下要做的就是渲染页面。DOMi::Render()是DOMi用来运行XSLTProcessor并返回输出的方法。Render()接受两个可选参数 - XSL样式表的文件位置和渲染标志。第一个参数可以用来在渲染时提供样式表,如果未调用GenerateXsl()或importStylesheet()。第二个标志可以设置为以下三个值之一

  • DOMi::RENDER_HTML - 默认设置,将XML和XSL样式表通过XSLTProcessor运行并返回输出。
  • DOMi::RENDER_XML - 以XML内容类型显示DOMDocument内容,这对于调试非常有用,因为它可以让你看到你的XML树以帮助你编写XSL。
  • DOMi::RENDER_VIEW - 以XML内容类型显示XML / XSL / XSLTProcessor转换的结果,这主要用于编写API。

许可证

本程序是自由软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,许可证版本为3,或(根据您的选择)任何更高版本。

本程序的分发是出于它可能有用的希望,但不提供任何保证;甚至没有关于适销性或适用于特定目的的暗示保证。有关详细信息,请参阅GNU通用公共许可证。

您应已收到一份GNU通用公共许可证副本,与该程序一起。如果没有,请参阅https://gnu.ac.cn/licenses/