Saltar al contenido

¿Qué significa “xmlns” en XML?

Recuerda que en la informática un problema puede tener diversas resoluciones, por lo tanto nosotros aquí enseñamos lo más óptimo y mejor.

Solución:

Significa espacio de nombres XML.

Básicamente, cada elemento (o attribute) en XML pertenece a un espacio de nombres, una forma de “calificar” el nombre del elemento.

Imagina que tú y yo inventamos nuestro propio XML. Tú inventa XML para describir personas, yo invento el mío para describir ciudades. Ambos incluimos un elemento llamado name. El tuyo se refiere al nombre de la persona y el mío al nombre de la ciudad. Está bien, es un poco artificial.


    Rob
    37
    
        London
        123.000
        0.00
    

Si nuestros dos XML se combinaran en un solo documento, ¿cómo diferenciaríamos los dos nombres? Como puede ver arriba, hay dos name elementos, pero ambos tienen significados diferentes.

La respuesta es que tú y yo asignaríamos un espacio de nombres a nuestro XML, que haríamos único:


    Rob
    37
    
        London
        123.000
        0.00
    

Ahora que hemos calificado completamente nuestro XML, no hay ambigüedad en cuanto a lo que cada name elemento significa. Todas las etiquetas que comienzan con personxml: son etiquetas pertenecientes a tu XML, todas las que empiezan por cityxml: son mios.

Hay algunos puntos a tener en cuenta:

  • Si excluye cualquier declaración de espacio de nombres, se considera que las cosas están en el espacio de nombres predeterminado.

  • Si declara un espacio de nombres sin el identificador, es decir, xmlns="http://somenamespace"en vez de xmlns:rob="somenamespace"especifica el espacio de nombres predeterminado para el documento.

  • El propio espacio de nombres, a menudo un IRI, no tiene ninguna consecuencia real. Debe ser único, por lo que la gente tiende a elegir un IRI/URI de su propiedad, pero no tiene mayor significado que ese. A veces, las personas colocarán el esquema (definición) para el XML en el IRI especificado, pero esa es una convención de algunas personas solamente.

  • los prefix tampoco tiene ninguna consecuencia. Lo único que importa es qué espacio de nombres prefix Se define como. Varias etiquetas que comienzan con diferentes prefijos, todas las cuales se asignan al mismo espacio de nombres, se consideran iguales.

    Por ejemplo, si los prefijos personxml y mycityxml ambos asignados al mismo espacio de nombres (como en el fragmento a continuación), entonces no importaría si antepones un elemento dado con personxml o mycityxml, ambos serían tratados como lo mismo por un analizador XML. El punto es que a un analizador XML no le importa lo que haya elegido como prefix, solo el espacio de nombres que mapea también. los prefix es solo un indirección apuntando al espacio de nombres.

    
    
  • Los atributos pueden ser calificados pero generalmente no lo son. ellos también lo hacen no heredan su espacio de nombres del elemento en el que se encuentran, a diferencia de los elementos (ver más abajo).

Además, los espacios de nombres de los elementos se heredan del elemento principal. En otras palabras, igualmente podría haber escrito el XML anterior como


    Rob
    37
    
        London
        123.000
        0.00
    

Define un espacio de nombres XML.

En tu ejemplo, el Prefijo de espacio de nombres es “androide” y el URI de espacio de nombres es “http://esquemas.android.com/apk/res/android

En el documento, se ven elementos como:

Piense en el espacio de nombres prefix como una variable con un alias de nombre corto para el URI de espacio de nombres completo. Es el equivalente a escribir. con respecto a lo que “significa” cuando un analizador XML lee el documento.

NOTA: En realidad, no puede usar el URI de espacio de nombres completo en lugar del espacio de nombres prefix en un documento de instancia XML.

Consulte este tutorial sobre espacios de nombres: http://www.sitepoint.com/xml-namespaces-explained/

Creo que la mayor confusión es que el espacio de nombres xml apunta a algún tipo de URL que no tiene ninguna información. Pero la verdad es que la persona que inventó el siguiente espacio de nombres:

xmlns:android="http://schemas.android.com/apk/res/android"

también podría llamarse así:

xmlns:android="asjkl;fhgaslifujhaslkfjhliuqwhrqwjlrknqwljk.rho;il"

Esto es solo un identificador único. Sin embargo, se establece que debe colocar allí una URL que sea única y que pueda apuntar potencialmente a la especificación de las etiquetas/etiquetas utilizadas.attributes en ese espacio de nombres. Aunque no es obligatorio.

¿Por qué debería ser único? Debido a que el propósito de los espacios de nombres es que sean únicos, por lo que el attribute por ejemplo llamado antecedentes de su espacio de nombres se puede distinguir del antecedentes de otro espacio de nombres.

Debido a esa singularidad, no necesita preocuparse de que si crea su personalizado attribute Vas a tener una colisión de nombres.

Al final de la post puedes encontrar las acotaciones de otros desarrolladores, tú asimismo tienes la habilidad insertar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *