PHP 8.4.2 Released!

XSLTProcessor::transformToDoc

(PHP 5, PHP 7, PHP 8)

XSLTProcessor::transformToDocTransforme en un document

Description

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

Transforme le nœud source en un document (par ex. DOMDocument) en y appliquant la feuille de style donnée par la méthode XSLTProcessor::importStylesheet().

Liste de paramètres

document

Le Dom\Document, DOMDocument, SimpleXMLElement ou un objet libxml-compatible à transformer.

returnClass

Ce paramètre facultatif peut être utilisé afin que XSLTProcessor::transformToDoc() renvoie un objet de la classe spécifiée. Cette classe doit soit étendre la classe de document, soit être la même classe que celle de document.

Valeurs de retour

Le document résultant ou false si une erreur survient.

Historique

Version Description
8.4.0 Ajout du support pour Dom\Document.

Exemples

Exemple #1 Transformation en DOMDocument

<?php

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

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

// Configuration du transformateur
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attachement des règles xsl

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

?>

L'exemple ci-dessus va afficher :

Salut ! Bienvenue dans la superbe collection de CD de Nicolas Eliaszewicz !

Exemple #2 Transformation en Dom\Document

<?php

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

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

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

?>

L'exemple ci-dessus va afficher :

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

Voir aussi

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