Come faccio a impostare in modo pulito il doctype di un file in HTML5 tramite XSLT (in questo caso con collective.xdv )
Quanto segue, che è il migliore che il mio Google foo è stato in grado di trovare:
produce:
Penso che al momento questo sia supportato solo scrivendo il doctype come testo:
<!DOCTYPE html>
Questo produrrà il seguente risultato:
Per usare il semplice docty HTML , devi usare la funzione
disable-output-escaping
:
. Tuttavia, disable-output-escaping
è una funzionalità opzionale in XSLT, quindi il motore XSLT o la pipeline di serializzazione potrebbero non supportarlo.
Per questo motivo, HTML5 fornisce un doctype alternativo per la compatibilità con le versioni XSLT non note HTML5 (ovvero tutte le versioni attualmente esistenti di XSLT) e altri sistemi che presentano lo stesso problema. Il doctype alternativo è . Per generare questo doctype, utilizzare l’attributo
doctype-system="about:legacy-compat"
sull’elemento xsl:output
senza utilizzare un attributo doctype-public
.
...
questa uscita
questo è modificato come la mia correzione a http://ukchill.com/technology/generating-html5-using-xslt/
Con Saxon 9.4 puoi usare:
Questo genera:
Usa doctype-system invece di doctype-public
È necessario utilizzare XHTML 1.0 Strict come doctype se si desidera che l’output XHTML sia coerente con HTML5, il serializer xml di libxml2 ha una modalità di output speciale triggersta dal doctype XHTML 1.0 che garantisce l’output compatibile con XHTML, (ad esempio
anziché
,
piuttosto che
). doctype-system="about:legacy-compat"
non triggers questa modalità di compatibilità
Se sei soddisfatto dell’output html, l’impostazione
dovrebbe fare la cosa giusta. È quindi ansible impostare il doctype con
, anche se questo dovrà essere collegato al punto appropriato in quanto XDV non supporta questo ancora.
In effetti sembra che
non sia di certo di aiuto – questo produrrà
come output
.
Questa variazione del consiglio di Jirka Kosek , tramite il tema XDV avanzato su Plone.org, sembra funzionare per me in collective.xdv .
Questo è un commento, ma non ho abbastanza punti karma per metterlo nel posto giusto. Sospiro.
Apprezzo che questo sia probabilmente il modo corretto e guidato dagli standard per realizzare ciò che voglio (l’ho svalutato come tale). Ma il primo non è supportato (il mio processore cade) e il secondo produce ancora ” http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ” nel mio doctype. Come suggerito da @Jirka Kosek, penso che il mio processore XSLT potrebbe essere rotto.
No, il tuo processore XSLT non è rotto, è solo che XDV aggiunge:
di default, quindi quando aggiungi un secondo
il precedente doctype-public
non viene sovrascritto.
Si noti che XHTML 1.0 strict è elencato come una stringa doctype obsoleta consentita , quindi è perfettamente accettabile utilizzare questo doctype e chiamarlo ancora HTML5.
Mi spiace di fornire solo link, ma questo è stato discusso dal gruppo WHATWG, ma sono passati molti mesi da quando l’ho affrontato. Qui Ian Hickson e alcuni esperti di XML discutono di questo:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
e qui è il numero di rilascio effettivo:
http://www.w3.org/html/wg/tracker/issues/54
ed ecco questa discussione
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
Il seguente codice funzionerà come modello autonomo se salvato come html5.xml
:
hi
Riferimenti
questo è quello che uso per generare un doctype html5 compatibile (ottenere sassoni html5, altrimenti fare la cosa legacy)
Usa questo tag