2010-06-16 106 views
2

據我瞭解,你需要包括你的HTML文件的頂部下面的代碼,以確保他們正確分析:如何在由XSL生成的文件中包含正確的XML/HTML定義?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
... 

我通過轉換XML文件生成一個HTML文件一個XSL文件。這將使用MSXML工具完成,該工具將生成標準HTML文件作爲輸出。

如果我只是這樣做:

<xsl:template match="/"> 
<html> 
... 

一切都很好。但是,如果我這樣做:

<xsl:template match="/"> 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
... 

我得到的錯誤XML Parsing Error: XML or text declaration not at start of entity在Firefox或IE中Cannot have a DOCTYPE declaration outside of a prolog.。大概這是因爲解析器找到兩個<?xml的定義並且感到困惑。

如何讓瀏覽器a)明白我正在使用適當的嚴格HTML,並且b)確保將這些聲明放入MSXML生成的HTML輸出文件中?

回答

3

可以使用xsl:output元素控制文檔類型。

+0

我認爲這在我通過瀏覽器中的XSL查看XML時有效,但在運行MSXML「從這些XML和XSL文件生成HTML」工具時不起作用。 :( – Colen 2010-06-16 17:08:08

+0

@Colen:不,xsl:output是標準的一部分,它應該「正常工作」 – 2010-06-16 17:11:05

+0

如果沒有,請使用符合標準的XSLT處理器 – 2010-06-16 17:11:55

相關問題