Bonjour,

Est-ce que quelqu'un pourrait m'aider à comprendre pourquoi pour un même fichier XML donné, transformé en PHP, avec feuille XSLT, PHP5 me restitue deux fois l'attribut xmlns="http://www.w3.org/1999/xhtml" dans la balise ouvrante de l'élément html, là où en PHP4, il ne m'est restitué qu'une et une seule fois ?

Voici le code de la feuille XSLT :

	<xsl:template match="document">
		<html>
			<xsl:attribute name="xmlns"><xsl:text>http://www.w3.org/1999/xhtml</xsl:text></xsl:attribute>
			<xsl:attribute name="xml:lang"><xsl:text>fr</xsl:text></xsl:attribute>
			<xsl:attribute name="lang"><xsl:text>fr</xsl:text></xsl:attribute>
		<head>
			<xsl:apply-templates select="office:document-meta"/>
			<xsl:call-template name="process-all-styles"/>
		</head>
		<xsl:apply-templates select="office:document-content"/>
		</html>
	</xsl:template>


Je transforme en PHP5, avec ce code :

/*** PHP Convert XML ***/
	private function _xslt_convert() 
	{
		$xsl = new DOMDocument();
		$xsl->load($this->file['xsl']);
		
		$xslt = new XSLTProcessor();
		$xslt->importStylesheet($xsl);

		$xml = new DOMDocument();
		$xml->load($this->file['xml_tmp']);
		
		$this->file['tmp'] = html_entity_decode($xslt->transformToXML($xml));
	}


Et, en PHP4, par ce code :

function xslt_convert()
	{
		$this->file['x'] = xslt_create(); 
		if(!xslt_process($this->file['x'], $this->file['xml_tmp'], $this->file['xsl'], $this->file['html_tmp']))
			die(xslt_errno($xh).': '.xslt_error($xh));
		xslt_free($this->file['x']);
		
		$this->file['tmp'] = html_entity_decode(file_get_contents($this->file['html_tmp']));
	}


Pour finir, si j'enlève dans la feuille de style la déclaration de l'attribut xmlns, en PHP4, je ne l'ai plus et en PHP5, je l'ai une fois...
Je suis étonné de ce comportement !
Modifié par ste (30 Jul 2007 - 12:19)