为xhtml文件设置doctype transitional失败

时间:2011-06-23 02:10:16

标签: xslt xslt-2.0

我正在尝试在html文件中生成此行:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

由于我使用xsl文件和xml文件生成html文件,我认为用于生成该行的代码应该包含在xsl文件中。

我在互联网上找到了这个解决方案----

<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" doctype-public="-//W3C//DTD HTML 4.01//EN" indent="yes" />

但是当我将严格改为过渡时,事情就出错了。

有没有人有一个好的解决方案?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

从编译的角度来看,这条指令绝对正确:

<xsl:output method="html" 
   doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
   doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>

从doctype的角度来看,这是不正确的。因为您要基于特定的DTD生成格式良好的XML文档,所以最好将输出方法更改为xml

<xsl:output method="xml" 
 doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
 doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>

然而,没有理由说上面的第一条指令不起作用。也许你的XSLT处理器负责输出方法。

答案 1 :(得分:0)

你的第一行和第二行不一样。您所需的输出为XHTML,但您找到的解决方案(第二行)描述了HTML。因为您需要XHTML(基本上是带有XML语法的HTML),所以使用像@empo(+1)这样的行已经描述过了:

<xsl:output method="xml" 
 doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
 doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>

一些XSLT处理器也支持xhtml作为输出方法(例如Saxon)。但这不是标准(在XSLT 1.0中),而是使用XML。

XML-&gt;与XML-&gt; XML相比,XHTML转换没有太大区别。