2012-08-26 45 views
2
<?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> 
    <html> 
    <head> 

    </head> 
    <body> 

    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

它正在DOCTYPE中得到一个分析错误。如何解决这个问题?文件类型错误

回答

5

W3C HTML 5 Reference建议使用doctype-system="about:legacy-compat"

对于HTML的传统生产商的兼容性 - 即,输出HTML文档软件 - 替代DOCTYPE是供 使用由无法系统输出上面给出的DOCTYPE。这种限制发生在期望DOCTYPE包括 PUBLIC或SYSTEM标识符并且无法忽略它们的软件中。这个DOCTYPE的 规范形式如下:

<!DOCTYPE html SYSTEM "about:legacy-compat"> 

您可以用以下任何XSLT处理器实现这一目标:

<xsl:output method="html" doctype-system="about:legacy-compat" /> 

它会生成:

<!DOCTYPE HTML SYSTEM "about:legacy-compat"> 
2

您无法直接在xslt中嵌入<!DOCTYPE HTML>声明。使用以下内容:

<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text> 

改为。有关类似问题,请参见Set HTML5 doctype with XSLT

+3

这解决方案仅适用于支持doe的处理器/环境;例如,它在Firefox中不起作用。有关详细信息,请参阅引用的问题。注意当前版本的Saxon,你可以使用'' –