¿Cómo establecería limpiamente el doctype de un archivo en HTML5 a <!DOCTYPE html>
través de XSLT (en este caso con collective.xdv )
Lo siguiente, que es lo mejor que mi foo de Google ha podido encontrar:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
produce:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
, heredado<!DOCTYPE HTML SYSTEM "about:legacy-compat">
y obsoleto ("no debería") HTML 4, HTML 4.01, XHTML 1.0 y XHTML 1.1 (todo DTD estricto cuando hay SISTEMA).Respuestas:
Creo que esto solo se admite actualmente escribiendo el doctype como texto:
Esto producirá el siguiente resultado:
fuente
disable-output-escaping
fue pensado por CaseyPara utilizar el tipo de documento HTML sencillo
<!DOCTYPE html>
, usted tiene que utilizar ladisable-output-escaping
función:<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
. Sin embargo,disable-output-escaping
es una característica opcional en XSLT, por lo que su motor XSLT o la tubería de serialización podrían no ser compatibles.Por esta razón, HTML5 proporciona un tipo de documento alternativo para la compatibilidad con versiones XSLT que no son compatibles con HTML5 (es decir, todas las versiones actuales de XSLT) y otros sistemas que tienen el mismo problema. La alternativa doctype es
<!DOCTYPE html SYSTEM "about:legacy-compat">
. Para generar este tipo de documento, use el atributodoctype-system="about:legacy-compat"
en elxsl:output
elemento sin usar ningúndoctype-public
atributo.fuente
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
mi doctype. Como sugirió @Jirka Kosek, creo que mi procesador XSLT podría estar roto.<!DOCTYPE html SYSTEM "about:legacy-compat">
esto produce
esto se modifica como mi solución a http://ukchill.com/technology/generating-html5-using-xslt/
fuente
<!DOCTYPE html SYSTEM "about:legacy-compat">
Con Saxon 9.4 puedes usar:
Esto genera:
fuente
Utilice doctype-system en lugar de doctype-public
fuente
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
en el doctype.Usted debe utilizar XHTML 1.0 estricto como el tipo de documento si desea que la salida XHTML compatible con HTML 5, serializador XML de libxml2 tiene un modo especial de salida provocada por el XHTML 1.0 doctypes que la producción asegura es XHTML compatibles, (por ejemplo,
<br />
en vez de<br/>
,<div></div>
en lugar de<div/>
).doctype-system="about:legacy-compat"
no no activar este modo de compatibilidadSi está satisfecho con la salida html, entonces la configuración
<xsl:output method="html">
debería hacer lo correcto. Luego puede configurar el doctype con<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
, aunque esto necesitará conectarse en el lugar apropiado ya que XDV aún no lo admite.De hecho, parece
<xsl:output method="html"/>
que tampoco ayuda realmente, esto dará como resultado la<br/>
salida como<br></br>
.fuente
Esta variación de los consejos de Jirka Kosek , a través de temas avanzados de XDV en Plone.org parece funcionar para mí en collective.xdv .
fuente
Este es un comentario, pero no tengo suficientes puntos de karma para ponerlo en el lugar correcto. Suspiro.
No, su procesador XSLT no está roto, es solo que XDV agrega:
<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"/>
de manera predeterminada, cuando agrega un segundo,
<xsl:output doctype-system="about:legacy-compat"/>
el anteriordoctype-public
no se sobrescribe.Tenga en cuenta que XHTML 1.0 estricto aparece como una cadena de doctype permitida obsoleta , por lo que es perfectamente aceptable usar este doctype y aún llamarlo HTML5.
fuente
Lamento proporcionar solo enlaces, pero esto se discutió entre el grupo WHATWG, pero han pasado muchos meses desde que lo he tratado. Aquí Ian Hickson y algunos expertos en XML discuten esto:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
y aquí está el problema real número:
http://www.w3.org/html/wg/tracker/issues/54
y aquí está esta discusión
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
fuente
Usa esta etiqueta
fuente
El siguiente código funcionará como una plantilla independiente si se guarda como
html5.xml
:Referencias
fuente
eso es lo que uso para generar un doctype html5 compatible (sacar saxons html5, de lo contrario hacer lo heredado)
fuente