SVG文档是否支持自定义数据属性?
在HTML5中,元素可以具有存储在名称以data-
开头的XML属性中的任意元data-
,如<p data-myid="123456">
。 这也是SVG规范的一部分吗?
实际上,这个技术在许多地方对SVG文档工作正常。 但是,我想知道它是否是官方SVG规范的一部分,因为格式足够年轻,浏览器之间仍然存在很多不兼容问题,特别是在移动设备上。 所以在提交代码之前,我想知道是否可以期待未来的浏览器能够支持这一点。
我从工作组邮件列表中发现了这个消息 ,表示他们“期待他们”会支持它。 这是否成为官方?
虽然其他答案在技术上是正确的,但他们忽略了SVG为data-*
提供另一种机制data-*
的事实。 SVG 允许包含任何属性和标签 ,只要它与现有的属性和标签不冲突(换句话说:你应该使用名称空间)。
要使用这个(等价的)机制:
- 使用
mydata:id
而不是data-myid
,如下所示:<p mydata:id="123456">
- 请确保您在SVG开始标记中定义名称空间,如下所示:
<svg xmlns:mydata="http://www.myexample.com/whatever">
data-*
属性是HTML5的一部分。 这不是一个通用的XML属性。
目前的SVG W3C推荐标准是SVG 1.1 (2011-08)。 它不允许这个属性,因为你可以检查属性列表 。
SVG 2工作草案 (2012-08)也是如此。 更新(2015) :它似乎是为了支持SVG 2中的 data-*
属性(目前还是工作草案)。
目前的SVG2草案正式支持SVG元素的data-*
属性。 看到:
-
w3c/svgwg
commit1cb4ee9
:在所有SVG元素上添加了SVGElement.dataset
和允许的data-*
属性。 - ACTION-3694:将“data- *”属性注释添加到规范中。 (创builddate:2015年1月15日)
- 解决scheme:我们将保留“data- *”属性用于SVG内容。 处理它们的API在Element上。 (来自SVG WG Telecon,2015年1月15日)
- https://lists.w3.org/Archives/Public/www-svg/2014Dec/0022.html
有一个更一般的机制。
svg支持可能包含来自其他命名空间的任意xml的desc
元素。 通过依赖ids或refid属性链接这些元素的实例或来自您自己的名称空间的子节点。
这是规范(5.4)的相关部分 。