2012-08-26 50 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,你可以使用'' –