The trashiest blog in the World...

Aller au contenu | Aller au menu | Aller à la recherche

HTML5 et XSL...

Suite à la récente mise en ligne de la nouvelle version de mon site perso, j'avais décidé d'utiliser également ce thème pour mon Curriculum Vitae.

Mon site perso et mon cv sont désormais tous deux en HTML5, et basés sur le même thème :-)

Côté technique, j'ai utilisé Smarty pour mon site perso, aucun souci. Pour mon CV, j'ai utilisé XSLT, et c'est là que j'ai eu un petit problème... En effet, la déclaration doctype HTML5 est la suivante :

<!DOCTYPE html>

Super... Sauf que, en XSL, pour générer un doctype, il faut avoir recours à l'un ou l'autre (ou les deux en même temps) des attributs doctype-public et doctype-system de la balise xsl:output. Pour une déclaration XHTML 1.1, on aurait donc :

<xsl:output method="xml" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"  />

Et en sortie :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Si les attributs doctype-public et doctype-system sont tous deux absents, aucune déclaration de doctype ne sera rendue en sortie. On peut envisager de mettre une valeur vide, mais en sortie, on aura "" (alors que dans le cas de HTML5 ; on ne veut rien !).

Les spécifications actuelles de HTML5 fournissent une alternative via la DOCTYPE legacy string) :

The DOCTYPE legacy string should not be used unless the document is generated from a system that cannot output the shorter string.

En français, grossièrement : à n'utiliser que s'il est impossible au système de générer une chaîne plus courte. C'est mon cas ! Super ! J'achète ! :-D
Dans la XSL, on pourra donc mettre :

<xsl:output method="xml" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"  />

Et ainsi obtenir en sortie :

<!DOCTYPE html SYSTEM "about:legacy-compat">

Et voilà qui m'a sauvé la mise, j'ai du mal à voir comment j'aurai pu utiliser une feuille de style CSS commune sur une page en XHTML 1 et une autre en HTML5 ;-)