如何在 XHTML1.1 中使用数据属性并且仍然有效

How to use data attributes in XHTML1.1 and still be valid

我正在尝试使用 html5 数据属性并且仍然具有有效的 XHTML 1.1。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>title</title>
    </head>
    <body>
    <div data-test="test">
    </div>

    </body>
    </html>

=> 没有属性数据测试。 (在 W3C 验证器中)

好的。尝试添加自定义命名空间:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:data="http://whatever">
<head>
<title>title</title>
</head>
<body>
<div data:test="test">
</div>

</body>
</html>

同样的问题。

我在 Whosebug 上查看了很多关于这个主题的问题。有人提到这个问题可以使用自定义命名空间来解决。但我看不到任何工作示例。我上面的尝试没有验证。这是因为 XHTML 的 DOCTYPE 不支持添加自定义命名空间吗? (即使这可以工作,我有一个新问题,对于 html5 数据类型,我需要我的属性是数据 - 连字符会导致问题 - 但一次一个步骤)。

另一种方法是使用自定义 DTD。这篇文章解释了如何做到这一点 http://alistapart.com/article/customdtd - 但这对我没有帮助,因为这要求您使用可以告诉你使用什么 DTD 的解析器 - 即不是浏览器。

实际情况是我正在制作一个小软件,输出 html 最终用户将插入他们的网站。它使用 html5 数据属性,我不想破坏他们的网站。我希望至少能够告诉他们:像这样修改你的 xhtml 它会起作用。

I am trying to use html5 data attibutes and still have valid XHTML 1.1.

那是不可能的。

Some mention that this problem can be solved using a custom namespace.

你可以,但是你会写 XHTML 1.1 + 其他东西而不是 XHTML 1.1.

浏览器无论如何都不会支持它,至少不会通过它们专门为访问 data-* 属性而提供的标准 API 提供支持,因为它们不会在外部名称空间中查找它们。

The other way to do this is with a custom DTD.

然后您将编写您发明的基于 XHTML 1.1 而不是 XHTML 1.1.

的自定义标记语言

The actual case is I am making a small piece of software which outputs html which end users will plug into their sites. It uses html5 data attributes and I don't want to break their site. I want to be able to at least tell them: modify your xhtml like this and it will work.

我从未遇到过在给定无效但格式正确的 XHTML.

时会崩溃的浏览器

就写XML连载HTML5.

您可以鼓励最终用户转向 HTML 5。无论如何,XHTML 1.1 是一个技术死胡同。 W3C 已放弃在 HTML 5 的 XML 序列化之外对 XHTML 的进一步工作。