如何在 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 的进一步工作。
我正在尝试使用 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 的进一步工作。