SVG文档是否支持自定义数据属性?

时间:2013-03-20 18:57:06

标签: svg web-standards

在HTML5中,元素可以将任意元数据存储在名称以data-开头的XML属性中,例如<p data-myid="123456">。这也是SVG规范的一部分吗?

在实践中,这种技术在许多地方适用于SVG文档。但是我想知道它是否是官方SVG规范的一部分,因为格式足够年轻,浏览器之间仍然存在很多不兼容性,特别是在移动设备中。所以在提交代码之前,我想知道我是否可以期待未来的浏览器能够支持这一点。

我发现工作组邮件列表中的this message表示他们“期望[他们]会”支持它。这是否成为正式的?

4 个答案:

答案 0 :(得分:112)

虽然其他答案在技术上是正确的,但它们省略了SVG为data-*提供替代机制的事实。要包含的SVG allows any attribute and tag,只要它不与现有的冲突(换句话说:你应该使用命名空间)。

使用此(等效)机制:

  • 使用mydata:id代替data-myid,如下所示:<p mydata:id="123456">
  • 确保在SVG开始标记中定义命名空间,如下所示:<svg xmlns:mydata="http://www.myexample.com/whatever">

编辑: SVG2,目前是W3C候选推荐标准(2018年10月4日),将support data- directly(没有名称空间,与HTML相同)。但是,在支持普及之前需要一些时间。感谢@cvrebert pointing this out

答案 1 :(得分:29)

data-* attribute是HTML5的一部分。它不是通用的XML属性。

目前的SVG W3C建议书为SVG 1.1(2011-08)。它不允许使用此属性,因为您可以查看attributes list

sameSVG 2 Working Draft的案例(2012年至2012年)。 更新(2015):似乎it’s intended支持SVG 2中的data-*属性(目前仍为工作草案)。

答案 2 :(得分:17)

答案 3 :(得分:8)

有一种更通用的机制。

svg支持desc个元素,这些元素可能包含来自其他命名空间的任意xml。通过依赖的id或refid属性链接您自己的命名空间中的此元素或子节点的实例。

this is the relevant part of the spec (5.4)