0

我从事的项目采用随机 HTML 文件,尽可能将它们转换为 XHTML,并用一些 XML 元数据包装它们。由于生成的 XML 文件不是 XHTML 文档,因此删除了 DOCTYPE。但是,当从 XML 文件中检索包装的 XHTML 时,应该重新插入 DOCTYPE。

因为这些是随机的 HTML 文件,它们可以包含任何内容,但我宁愿不必存储或确定原始 DTD。我认为我应该使用 Frameset DTD,因为它只是 Transitional DTD 的超集,并且对所有内容都有效。但是,当对同一文档使用W3C XHTML Validator时,使用 Transitional DTD 会通过,但使用 Frameset DTD 会失败。

我已将文档精简到可以重现问题的最低限度。这是框架集版本:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Make The Move</title>
</head>

<body style="background: none;">
    <h3 id="why">Why should I move to Linux?</h3>
</body>

</html>


这是过渡版本:

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

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Make The Move</title>
</head>

<body style="background: none;">
    <h3 id="why">Why should I move to Linux?</h3>
</body>

</html>


请解释为什么会发生这种情况,以及我应该如何进行。

4

2 回答 2

1

框架集 DTD 不是过渡的“超集”。它是一种特殊的 DTD,仅用于布局框架,而不是内容(除了内部<noframes>标签)。它只允许<head><frameset>作为<html>标签的孩子。

是规范。

除非您知道您的页面可能有框架,否则请坚持过渡或严格的 DTD。

于 2009-10-15T00:11:58.520 回答
0

正如 Chetan 所指出的,Frameset DTD 应该只在您需要框架的情况下使用,即便如此,我还是建议使用 Transitional。如果您不依赖框架,那么 Strict 就是您要走的路。

于 2009-10-15T02:52:52.287 回答