2013-03-20 2 views
60

В HTML5 элементы могут иметь произвольные метаданные, хранящиеся в атрибутах XML, имена которых начинаются с data-, таких как <p data-myid="123456">. Является ли эта часть спецификации SVG?Поддерживает ли SVG-документы пользовательские атрибуты данных?

На практике этот метод отлично подходит для документов SVG во многих местах. Но я хотел бы знать, является ли это частью официальной спецификации SVG или нет, потому что формат достаточно молод, что между браузерами все еще много несовместимости, особенно на мобильных устройствах. Поэтому, прежде чем совершать код, я хотел бы знать, могу ли я ожидать, что будущие браузеры будут сходиться, поддерживая это.

Я нашел this message из списка рассылки рабочей группы, в котором говорится, что они «ожидают [они] будут« поддерживать »его. Это стало официальным?

ответ

97

Хотя другие ответы являются технически правильными, они опускают тот факт, что 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">
+5

Третья часть уравнения: 'el.getAttribute ('mydata: id')', чтобы получить данные, которые вы привязали к элементу SVG. (Примечание: если вы используете d3, пространство имен будет разделено по умолчанию, и вы будете просто 'el.getAttribute ('id')'.) – ericsoco

+1

Это должен быть принятый ответ. SVG - это расширение XML, которое позволяет использовать теги из разных пространств имен. – Melle

+0

Почему пространство имен должно быть обычным? Почему бы не объявить пространство имен HTML5 в документе достаточно, чтобы использовать 'data- *' в SVG? –

9

есть более общий механизм.

svg поддерживает desc элементы, которые могут содержать произвольный xml из других пространств имен. связывать экземпляры этих элементов или дочерние узлы из собственного пространства имен с помощью зависимых идентификаторов или атрибутов refid.

this is the relevant part of the spec (5.4).

+1

Благодарность за указатель. Должен ли я заключить, что SVG официально не поддерживает атрибуты data-'? – Leopd

+1

Да, см. Ответ, предоставленный unor. – collapsar

+1

Не означает 'desc' для доступности? – matanster

29

data-* attribute является частью HTML5. Это не общий атрибут XML.

Настоящая Рекомендация SVG W3C SVG 1.1 (с 2011-08 гг.). Он не позволяет этот атрибут, так как вы можете проверить attributes list.

Номер same имеет значение для SVG 2 Working Draft (с 2012-08 гг.). Обновление (2015): Кажется, что it’s intended для поддержки data-* атрибутов в SVG 2 (в настоящее время еще рабочий проект).

13

data-* атрибуты элементов SVG официально поддерживаются в текущей черновике SVG2. См: