【发布时间】:2015-08-01 19:58:22
【问题描述】:
我正在尝试使用 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>
=> 没有属性 data-test。 (在 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>
同样的问题。
我在 Stackoverflow 上查看了许多关于此主题的问题。有人提到这个问题可以使用自定义命名空间来解决。但我看不到任何有效的例子。我上面的尝试没有验证。这是因为 XHTML 的 DOCTYPE 不支持添加自定义命名空间吗? (即使这可以起作用,我也遇到了一个新问题,即对于 html5 数据类型,我需要我的属性是数据 - 并且连字符会导致问题 - 但一次一步)。
另一种方法是使用自定义 DTD。本文解释了如何做到这一点http://alistapart.com/article/customdtd - 但这对我没有帮助,因为这要求您使用可以被告知要使用什么 DTD 的解析器 - 即不是浏览器。
实际情况是我正在制作一个输出 html 的小软件,最终用户将插入他们的网站。它使用 html5 数据属性,我不想破坏他们的网站。我希望至少能够告诉他们:像这样修改你的 xhtml,它会起作用。
【问题讨论】:
-
我一直在看那个。它似乎指向另一个问题/答案,最终谈论定义自定义 DTD - 这(虽然它可能有效)不是我问题的解决方案。谢谢。
-
就是这样。 xhtml 是一个非常严格的 html 实现,并且早于 html5。由于它早于它,因此没有提供像
data-*这样的未知属性。基本上,您问的是如何在 Fred Flinstone 的车上安装现代蓝牙音响。
标签: xhtml