2013-03-20 16 views
60

W HTML5 elementy mogą mieć arbitralne metadane przechowywane w atrybutach XML, których nazwy zaczynają się od data-, takich jak <p data-myid="123456">. Czy ta część specyfikacji SVG też jest?Czy dokumenty SVG obsługują niestandardowe atrybuty danych?

W praktyce technika ta sprawdza się dobrze w dokumentach SVG w wielu miejscach. Ale chciałbym wiedzieć, czy jest to część oficjalnej specyfikacji SVG, czy nie, ponieważ format jest wystarczająco młody, że nadal istnieje wiele niezgodności między przeglądarkami, zwłaszcza w telefonii komórkowej. Zanim przejdę do kodu, chciałbym wiedzieć, czy mogę oczekiwać, że przyszłe przeglądarki zbiegną się, aby to wspierać.

Znalazłem this message z listy mailingowej grupy roboczej, z której wynika, że ​​"oczekują [oni] będą" wspierać ją. Czy stało się to oficjalne?

Odpowiedz

97

Podczas gdy inne odpowiedzi są poprawne pod względem technicznym, pomijają fakt, że SVG zapewnia alternatywny mechanizm dla data-*. SVG allows any attribute and tag należy uwzględnić, o ile nie jest to sprzeczne z istniejącymi (innymi słowy: należy używać przestrzeni nazw).

Aby korzystać z tej (odpowiednik) mechanizm:

  • korzystanie mydata:id zamiast data-myid coś takiego: <p mydata:id="123456">
  • upewnij się, że zdefiniowanie nazw w SVG znaczniku otwierającym tak: <svg xmlns:mydata="http://www.myexample.com/whatever">
+5

Trzecia część równania: 'el.getAttribute ('mydata: id')', aby uzyskać dane, które podłączyłeś do elementu SVG. (Uwaga: jeśli używasz d3, przestrzeń nazw zostanie domyślnie usunięta, a będziesz po prostu 'el.getAttribute ('id')'.) – ericsoco

+1

To powinna być zaakceptowana odpowiedź. SVG jest rozszerzeniem XML, które pozwala używać znaczników z różnych przestrzeni nazw. – Melle

+0

Dlaczego przestrzeń nazw musi być niestandardowa? Dlaczego zadeklarowanie przestrzeni nazw HTML5 w dokumencie nie wystarczyłoby do użycia 'data- *' w SVG? –

9

Istnieje bardziej ogólny mechanizm.

svg obsługuje elementy desc, które mogą zawierać dowolny kod XML z innych przestrzeni nazw. połączyć instancje tych elementów lub węzłów potomnych z własnej przestrzeni nazw za pomocą identyfikatorów zależnych i atrybutów refid.

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

+1

Dzięki za wskaźnik. Czy mogę stwierdzić, że SVG oficjalnie nie obsługuje atrybutów 'data -'? – Leopd

+1

tak, zobacz odpowiedź udzieloną przez unor. – collapsar

+1

Czy 'desc' nie jest przeznaczony dla kwestii dostępności? – matanster

13
Powiązane problemy