2012-05-14 25 views

Respuesta

19

En el código XHTML, se pueden usar espacios de nombres para distinguir otros lenguajes basados ​​en XML incluidos en la página web. Aquí, el espacio de nombres "svg" se usa antes de la etiqueta "svg".

namespace:tagname 

Esto puede ser útil en caso de que dos etiquetas (por ejemplo, en XHTML y SVG) tienen el mismo nombre y desea especificar exactamente cuál se hace referencia a. Las etiquetas se pueden especificar con el atributo xmlns. Como ya saben, los documentos XHTML comienzan con

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

puede especificar el prefijo como

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

y luego se usarán

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

Similarmente puede utilizar

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

en lugar de solo <svg> cuando incluya su gráfico svg. Entonces todas las etiquetas svg comenzarán con el prefijo svgprefix. Sin embargo, si tiene nodos secundarios SVG, también necesitarán este atributo xmlns para ser definido. En tal caso, definir el prefijo probablemente será más fácil.

+1

Downvoted; aunque esta información es correcta y está relacionada, la pregunta del OP está relacionada con una cadena de JavaScript con una aplicación específica en D3.js, no con un marcado XML. – Phrogz

+3

@Phrogz Estoy respetuosamente en desacuerdo. La pregunta se plantea: "¿Qué es svg: svg?" y respondí exactamente esa pregunta, lo que resultó en la aceptación de esta respuesta. Op dice que lo vieron en D3 y en el código HTML, no solo en D3, como lo implica. Me parece que op es consciente de que las funciones 'append' tienen un tagname, solo que no sabían qué tipo de tagname' svg: svg' es, supongo que es un plugin SVG.No se puede decir que este es un problema de JS, ya que la pregunta no estaba etiquetada como 'JavaScript'. – Imp

+0

Respeto su desacuerdo respetuoso. :) Para mí, el código en cuestión '.append (" svg: svg ")' junto con una mención de D3.js lo hace claramente una pregunta de codificación. Sin embargo, dado su buen punto acerca de verlo "en HTML", eliminaré mi voto downvote. – Phrogz

16

De la documentación de D3.js's append() method:

nombre de la etiqueta del elemento puede tener un prefijo de espacio de nombres, tales como "SVG: texto" para crear un elemento de "texto" en el espacio de nombres SVG. De forma predeterminada, D3 admite espacios de nombres svg, xhtml, xlink, xml y xmlns. Se pueden registrar espacios de nombres adicionales al agregar al d3.ns.prefix.

nota en particular que los prefijos de espacio de nombres en D3.js son no basan en el documento, pero un mapa predefinido de prefijos comunes a la URL real del espacio de nombres.

Los espacios de nombres son la forma de un documento XML (que incluye XHTML pero no HTML) puede incluir dos atributos o elementos con el mismo nombre (por ejemplo, "pecado", como en el cálculo matemático sine vs "pecado", como en moral fallando) sin conflicto. Poner un elemento <svg> en un documento XHTML no tiene ningún significado a menos que ese elemento SVG esté en el SVG namespace.

Para obtener más información, lea Namespaces in XML.

+5

Solo para el registro, el espacio de nombres es opcional en d3 desde el 23 de noviembre de 2011 – Biovisualize