Bagaimana saya mengatur dokumen dengan rapi ke HTML5 <!DOCTYPE html>
melalui XSLT (dalam hal ini dengan kolektif.xdv )
Berikut ini, yang merupakan foo Google terbaik yang dapat saya temukan:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
menghasilkan:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
, lama<!DOCTYPE HTML SYSTEM "about:legacy-compat">
dan usang ("tidak boleh") HTML 4, HTML 4.01, XHTML 1.0 dan XHTML 1.1 (semua DTD ketat ketika ada SISTEM).Jawaban:
Saya pikir ini saat ini hanya didukung oleh penulisan DOCTYPE sebagai teks:
Ini akan menghasilkan output berikut:
sumber
disable-output-escaping
dimaksud oleh CaseyUntuk menggunakan DOCTYPE HTML sederhana
<!DOCTYPE html>
, Anda harus menggunakandisable-output-escaping
fitur:<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
. Namun,disable-output-escaping
merupakan fitur opsional di XSLT, jadi mesin XSLT atau pipa serialisasi Anda mungkin tidak mendukungnya.Untuk alasan ini, HTML5 menyediakan DOCTYPE alternatif untuk kompatibilitas dengan versi XSLT HTML5-unaware (yaitu semua versi XSLT saat ini ada) dan sistem lain yang memiliki masalah yang sama. DOCTYPE alternatif adalah
<!DOCTYPE html SYSTEM "about:legacy-compat">
. Untuk menampilkan doctype ini, gunakan atributdoctype-system="about:legacy-compat"
padaxsl:output
elemen tanpa menggunakandoctype-public
atribut sama sekali.sumber
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype saya. Seperti yang disarankan @Jirka Kosek, saya pikir prosesor XSLT saya mungkin rusak.<!DOCTYPE html SYSTEM "about:legacy-compat">
output ini
ini dimodifikasi sebagai perbaikan saya ke http://ukchill.com/technology/generating-html5-using-xslt/
sumber
<!DOCTYPE html SYSTEM "about:legacy-compat">
Dengan Saxon 9.4 Anda dapat menggunakan:
Ini menghasilkan:
sumber
Gunakan doctype-system sebagai ganti doctype-public
sumber
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
di DOCTYPE.Anda harus menggunakan XHTML 1.0 Strict sebagai doctype jika Anda ingin keluaran XHTML konsisten dengan HTML5, serializer libxml2's xml memiliki mode keluaran khusus yang dipicu oleh XHTML 1.0 doctypes yang memastikan bahwa output kompatibel dengan XHTML, (misal
<br />
alih-alih daripada<br/>
,<div></div>
bukan<div/>
).doctype-system="about:legacy-compat"
tidak tidak memicu modus kompatibilitas iniJika Anda senang dengan output html, maka pengaturan
<xsl:output method="html">
harus melakukan hal yang benar. Anda kemudian dapat mengatur DOCTYPE dengan<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
, meskipun ini perlu pipa masuk di tempat yang tepat karena XDV belum mendukung ini.Bahkan sepertinya
<xsl:output method="html"/>
tidak terlalu membantu - ini akan menghasilkan<br/>
keluaran sebagai<br></br>
.sumber
Variasi saran Jirka Kosek ini , melalui tema Advanced XDV di Plone.org, tampaknya bekerja untuk saya di kolektif.xdv .
sumber
Ini adalah komentar, tetapi saya tidak memiliki cukup poin karma untuk meletakkannya di tempat yang benar. Mendesah.
Tidak, prosesor XSLT Anda tidak rusak, hanya saja XDV menambahkan:
<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"/>
secara default, jadi ketika Anda menambahkan satu detik
<xsl:output doctype-system="about:legacy-compat"/>
yang sebelumnyadoctype-public
tidak ditimpa.Perhatikan bahwa XHTML 1.0 ketat terdaftar sebagai string doctype diizinkan yang usang , sehingga sangat dapat diterima untuk menggunakan doctype ini dan masih menyebutnya HTML5.
sumber
Maaf hanya memberikan tautan tetapi ini sudah dibahas di antara kelompok WHATWG tetapi sudah berbulan-bulan sejak saya mengatasinya. Di sini Ian Hickson dan beberapa pakar XML mendiskusikan hal ini:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
dan ini adalah masalah sebenarnya nomor:
http://www.w3.org/html/wg/tracker/issues/54
dan inilah diskusi ini
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
sumber
Gunakan tag ini
sumber
Kode berikut akan berfungsi sebagai templat mandiri jika disimpan sebagai
html5.xml
:Referensi
sumber
itulah yang saya gunakan untuk menghasilkan doctype html5 yang kompatibel (mengeluarkan saxons html5, jika tidak melakukan hal legacy)
sumber