La présence du code suivant xmlns="http://www.w3.org/TR/xhtml1/strict"
au sein de la déclaration <xsl:stylesheet/>
provoque une erreur de rendu dans Firefox.
Internet Explorer, Opera et Safari ne présentent pas le problème.
Exemple sans la directive xmlns
Exemple avec la directive xmlns
diff -u without_xmlns.xsl with_xmlns.xsl
--- without_xmlns.xsl 2008-11-17 11:17:48.000000000 +0100 +++ with_xmlns.xsl 2008-11-17 13:17:15.000000000 +0100 @@ -1,5 +1,6 @@ <?xml version="1.0"?> <xsl:stylesheet version="1.0" + xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/">
Testé avec :
L'erreur vient de la (mauvaise ?) lecture de la recommendation XSLT qui, dans son paragraphe 2.3 "Literal Result Element as Stylesheet", montre le code :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/xhtml1/strict">
Or, dans la recommendation XHTML 1.0, on trouve au pagraphe 3.1.1 "Strictly Conforming Documents" que l'adresse à fournir à l'attribut xmlns est : http://www.w3.org/1999/xhtml
.
Dès lors, le rendu dans Firefox est correct comme le montre le second exemple avec la directive xmlns.
diff -u with_xmlns.xsl with_xmlns2.xsl
--- with_xmlns.xsl 2008-11-17 14:26:19.000000000 +0100 +++ with_xmlns2.xsl 2008-11-17 14:49:52.000000000 +0100 @@ -1,6 +1,6 @@ <?xml version="1.0"?> <xsl:stylesheet version="1.0" - xmlns="http://www.w3.org/TR/xhtml1/strict" + xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/">