2013-03-20 75 views
60

In HTML5, gli elementi possono contenere metadati arbitrari memorizzati in attributi XML i cui nomi iniziano con data- come <p data-myid="123456">. Anche questa parte della specifica SVG?I documenti SVG supportano attributi dati personalizzati?

In pratica questa tecnica funziona bene per i documenti SVG in molti posti. Ma mi piacerebbe sapere se fa parte delle specifiche ufficiali SVG o meno, perché il formato è abbastanza giovane che c'è ancora molta incompatibilità tra i browser, specialmente nei dispositivi mobili. Quindi, prima di impegnarmi nel codice, vorrei sapere se posso aspettarmi che i futuri browser convergano nel sostenere questo.

Ho trovato this message dalla mailing list del gruppo di lavoro dicendo che "si aspettano [loro]" lo supportano. Questo è diventato ufficiale?

risposta

97

Mentre altre risposte sono tecnicamente corrette, omettono il fatto che SVG fornisce un meccanismo alternativo per data-*. SVG allows any attribute and tag da includere, purché non sia in conflitto con quelli esistenti (in altre parole: dovresti utilizzare gli spazi dei nomi).

Per utilizzare questo (equivalente) Meccanismo:

  • uso mydata:id invece di data-myid, in questo modo: <p mydata:id="123456">
  • assicurarsi di definire lo spazio dei nomi nel tag di apertura in formato SVG, in questo modo: <svg xmlns:mydata="http://www.myexample.com/whatever">
+5

terza parte dell'equazione: 'el.getAttribute ('mydata: id')' per ottenere i dati è stato collegato all'elemento SVG. (Nota: se si sta utilizzando d3, lo spazio dei nomi sarà spogliato per impostazione predefinita e ti basta el.getAttribute ('id' ')'.) – ericsoco

+1

Questa dovrebbe essere la risposta accettata. SVG è un'estensione di XML che ti consente di utilizzare tag da diversi spazi dei nomi. – Melle

+0

Perché lo spazio dei nomi deve essere personalizzato? Perché non dichiarare uno spazio dei nomi HTML5 nel documento essere sufficiente per usare 'data- *' in SVG? –

9

c'è un meccanismo più generale.

svg supporta elementi desc che possono contenere xml arbitrari da altri spazi dei nomi. collegare le istanze di questi elementi o nodi figlio dal proprio spazio dei nomi con id dipendenti o attributi refid.

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

+1

Grazie per il puntatore. Devo inferire che SVG non supporta ufficialmente gli attributi 'data-'? – Leopd

+1

sì, vedere la risposta fornita da unor. – collapsar

+1

"desc" non è pensato per l'accessibilità? – matanster

13
Problemi correlati