可能的重复:
使用 XSLT 设置 HTML5 文档类型 https://stackoverflow.com/questions/3387127/set-html5-doctype-with-xslt
我是 xslt 新手,我正在尝试生成 HTML 5 文档。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<!DOCTYPE html>
Firefox 给了我错误
"XML Parsing Error: not well-formed
Location: file:///E:/XSLT-XML-Shema/shipping-transform.xsl
Line Number 6, Column 4: <!DOCTYPE html>
如果只是<html>
效果很好。我该如何解决这个问题以及为什么会发生这种情况?
--EDIT--
<?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" doctype-system="about:legacy-compact" />
<xsl:template match="/">
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>Sample Corporation #1</title>
</head>
<body>
Hello this is a test<br />
Goodbye!
</body>
</html>
</xsl:template>
</xsl:stylesheet>
如果您绝对想要收缩形式,您唯一的选择是disable-output-escaping
of xsl:text
如上面评论中的链接。我认为这有点肮脏,而且您必须在模板中指出它:
<xsl:template match="/">
<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
</xsl:template>
另一种更清晰的解决方案是,W3C 为 HTML5 定义了一个特定的 DOCTYPE 遗留字符串,可供无法以较短格式显示文档类型的 HTML 生成器使用。因此,要继续使用纯 XSLT,您可以使用:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="about:legacy-compat" />
<xsl:template match="/">
<html>
<head>
<meta charset="utf-8" />
<title>Sample Corporation #1</title>
</head>
<body>
Hello this is a test<br />
Goodbye!
</body>
</html>
</xsl:template>
</xsl:stylesheet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)