web-dev-qa-db-fra.com

Les documents SVG prennent-ils en charge les attributs de données personnalisés?

En HTML5, les éléments peuvent avoir des métadonnées arbitraires stockées dans des attributs XML dont les noms commencent par data- tel que <p data-myid="123456">. Cela fait-il également partie des spécifications SVG?

En pratique, cette technique fonctionne très bien pour les documents SVG dans de nombreux endroits. Mais je voudrais savoir si cela fait partie de la spécification SVG officielle ou non, car le format est assez jeune pour qu'il y ait encore beaucoup d'incompatibilité entre les navigateurs, en particulier dans les mobiles. Donc, avant de vous engager dans le code, j'aimerais savoir si je peux m'attendre à ce que les futurs navigateurs convergent pour prendre en charge cela.

J'ai trouvé ce message dans la liste de diffusion du groupe de travail en disant qu'ils "s'attendent à ce qu'ils" le soutiennent ". Est-ce devenu officiel?

76
Leopd

Bien que d'autres réponses soient techniquement correctes, elles omettent le fait que SVG fournit un mécanisme alternatif pour data-*. SVG permet à tout attribut et balise d'être inclus, tant qu'il n'entre pas en conflit avec ceux existants (en d'autres termes: vous devez utiliser des espaces de noms).

Pour utiliser ce mécanisme (équivalent):

  • utilisation mydata:id au lieu de data-myid, comme ça: <p mydata:id="123456">
  • assurez-vous de définir l'espace de noms dans la balise d'ouverture SVG, comme ceci: <svg xmlns:mydata="http://www.myexample.com/whatever">

EDIT: SVG2 , actuellement la recommandation candidate du W3C (04 octobre 2018), support data- directement (sans espaces de noms, comme HTML). Il faudra cependant un certain temps avant que le soutien ne soit généralisé. Merci @cvrebert pour en soulignant cela .

114
johndodo

Le data-* attribute fait partie de HTML5. Ce n'est pas un attribut XML générique.

La recommandation SVG W3C actuelle est SVG 1.1 (de 2011-08). Il n'autorise pas cet attribut, car vous pouvez vérifier dans la liste des attributs .

Le même est le cas pour le SVG 2 Working Draft (de 2012-08). Mise à jour (2015) : Il semble que c'est prév pour supporter data-* attributs dans SVG 2 (actuellement encore un brouillon de travail).

30
unor
17
cvrebert

il existe un mécanisme plus général.

svg prend en charge les éléments desc qui peuvent contenir des fichiers XML arbitraires provenant d'autres espaces de noms. liez les instances de ces éléments ou nœuds enfants de votre propre espace de noms par des ID dépendants ou des attributs refid.

c'est la partie pertinente de la spécification (5.4) .

9
collapsar