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?
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):
mydata:id
au lieu de data-myid
, comme ça: <p mydata:id="123456">
<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 .
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).
data-*
les attributs des éléments SVG sont officiellement pris en charge dans la version actuelle de SVG2. Voir:
w3c/svgwg
commit 1cb4ee9
: Ajoutée SVGElement.dataset
et autorisé data-*
attributs sur tous les éléments SVG.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.