Bonjour,
avant tout j'ignore si ce message aurait été plus à ça place dans la section XSL mais le probleme qu'il souleve ayant rapport avec l'utilisation d'une classe PHP, j'ai préféré le placer ici.
Je rencontre le probleme decris dans ce sujet à savoir que l'utilisation que la classe DOMDocument pour gènérer dynamiquement une feuille de style xsl pose probleme à la methode importStylesheet de la classe XSLTProcessor. Je penche pour une mauvaise utilisation de ma part de DOMDocument puisque l'utilisation de la fonction loadXML() ne posait pas ce probleme... Voici le bout de code que j'utilise pour générer la feuille de style XSL :
Et voici la sortie de $this->xsl->saveXML();
Le résultat est donc conforme à mes attentes. Mais lorsque j'importe cette feuille de style pour une une transformation XSL, la méthode importStyleSheet() me renvoit les message d'erreur suivant :
Apres visite de l'url http://www.w3.org/1999/XSL/Transform, je me suis aperçu que ce schema n'etait pas encore rédigé. Je m'étonne en revanche que cette feuille de style XSL que j'utilise depuis bientot 6 mois n'ait jusqu'alors généré aucune erreure.
Ou alors la vérité est ailleurs...
Modifié par ramy (23 Jan 2008 - 21:25)
avant tout j'ignore si ce message aurait été plus à ça place dans la section XSL mais le probleme qu'il souleve ayant rapport avec l'utilisation d'une classe PHP, j'ai préféré le placer ici.
Je rencontre le probleme decris dans ce sujet à savoir que l'utilisation que la classe DOMDocument pour gènérer dynamiquement une feuille de style xsl pose probleme à la methode importStylesheet de la classe XSLTProcessor. Je penche pour une mauvaise utilisation de ma part de DOMDocument puisque l'utilisation de la fonction loadXML() ne posait pas ce probleme... Voici le bout de code que j'utilise pour générer la feuille de style XSL :
$this->xsl = new DOMDocument('1.0','utf-8');
$this->xsl->formatOutput = true;
$xsl = $this->xsl->createElementNS('http://www.w3.org/1999/XSL/Transform','xsl:stylesheet');
$xsl->setAttribute('version','1.0');
/* Variables */
$var = $this->xsl->createElement('xsl:variable');
$var->setAttribute('name','ext');
$var->setAttribute('value',$ext);
$xsl->appendChild($var);
/* Output */
$output = $this->xsl->createElement('xsl:output');
$output->setAttribute('method',$ext == 'html' ? 'xml' : ($ext == 'xml' ? 'html' : $ext));
$output->setAttribute('encoding','utf-8');
$output->setAttribute('indent','no');
$output->setAttribute('omit-xml-declaration','no');
$output->setAttribute('doctype-system','http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd');
$output->setAttribute('doctype-public','-//W3C//DTD XHTML 1.0 Transitional//EN');
$xsl->appendChild($output);
/* Include */
$inc = $this->xsl->createElement('xsl:include');
$inc->setAttribute('href','default.xsl');
$xsl->appendChild($inc);
$this->xsl->appendChild($xsl);
Et voici la sortie de $this->xsl->saveXML();
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:variable name="ext" value="html"/>
<xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="no" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
<xsl:include href="default.xsl"/>
</xsl:stylesheet>
Le résultat est donc conforme à mes attentes. Mais lorsque j'importe cette feuille de style pour une une transformation XSL, la méthode importStyleSheet() me renvoit les message d'erreur suivant :
Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: Found a top-level element xsl:variable with null namespace URI in /var/php/lib/tpl.php on line 86
Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: Found a top-level element xsl:output with null namespace URI in /var/php/lib/tpl.php on line 86
Warning: XSLTProcessor::importStylesheet() [function.XSLTProcessor-importStylesheet]: Found a top-level element xsl:include with null namespace URI in /var/php/lib/tpl.php on line 86
Apres visite de l'url http://www.w3.org/1999/XSL/Transform, je me suis aperçu que ce schema n'etait pas encore rédigé. Je m'étonne en revanche que cette feuille de style XSL que j'utilise depuis bientot 6 mois n'ait jusqu'alors généré aucune erreure.
Ou alors la vérité est ailleurs...
Modifié par ramy (23 Jan 2008 - 21:25)