【发布时间】:2011-10-05 01:10:48
【问题描述】:
我想用 jspx 输出以下 DOCTYPE 说明符:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
这似乎是不可能的。我尝试的是:
<jsp:output doctype-root-element="HTML" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
...导致:
org.apache.jasper.JasperException: /WEB-INF/layouts/fittopage.jspx(3,100) <jsp:output>: 'doctype-root-element' and 'doctype-system' attributes must appear together
(我使用的是 Tomcat 6.0)。我不想包含包含 DTD URI 的 SYSTEM 标识符(在本例中为 doctype-system="http://www.w3.org/TR/html4/loose.dtd"),因为这会重复导致浏览器(Firefox 和Chrome)以不同的方式呈现页面(或根本不呈现)。
【问题讨论】:
-
该网站显然最初是在 MSIE 中开发/设计的,但文档类型错误?我强烈,强烈建议使用真正的严格/标准模式文档类型,例如
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,而不是怪癖模式文档类型(以便它在所有浏览器中看起来至少相同)并相应地修复 CSS 问题。另见hsivonen.iki.fi/doctype -
嗯,不是 IE(我们现在甚至不支持它),但它是一个随着时间的推移而发展起来的网站,大量使用 Javascript (dojo),而且不能在一夜之间改变。事实仍然是,该站点使用所述唯一的 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 声明正确呈现,并且根本不使用严格声明或添加到声明的系统 dtd 呈现。拥有一个只包含一个 PUBLIC 标识符的 DOCTYPE 声明显然是合法的,所以我想知道为什么 jspx 不支持它(或者支持它?)。
-
我不是 JSPX 专家,但请尝试指定一个空值
doctype-system=""。 -
@BalusC 的建议在 Tomcat 9 上对我有用。
-
起初我认为@BalusC 的建议在Tomcat 9 上对我有用,但它实际上产生了
SYSTEM "",这是我不想要的。 :(