【问题标题】:How to use data attributes in XHTML1.1 and still be valid如何在 XHTML1.1 中使用数据属性并且仍然有效
【发布时间】: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,它会起作用。

【问题讨论】:

  • Adding data to XHTML tags的可能重复
  • 我一直在看那个。它似乎指向另一个问题/答案,最终谈论定义自定义 DTD - 这(虽然它可能有效)不是我问题的解决方案。谢谢。
  • 就是这样。 xhtml 是一个非常严格的 html 实现,并且早于 html5。由于它早于它,因此没有提供像data-* 这样的未知属性。基本上,您问的是如何在 Fred Flinstone 的车上安装现代蓝牙音响。

标签: xhtml


【解决方案1】:

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

那是不可能的。

有人提到这个问题可以使用自定义命名空间来解决。

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

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

另一种方法是使用自定义 DTD。

然后您将编写您发明的基于 XHTML 1.1 而非 XHTML 1.1 的自定义标记语言。


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

我从来没有遇到过在给出无效但格式正确的 XHTML 时会崩溃的浏览器。

只需编写 XML 序列化 HTML 5。

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

【讨论】:

  • 谢谢昆汀。我同意你的观点,即使我们可以使用单独的命名空间,浏览器也不会在那里寻找它。但是有一个问题:在我上面的第二个代码示例中,我相信我已经正确地扩展了一个带有命名空间“数据”的 XML 文档——为什么验证器没有它? - 我也接受正确的解决方案是告诉我的客户该页面仍然会显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2011-05-22
  • 1970-01-01
  • 2010-11-13
相关资源
最近更新 更多