在HTML(5)的属性名称中,冒号:是否有效?

8
在HTML(5)中,冒号:字符是否可以作为属性名称?就像这样:
<p he:llo="world" >Hello world</p>

在搜索了网络之后,我找到了这篇文章:http://razzed.com/2009/01/30/valid-characters-in-attribute-names-in-htmlxml/。它说是有效的,但他链接到了这个w3文档:http://www.w3.org/TR/2000/REC-xml-20001006#NT-Name。但是,这篇文章的标题是“可扩展标记语言(XML)1.0(第二版)”,意思是XML而不是HTML。能否有人为我澄清一下这个问题?

HTML是XML的一个衍生版本,所以我猜应该是可以的。 :) - Praveen Kumar Purushothaman
2
@PraveenKumar 严格来说,HTML是XML的“表亲”,而不是衍生物(它们都源自一个叫做SGML的旧标准)。 - IMSoP
2
HTML 4.x及早期版本是SGML应用程序。XML是SGML的一个派生物。XHTML是一个XML应用程序。HTML 5不是SGML或XML应用程序,尽管它有一个XML序列化。 - Quentin
W3验证失败,出现"属性he:llo不能作为XML 1.0序列化"和"在此处不允许在元素p上使用属性he:llo"。 - j08691
这个问题背后的实际问题是什么?属性 he:llo 在任何版本的 HTML 中都是无效的。一些带有冒号的属性名称在某些版本的 HTML 中是有效的。 - Jukka K. Korpela
1个回答

5
这用于XML命名空间,根据您引用的文件,不应将其用于其他目的:

XML命名空间推荐[XML Names]为包含冒号字符的名称分配了一种含义。因此,作者不应在XML名称中使用冒号,除非是为了命名空间目的,但XML处理器必须接受冒号作为名称字符。

HTML5支持XML模式和非XML模式。我建议除了作为命名空间分隔符之外,不要使用冒号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接