【问题标题】:W3C Validator - Document type does not allow element "body" hereW3C Validator - 文档类型在此处不允许元素“body”
【发布时间】:2010-08-05 01:41:20
【问题描述】:

我正在尝试使用W3C validator 验证以下代码:

<!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" lang="en" xml:lang="en">
<head>
    <title>Test</title>
</head>
<body>
</body>
</html>

我收到两个错误:

文档类型不允许此处的元素“正文”

未完成的“html”的结束标记

有谁知道如何解决这个问题?

【问题讨论】:

    标签: html validation


    【解决方案1】:

    您正在使用Frameset DTD,它不允许正文。它适用于用于显示框架的框架集。您可以改用 Strict:

    <!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" lang="en" xml:lang="en">
    <head>
        <title>Test</title>
    </head>
    <body>
    </body>
    </html>
    

    【讨论】:

    • 这就是我所说的使用不同 doctype 声明“Doctype 装饰”的争论,人们总是会说使用不同的声明(通常)。但要看你用的是什么框架?
    • 您需要在每个页面中使用框架集或正文元素,但不能同时使用。您的&lt;frame&gt;s 应该具有对其他 (X)HTML 文件的属性引用,这些文件又应该是框架集或没有框架的简单页面。
    • @Case,是的,你不能同时拥有 body 和 frameset,除非 body 在 noframes 中。
    • @Ben:框架集似乎只允许您在文档的顶层放置框架。我目前在文档深处使用 iframe 在可扩展部分中显示错误消息页面(可以是任意 html)。我想我可以改用 Transitional。
    • 基本上,每个文件都应该具有&lt;frameset&gt;&lt;body&gt; 中的一个。如果您使用了&lt;frameset&gt;,则使用 Frameset DOCTYPE。否则,请使用严格或繁体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多