Como eu definiria corretamente o doctype de um arquivo para HTML5 <!DOCTYPE html>
via XSLT (neste caso, com o arquivo colectivo.xdv )
A seguir, qual é o melhor que meu Google Foo conseguiu encontrar:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
produz:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
, herdado<!DOCTYPE HTML SYSTEM "about:legacy-compat">
e obsoleto ("não deveria") HTML 4, HTML 4.01, XHTML 1.0 e XHTML 1.1 (todos DTD estritos quando existe SISTEMA).Respostas:
Eu acho que isso atualmente é suportado apenas escrevendo o doctype como texto:
Isso produzirá a seguinte saída:
fonte
disable-output-escaping
se entende por CaseyPara usar o simples doctype HTML
<!DOCTYPE html>
, você tem que usar odisable-output-escaping
recurso:<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
. No entanto,disable-output-escaping
é um recurso opcional no XSLT, portanto, o mecanismo XSLT ou o pipeline de serialização talvez não o suporte.Por esse motivo, o HTML5 fornece um tipo de documento alternativo para compatibilidade com versões XSLT desconhecidas por HTML5 (ou seja, todas as versões atualmente existentes do XSLT) e outros sistemas com o mesmo problema. O doctype alternativo é
<!DOCTYPE html SYSTEM "about:legacy-compat">
. Para gerar esse doctype, use o atributodoctype-system="about:legacy-compat"
noxsl:output
elemento sem usar nenhumdoctype-public
atributo.fonte
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
no meu doctype. Como sugeriu @Jirka Kosek, acho que meu processador XSLT pode estar quebrado.<!DOCTYPE html SYSTEM "about:legacy-compat">
isso gera
isso foi modificado como minha correção para http://ukchill.com/technology/generating-html5-using-xslt/
fonte
<!DOCTYPE html SYSTEM "about:legacy-compat">
Com o Saxon 9.4, você pode usar:
Isso gera:
fonte
Use doctype-system em vez de doctype-public
fonte
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
no doctype.Você deve usar XHTML 1.0 Strict como o doctype se você quiser saída XHTML compatível com HTML5, serializador xml do libxml2 tem um modo de saída especial desencadeada pelo XHTML 1.0 doctypes que garante saída é compatível com XHTML, (por exemplo,
<br />
ao invés de<br/>
,<div></div>
em vez de<div/>
).doctype-system="about:legacy-compat"
se não desencadear este modo de compatibilidadeSe você está satisfeito com a saída html, a configuração
<xsl:output method="html">
deve fazer a coisa certa. Você pode definir o doctype com<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
, embora isso precise ser canalizado no local apropriado, pois o XDV ainda não suporta isso.De fato, parece que
<xsl:output method="html"/>
também não ajuda muito - isso resultará em<br/>
uma saída como<br></br>
.fonte
Essa variação do conselho de Jirka Kosek , através do tema Advanced XDV no Plone.org, parece funcionar para mim no coletivo.xdv .
fonte
Este é um comentário, mas não tenho pontos de carma suficientes para colocá-lo no lugar correto. Suspiro.
Não, seu processador XSLT não está quebrado, apenas o XDV adiciona:
<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"/>
por padrão, portanto, quando você adiciona um segundo,
<xsl:output doctype-system="about:legacy-compat"/>
o anteriordoctype-public
não é substituído.Observe que o XHTML 1.0 strict está listado como uma seqüência de caracteres doctype permitida obsoleta , portanto, é perfeitamente aceitável usar esse doctype e ainda chamá-lo de HTML5.
fonte
Desculpe por fornecer apenas links, mas isso foi discutido entre o grupo WHATWG, mas já se passaram muitos meses desde que eu lidei com isso. Aqui Ian Hickson e alguns especialistas em XML discutem isso:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
e aqui está o problema real número:
http://www.w3.org/html/wg/tracker/issues/54
e aqui está essa discussão
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
fonte
Use esta tag
fonte
O código a seguir funcionará como um modelo autônomo se salvo como
html5.xml
:Referências
fonte
é isso que eu uso para gerar um doctype html5 compatível (obter saxões html5, caso contrário, fazer a coisa herdada)
fonte