2012-05-14 24 views

risposta

19

Nel codice XHTML, è possibile utilizzare gli spazi dei nomi per distinguere altri linguaggi basati su XML inclusi nella pagina Web. Qui, lo spazio dei nomi "svg" è usato prima del tag "svg".

namespace:tagname 

questo può essere utile nel caso in cui due tag (ad esempio, in XHTML e SVG) hanno lo stesso nome e si desidera specificare esattamente quale si fa riferimento. I tag possono essere specificati con l'attributo xmlns. Come sapete, i documenti XHTML iniziano con

<html xmlns="http://www.w3.org/1999/xhtml"> 

è possibile specificare il prefisso come

<html xmlns:prefix="http://www.w3.org/1999/xhtml"> 

e poi si useranno

<prefix:head> 
    <prefix:title></prefix:title> 
</prefix:head> 

In modo simile si può usare

<svg xmlns="http://www.w3.org/2000/svg"> 

anziché solo <svg> quando si include la grafica SVG. Quindi tutti i tag svg inizieranno con il prefisso svgprefix. Tuttavia, se si hanno nodi SVG secondari, sarà necessario anche questo attributo xmlns da definire. In tal caso, la definizione del prefisso sarà probabilmente più semplice.

+1

Downvoted; sebbene questa informazione sia corretta e correlata, la domanda dell'OP è correlata a una stringa JavaScript con specifica applicazione in D3.js, non in XML markup. – Phrogz

+3

@Phrogz Sono rispettosamente in disaccordo. La domanda è posta: "cosa è svg: svg?" e ho risposto esattamente a questa domanda, che cosa ha portato a questa risposta accettata. Op dice di averlo visto in D3 e nel codice HTML, non solo in D3 come intendi. Mi sembra che op sia consapevole del fatto che le funzioni di 'append' ottengono un tagname, solo che non sapeva che tipo di tagname' svg: svg' sta, supponendo che sia un plugin SVG.Non si può dire che si tratti di un problema JS, poiché la domanda non è stata contrassegnata come 'JavaScript'. – Imp

+0

Rispetto il tuo rispettoso disaccordo. :) Per me il codice in questione '.append (" svg: svg ")' insieme a una menzione di D3.js lo rende chiaramente una domanda di codifica. Tuttavia, dato il tuo buon punto sul vederlo "in HTML" rimuoverò il mio downvote. – Phrogz

16

Dalla documentazione per D3.js's append() method:

nome del tag del elemento può avere un prefisso dello spazio dei nomi, come ad esempio "svg: testo" per creare un elemento di "testo" nel namespace SVG. Per impostazione predefinita, D3 supporta gli spazi dei nomi svg, xhtml, xlink, xml e xmlns. Ulteriori spazi dei nomi possono essere registrati aggiungendo allo d3.ns.prefix.

nota in particolare che i prefissi dello spazio dei nomi in d3.js sono non sul documento, ma una mappa predefinita di prefissi comuni all'URL namespace attuale.

namespace sono il modo in cui un documento XML (che comprende XHTML ma non HTML) può includere due attributi o elementi con lo stesso nome (ad esempio "il peccato", come in matematica calcolo sine contro "il peccato", come nel morale in mancanza) senza conflitto. L'inserimento di un elemento <svg> in un documento XHTML non ha alcun significato a meno che l'elemento SVG non sia nello SVG namespace.

Per ulteriori informazioni, leggere Namespaces in XML.

+5

Solo per la cronaca, il namespace è facoltativo in d3 dal 23 novembre 2011 – Biovisualize