Поддерживают ли документы SVG пользовательские атрибуты данных?
В HTML5 элементы могут иметь произвольные метаданные, хранящиеся в атрибутах XML, имена которых начинаются с data-
такие как <p data-myid="123456">
, Это тоже часть спецификации SVG?
На практике эта техника отлично работает для SVG-документов во многих местах. Но я хотел бы знать, является ли это частью официальной спецификации SVG или нет, потому что формат достаточно молод, что все еще много несовместимости между браузерами, особенно в мобильных устройствах. Поэтому, прежде чем приступить к написанию кода, я хотел бы знать, могу ли я ожидать, что будущие браузеры сойдутся при поддержке этого.
Я нашел это сообщение в списке рассылки рабочей группы, в котором говорилось, что они "ожидают [они]" его поддержат. Это стало официальным?
4 ответа
Хотя другие ответы технически правильны, они не учитывают тот факт, что SVG предоставляет альтернативный механизм 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): похоже, что он предназначен для поддержки data-*
атрибуты в SVG 2 (в настоящее время все еще рабочий проект).
data-*
атрибуты элементов SVG официально поддерживаются в текущем проекте SVG2. Увидеть:
w3c/svgwg
совершить1cb4ee9
: ДобавленоSVGElement.dataset
и разрешеноdata-*
атрибуты на всех элементах SVG.- ACTION-3694: Добавить атрибуты данных "data-*" в спецификации. (Создано 15 января 2015 г.)
- РЕШЕНИЕ: Мы зарезервируем атрибуты "data-*" для использования в содержимом SVG. API для их обработки находится на Element. (от SVG WG Telecon 15 января 2015 г.)
- https://lists.w3.org/Archives/Public/www-svg/2014Dec/0022.html
Есть более общий механизм.
SVG поддерживает desc
элементы, которые могут содержать произвольный xml из других пространств имен. связать экземпляры этих элементов или дочерних узлов из собственного пространства имен с помощью зависимых идентификаторов или атрибутов refid.