2010-06-16 10 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

相关问题