33

我是 Angular 的新手,并试图理解“x-”和“data-”前缀的含义。在指令文档(http://docs.angularjs.org/guide/directive)中,它说这些前缀将使指令“符合 HTML 验证器”。这到底是什么意思?

4

2 回答 2

31

HTML5 规范允许任意属性,只要它们以 data- 为前缀,如下所示:

<div data-myattribute=""></div>

而这将是无效的 HTML5:

<div myattrbute=""></div>

有关数据属性的更多信息,请查看此处。

至于“x-”属性,我认为您的意思是“x:”属性和元素,它们特定于 XHTML 验证......

为了扩展这一点,如果您(出于某种原因)要使用 XHTML,您可以像这样定义具有命名空间的自定义属性(我只是在这里总结要点):

<html xmlns:x="http://sample.com/mynamespace">
<body>
   <div x:whatever=""></div>
   <x:mytag></x:mytag>
</body>
</html>

其中 xmlns 中的 URL 实际上只是为了防止类似元素之间的冲突。此外,可以为验证目的提供自定义元素和属性的 DTD,作为 DOCTYPE 声明的一部分。

*浏览器中的行为会随着这种 xmlns 方法而变化。

不过,总而言之:使用过去三年发布的大多数浏览器或 IE8+,您不必担心这些事情。只有在非常特殊的情况下,您才会真正关心。

于 2013-03-06T19:37:52.120 回答
19

来自 HTML5 规范:http ://www.w3.org/html/wg/drafts/html/master/single-page.html

以两个字符“x-”开头的属性名称保留给用户代理使用,并保证永远不会正式添加到 HTML 语言中。

还:

对于旨在与HTML 语法一起使用的标记级功能,扩展应限于“ x-vendor-feature”形式的新属性,其中 vendor 是一个短字符串,用于标识负责扩展的供应商,而 feature 是特征。不应创建新的元素名称。对此类扩展使用属性仅允许来自多个供应商的扩展在同一个元素上共存,这对于元素是不可能的。使用 " x-vendor-feature" 形式允许进行扩展,而不会有与规范的未来添加冲突的风险。

于 2013-07-27T20:56:29.497 回答