Wie würde ich den Doctype einer Datei über XSLT sauber auf HTML5 setzen <!DOCTYPE html>
(in diesem Fall mit kollektiv.xdv ) ?
Folgendes ist das Beste, was mein Google Foo finden konnte:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
produziert:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
, alt<!DOCTYPE HTML SYSTEM "about:legacy-compat">
und veraltet ("sollte nicht") HTML 4, HTML 4.01, XHTML 1.0 und XHTML 1.1 (alles strenge DTD, wenn es SYSTEM gibt).Antworten:
Ich denke, dies wird derzeit nur unterstützt, indem der Doctype als Text geschrieben wird:
Dies erzeugt die folgende Ausgabe:
quelle
disable-output-escaping
war gemeint von CaseyUm den einfachen HTML-Doctype zu verwenden
<!DOCTYPE html>
, müssen Sie die folgendedisable-output-escaping
Funktion verwenden :<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
. Diesdisable-output-escaping
ist jedoch eine optionale Funktion in XSLT, sodass Ihre XSLT-Engine oder Serialisierungspipeline sie möglicherweise nicht unterstützt.Aus diesem Grund bietet HTML5 einen alternativen Doctype für die Kompatibilität mit HTML5-unbekannten XSLT-Versionen (dh allen derzeit vorhandenen Versionen von XSLT) und anderen Systemen mit demselben Problem. Der alternative Doctype ist
<!DOCTYPE html SYSTEM "about:legacy-compat">
. Verwenden Sie zum Ausgeben dieses Doctype das Attributdoctype-system="about:legacy-compat"
für dasxsl:output
Element, ohne überhaupt eindoctype-public
Attribut zu verwenden.quelle
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
meinem Doctype. Wie @Jirka Kosek vorgeschlagen hat, ist mein XSLT-Prozessor möglicherweise defekt.<!DOCTYPE html SYSTEM "about:legacy-compat">
dies gibt aus
Dies wurde als mein Fix auf http://ukchill.com/technology/generating-html5-using-xslt/ geändert.
quelle
<!DOCTYPE html SYSTEM "about:legacy-compat">
Mit Saxon 9.4 können Sie verwenden:
Dies erzeugt:
quelle
Verwenden Sie doctype-system anstelle von doctype-public
quelle
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
im Doktyp.Sie müssen XHTML als Doctype 1.0 Strict verwenden , wenn Sie XHTML - Ausgabe konsistent wollen mit HTML5, XML Serializer des libxml2 hat einen speziellen Ausgabemodus durch die XHTML ausgelöst 1.0 doctypes , der sicherstellt Ausgabe ist XHTML kompatibel (zB
<br />
statt<br/>
,<div></div>
anstatt<div/>
).doctype-system="about:legacy-compat"
tut nicht diese Kompatibilitätsmodus auslösenWenn Sie mit der HTML-Ausgabe zufrieden sind,
<xsl:output method="html">
sollte die Einstellung das Richtige tun. Sie können dann den Doctype mit einstellen<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
, obwohl dies an der entsprechenden Stelle installiert werden muss, da XDV dies noch nicht unterstützt.Tatsächlich scheint
<xsl:output method="html"/>
es auch nicht wirklich zu helfen - dies führt dazu,<br/>
dass die Ausgabe als erfolgt<br></br>
.quelle
Diese Variation von Jirka Koseks Ratschlägen über das Advanced XDV-Theming auf Plone.org scheint für mich in kollektiv.xdv zu funktionieren .
quelle
Dies ist ein Kommentar, aber ich habe nicht genug Karma-Punkte, um ihn an der richtigen Stelle zu platzieren. Seufzer.
Nein, Ihr XSLT-Prozessor ist nicht defekt. XDV fügt lediglich Folgendes hinzu:
<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"/>
Standardmäßig also, wenn Sie eine Sekunde
<xsl:output doctype-system="about:legacy-compat"/>
die vorherige hinzufügendoctype-public
nicht überschrieben.Beachten Sie, dass XHTML 1.0 strict als veraltete zulässige Doctype-Zeichenfolge aufgeführt ist. Es ist daher durchaus akzeptabel, diesen Doctype zu verwenden und ihn dennoch als HTML5 zu bezeichnen.
quelle
Es tut mir leid, nur Links bereitzustellen, aber dies wurde in der WHATWG-Gruppe diskutiert, aber es ist viele Monate her, seit ich mich damit befasst habe. Hier diskutieren Ian Hickson und einige XML-Experten dies:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
und hier ist das eigentliche Problem Nummer:
http://www.w3.org/html/wg/tracker/issues/54
und hier ist diese Diskussion
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
quelle
Verwenden Sie dieses Tag
quelle
Der folgende Code funktioniert als eigenständige Vorlage, wenn er als gespeichert wird
html5.xml
:Verweise
quelle
das ist es, was ich benutze, um einen kompatiblen HTML5-Doctype zu generieren (sächsisches HTML5 rausholen, sonst das Legacy-Ding machen)
quelle