PHP 8.4.6 Released!

XSLTProcessor::transformToDoc

(PHP 5, PHP 7, PHP 8)

XSLTProcessor::transformToDocTransforma en un documento

Descripción

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

Transforma el nodo fuente en un documento (por ejemplo, DOMDocument) aplicando la hoja de estilo dada por el método XSLTProcessor::importStylesheet().

Parámetros

document

El Dom\Document, DOMDocument, SimpleXMLElement o un objeto compatible con libxml a transformar.

returnClass

Este parámetro opcional puede ser utilizado para que XSLTProcessor::transformToDoc() devuelva un objeto de la clase especificada. Esta clase debe extender la clase de document, o ser la misma clase que la de document.

Errores/Excepciones

Los siguientes errores pueden ocurrir al utilizar una expresión que invoca retrollamadas PHP.

  • Lanza una Error si una retrollamada PHP es invocada pero ninguna retrollamada está registrada, o si la retrollamada nombrada no está registrada.
  • Lanza una TypeError si la sintaxis php:function es utilizada y el nombre del gestor no es un string.
  • Lanza una Error si un objeto no-DOM es devuelto por una retrollamada.

Valores devueltos

El documento resultante o false si ocurre un error.

Historial de cambios

Versión Descripción
8.4.0 Ahora lanza una Error si la retrollamada no puede ser invocada, en lugar de emitir una advertencia.
8.4.0 Añade soporte para Dom\Document.

Ejemplos

Ejemplo #1 Transformación en DOMDocument

<?php

// Carga de la fuente XML
$xml = new DOMDocument;
$xml->load('collection.xml');

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

// Configuración del transformador
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // adjuntar las reglas xsl

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

?>

El resultado del ejemplo sería:

¡Hola! Bienvenido a la increíble colección de CD de Nicolas Eliaszewicz.

Ejemplo #2 Transformación en Dom\Document

<?php

$xml
= Dom\XMLDocument::createFromFile('collection.xml');
$xsl = Dom\XMLDocument::createFromFile('collection.xsl');

// Configuración del transformador
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // adjuntar las reglas xsl

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

?>

El resultado del ejemplo sería:

¡Hola! Bienvenido a la increíble colección de CD de Nicolas Eliaszewicz.

Ver también

add a note

User Contributed Notes 1 note

up
1
franp at free dot fr
18 years ago
In most cases if you expect XML (or XHTML) as output you better use transformToXML() directly. You gain better control over xsl:output attributes, notably omit-xml-declaration.

Instead of :
$proc = new XSLTProcessor();
$proc->importStylesheet($xsl);
$dom = $proc->transformToDoc($xml);
echo $dom->saveXML();

do use :
$proc = new XSLTProcessor();
$proc->importStylesheet($xsl);
$newXml = $proc->transformToXML($xml);
echo $newXml;

In the first case, <?xml version="1.0" encoding="utf-8"?> is added whatever you set the omit-xml-declaration while transformToXML() take the attribute into account.
To Top