我正在尝试在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" />
但是当我将严格改为过渡时,事情就出错了。
有没有人有一个好的解决方案?
提前谢谢!
答案 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转换没有太大区别。