如何通过XSLT将文件的文档类型干净地设置为HTML5 <!DOCTYPE html>
(在本例中使用collective.xdv)
下面是我在Google foo上找到的最好的信息:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
产生:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
发布于 2010-08-02 20:05:29
我认为这目前只能通过将doctype写出为text来支持:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" indent="yes" />
<xsl:template match="/">
<xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
</html>
</xsl:template>
</xsl:stylesheet>
这将产生以下输出:
<!DOCTYPE html>
<html>
</html>
发布于 2010-08-04 19:09:04
要使用简单的HTML doctype <!DOCTYPE html>
,必须使用disable-output-escaping
特性:<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
。但是,disable-output-escaping
是XSLT中的一个可选特性,因此您的XSLT引擎或序列化管道可能不支持它。
出于这个原因,HTML5提供了另一种文档类型,以便与不支持HTML5的XSLT版本(即所有当前存在的XSLT版本)和其他有相同问题的系统兼容。另一个文档类型是<!DOCTYPE html SYSTEM "about:legacy-compat">
。要输出此文档类型,请在xsl:output
元素上使用属性doctype-system="about:legacy-compat"
,而不使用任何doctype-public
属性。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="about:legacy-compat"/>
...
<html>
</html>
</xsl:stylesheet>
发布于 2012-05-06 15:24:11
<xsl:output
method="html"
doctype-system="about:legacy-compat"
encoding="UTF-8"
indent="yes" />
下面的输出
<!DOCTYPE html SYSTEM "about:legacy-compat">
这被修改为我对http://ukchill.com/technology/generating-html5-using-xslt/的修复
https://stackoverflow.com/questions/3387127
复制相似问题