91 votes

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- comme <p data-myid="123456"> . Cela fait-il aussi partie de la spécification SVG ?

En pratique, cette technique fonctionne bien pour les documents SVG dans de nombreux endroits. Mais j'aimerais savoir si elle fait partie de la spécification officielle de SVG ou non, parce que le format est assez jeune pour qu'il y ait encore beaucoup d'incompatibilité entre les navigateurs, surtout pour les mobiles. Donc, avant de m'engager dans le code, j'aimerais savoir si je peux m'attendre à ce que les futurs navigateurs convergent vers le support de ce format.

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

127voto

johndodo Points 2975

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 toute balise à inclure, pour autant qu'il n'entre pas en conflit avec ceux qui existent déjà (en d'autres termes : vous devriez utiliser les espaces de noms).

Pour utiliser ce mécanisme (équivalent) :

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

EDITAR: SVG2 qui fait actuellement l'objet d'une recommandation du W3C (4 octobre 2018). soutien data- directement (sans espaces de noms, comme pour le HTML). Il faudra cependant un certain temps avant que le support soit généralisé. Merci à @cvrebert pour en soulignant ceci .

30voto

unor Points 14115

En data-* attribut fait partie de HTML5. Il ne s'agit pas d'un attribut XML générique.

La recommandation actuelle du W3C sur le SVG est SVG 1.1 (de 2011 à 2008). Il n'autorise pas cet attribut, comme vous pouvez le vérifier dans le fichier liste des attributs .

En même est le cas pour le Projet de travail SVG 2 (de 2012 à 2008). Mise à jour (2015) : Il semble que c'est prévu pour soutenir data-* attributs dans SVG 2 (actuellement encore un projet de travail).

18voto

9voto

collapsar Points 4968

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

Supports svg desc éléments qui peuvent contenir du xml arbitraire provenant d'autres espaces de noms. liez les instances de ces éléments ou les noeuds enfants de votre propre espace de noms par des ids dépendants ou des attributs refid.

Voici la partie pertinente de la spécification (5.4) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X