【问题标题】:XHTML5 and custom namespaces not passing validationXHTML5 和自定义命名空间未通过验证
【发布时间】:2012-04-21 22:23:25
【问题描述】:

此示例代码不会通过 w3c 验证器。

<?xml version="1.0" encoding="UTF-8" ?>
<!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" xmlns:foo="http://foo.com/fooxml">
<head>
    <title>Foo</title>
</head>
<body>
    <foo:TabControl>

    </foo:TabControl>
</body>
</html>

我错过了什么?我需要做什么才能使命名空间工作并通过验证?

【问题讨论】:

    标签: html validation xhtml semantics markup


    【解决方案1】:

    您的 DTD (http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd) 是“XHTML 1.0 Strict”而不是“XHTML 1.0 Strict + Foo”。

    如果您想验证,您需要找到或创建一个包含您正在使用的所有元素和属性的 DTD,并将 Doctype 更改为指向该位置。

    W3C 的recommended Doctypes 列表包括许多多个命名空间文档(例如 XHTML + MathML + SVG),您可以将它们用作创建自己的示例。

    【讨论】:

    • 我能否创建一个基于现有 HTML DTD(html、head、body、div、ul 等)的 XHTML 文档,然后添加这个命名空间并使用它foo:TabControl?我不想重新创建整个 HTML 及其所有元素。你可以制作混合文档类型吗?
    • XHTML 以模块形式表示,以便更轻松地创建混合命名空间文档。请参阅我建议的 DTD 作为我的回答中的示例。
    • 啊,我明白了。所以我只是用我选择的元素创建我自己的 DTD,例如TabControl,然后我创建一个名为 XHTML+Foo 的联合 DTD?
    • 浏览器会呈现普通的 HTML 标签吗?
    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多