Comment définir proprement le doctype d'un fichier sur HTML5 <!DOCTYPE html>
via XSLT (dans ce cas avec collectif.xdv )
Ce qui suit, qui est le meilleur que mon Google foo ait pu trouver:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
produit:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
, hérité<!DOCTYPE HTML SYSTEM "about:legacy-compat">
et obsolète ("ne devrait pas") HTML 4, HTML 4.01, XHTML 1.0 et XHTML 1.1 (tous DTD strict quand il y a SYSTEM).Réponses:
Je pense que cela n'est actuellement pris en charge qu'en écrivant le doctype sous forme de texte:
Cela produira la sortie suivante:
la source
disable-output-escaping
était signifié par CaseyPour utiliser le HTML simple doctype
<!DOCTYPE html>
, vous devez utiliser ladisable-output-escaping
fonction:<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
. Cependant, ildisable-output-escaping
s'agit d'une fonctionnalité facultative dans XSLT, de sorte que votre moteur XSLT ou votre pipeline de sérialisation peut ne pas la prendre en charge.Pour cette raison, HTML5 fournit un doctype alternatif pour la compatibilité avec les versions XSLT non compatibles HTML5 (c'est-à-dire toutes les versions actuellement existantes de XSLT) et d'autres systèmes qui ont le même problème. Le doctype alternatif est
<!DOCTYPE html SYSTEM "about:legacy-compat">
. Pour afficher ce doctype, utilisez l'attributdoctype-system="about:legacy-compat"
sur l'xsl:output
élément sans utiliser d'doctype-public
attribut du tout.la source
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
à mon doctype. Comme @Jirka Kosek l'a suggéré, je pense que mon processeur XSLT est peut-être cassé.<!DOCTYPE html SYSTEM "about:legacy-compat">
cela sort
ceci est modifié comme mon correctif à http://ukchill.com/technology/generating-html5-using-xslt/
la source
<!DOCTYPE html SYSTEM "about:legacy-compat">
Avec Saxon 9.4, vous pouvez utiliser:
Cela génère:
la source
Utilisez doctype-system au lieu de doctype-public
la source
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
dans le doctype.Vous devez utiliser XHTML 1.0 Strict comme doctype si vous voulez une sortie XHTML cohérente avec HTML5, le sérialiseur xml de libxml2 a un mode de sortie spécial déclenché par les doctypes XHTML 1.0 qui garantit que la sortie est compatible XHTML, (par exemple
<br />
plutôt que<br/>
,<div></div>
plutôt que<div/>
).doctype-system="about:legacy-compat"
ne déclenche pas ce mode de compatibilitéSi vous êtes satisfait de la sortie html, alors le réglage
<xsl:output method="html">
devrait faire la bonne chose. Vous pouvez ensuite définir le doctype avec<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
, bien que cela nécessite une plomberie à l'endroit approprié car XDV ne le prend pas encore en charge.En fait, cela
<xsl:output method="html"/>
ne semble pas vraiment aider non plus - cela entraînera<br/>
une sortie sous forme de fichier<br></br>
.la source
Cette variante des conseils de Jirka Kosek , via le thème Advanced XDV sur Plone.org semble fonctionner pour moi dans collectif.xdv .
la source
C'est un commentaire, mais je n'ai pas assez de points de karma pour le mettre au bon endroit. Soupir.
Non, votre processeur XSLT n'est pas cassé, c'est juste que XDV ajoute:
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" media-type="text/html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
par défaut, donc lorsque vous ajoutez une seconde
<xsl:output doctype-system="about:legacy-compat"/>
le précédentdoctype-public
n'est pas écrasé.Notez que XHTML 1.0 strict est répertorié comme une chaîne doctype autorisée obsolète , il est donc parfaitement acceptable d'utiliser ce doctype et de l'appeler toujours HTML5.
la source
Désolé de ne fournir que des liens, mais cela a été discuté au sein du groupe WHATWG, mais cela fait plusieurs mois que je ne l'ai pas traité. Ici, Ian Hickson et quelques experts XML discutent de ceci:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
et voici le problème réel numéro:
http://www.w3.org/html/wg/tracker/issues/54
et voici cette discussion
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
la source
Utilisez cette balise
la source
Le code suivant fonctionnera comme un modèle autonome s'il est enregistré sous
html5.xml
:Références
la source
c'est ce que j'utilise pour générer un doctype html5 compatible (sortir les saxons html5, sinon faire le truc hérité)
la source