在HTML5中,元素可以将任意元数据存储在名称以data-
开头的XML属性中,例如<p data-myid="123456">
。这也是SVG规范的一部分吗?
在实践中,这种技术在许多地方适用于SVG文档。但是我想知道它是否是官方SVG规范的一部分,因为格式足够年轻,浏览器之间仍然存在很多不兼容性,特别是在移动设备中。所以在提交代码之前,我想知道我是否可以期待未来的浏览器能够支持这一点。
我发现工作组邮件列表中的this message表示他们“期望[他们]会”支持它。这是否成为正式的?
答案 0 :(得分:112)
虽然其他答案在技术上是正确的,但它们省略了SVG为data-*
提供替代机制的事实。要包含的SVG allows any attribute and tag,只要它不与现有的冲突(换句话说:你应该使用命名空间)。
使用此(等效)机制:
mydata:id
代替data-myid
,如下所示:<p mydata:id="123456">
<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。
same是SVG 2 Working Draft的案例(2012年至2012年)。 更新(2015):似乎it’s intended支持SVG 2中的data-*
属性(目前仍为工作草案)。
答案 2 :(得分:17)
data-*
属性。参见:
w3c/svgwg
commit 1cb4ee9
: Added SVGElement.dataset
and allowed data-*
attributes on all SVG elements. 答案 3 :(得分:8)
有一种更通用的机制。
svg支持desc
个元素,这些元素可能包含来自其他命名空间的任意xml。通过依赖的id或refid属性链接您自己的命名空间中的此元素或子节点的实例。