XSLTProcessor::transformToDoc

(PHP 5, PHP 7, PHP 8)

XSLTProcessor::transformToDoc转换为文档

描述

public XSLTProcessor::transformToDoc(object $document, ?string $returnClass = null): object|false

将源节点转换为文档(例如 DOMDocument),应用 XSLTProcessor::importStylesheet() 方法给出的样式表。

参数

document

要转换的 DOMDocumentSimpleXMLElement 或与 libxml 兼容的对象。

returnClass

此可选参数可用于使 XSLTProcessor::transformToDoc() 返回指定类的对象。该类应扩展或与 document 的类相同。

返回值

生成的文档或错误时为 false

示例

示例 #1 转换为 DOMDocument

<?php

// 加载 XML 源
$xml = new DOMDocument;
$xml->load('collection.xml');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// 配置转换器
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // 附加 xsl 规则

echo trim($proc->transformToDoc($xml)->firstChild->wholeText);

?>

以上示例将输出

Hey! Welcome to Nicolas Eliaszewicz's sweet CD collection!

参见

添加注释

用户贡献的注释 1 个注释

1
franp at free dot fr
17 年前
在大多数情况下,如果您期望 XML(或 XHTML)作为输出,您最好直接使用 transformToXML()。您将获得对 xsl:output 属性的更好控制,特别是 omit-xml-declaration。

而不是
$proc = new XSLTProcessor();
$proc->importStylesheet($xsl);
$dom = $proc->transformToDoc($xml);
echo $dom->saveXML();

使用
$proc = new XSLTProcessor();
$proc->importStylesheet($xsl);
$newXml = $proc->transformToXML($xml);
echo $newXml;

在第一种情况下,无论您设置 omit-xml-declaration 如何,都会添加 <?xml version="1.0" encoding="utf-8"?>,而 transformToXML() 会考虑该属性。
To Top