Vi la siguiente línea en un archivo XML:
xmlns:android="http://schemas.android.com/apk/res/android"
También he visto xmlns
en muchos otros archivos XML que he encontrado.
¿Qué es?
xml
xml-namespaces
usuario88637
fuente
fuente
Respuestas:
Define un espacio de nombres XML .
En su ejemplo, el prefijo del espacio de nombres es " android " y el URI del espacio de nombres es " http://schemas.android.com/apk/res/android "
En el documento, ve elementos como:
<android:foo />
Piense en el prefijo del espacio de nombres como una variable con un alias de nombre corto para el URI del espacio de nombres completo. Es el equivalente de escribir
<http://schemas.android.com/apk/res/android:foo />
con respecto a lo que "significa" cuando un analizador XML lee el documento.NOTA: en realidad no puede utilizar el URI de espacio de nombres completo en lugar del prefijo de espacio de nombres en un documento de instancia XML.
Consulte este tutorial sobre espacios de nombres: http://www.sitepoint.com/xml-namespaces-explained/
fuente
<LinearLayout
trabajos sin prefijo?Significa espacio de nombres XML .
Básicamente, cada elemento (o atributo) 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. 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. De acuerdo, es un poco artificial.Si nuestros dos XML se combinaran en un solo documento, ¿cómo distinguiríamos los dos nombres? Como puede ver arriba, hay dos
name
elementos, pero ambos tienen significados diferentes.La respuesta es que usted y yo asignaríamos un espacio de nombres a nuestro XML, que haríamos único:
Ahora que hemos calificado completamente nuestro XML, no hay ambigüedad en cuanto a lo
name
que significa cada elemento. Todas las etiquetas que comienzanpersonxml:
son etiquetas que pertenecen a su XML, todas las que comienzancityxml:
son mías.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 lugar dexmlns:rob="somenamespace"
, especifica el espacio de nombres predeterminado para el documento.El espacio de nombres en sí, a menudo un IRI , no tiene ninguna consecuencia real. Debe ser único, por lo que las personas tienden a elegir un IRI / URI que poseen, pero no tiene mayor significado que eso. A veces las personas colocan el esquema (definición) para el XML en el IRI especificado, pero eso es una convención de algunas personas solamente.
El prefijo tampoco tiene consecuencias. Lo único que importa es en qué espacio de nombres se define el prefijo. 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
ymycityxml
ambos se asignan al mismo espacio de nombres (como en el fragmento a continuación), entonces no importaría si prefijaste un elemento dado conpersonxml
omycityxml
, 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 prefijo, solo el espacio de nombres que asigna. El prefijo es solo una indirección que apunta al espacio de nombres.Los atributos pueden ser calificados pero generalmente no lo son. También hacen no heredan su espacio de nombres del elemento que se encuentran, en contraposición a los elementos (véase más adelante).
Además, los espacios de nombres de elementos se heredan del elemento padre. En otras palabras, también podría haber escrito el XML anterior como
fuente
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ó debajo del espacio de nombres:
También podría llamarlo así:
Esto es solo un identificador único. Sin embargo, se establece que debe colocar una URL que sea única y que potencialmente pueda apuntar a la especificación de etiquetas / atributos usados en ese espacio de nombres. No es necesario aunque.
¿Por qué debería ser único? Debido a que el propósito de los espacios de nombres es tenerlos únicos para que el atributo, por ejemplo llamado fondo de su espacio de nombres, pueda distinguirse del fondo de otro espacio de nombres.
Debido a esa singularidad, no debe preocuparse de que si crea su atributo personalizado tendrá colisión de nombres.
fuente
xmlns: espacio de nombres xml. Es solo un método para evitar conflictos de nombres de elementos. Por ejemplo:
Dos
node
elementos diferentes en un archivo xml. Sin espacios de nombres, este archivo no sería válido.fuente
Tiene espacios de nombre para que pueda tener elementos únicos a nivel mundial. Sin embargo, el 99% de las veces esto realmente no importa, pero cuando lo pones en la perspectiva de la Web Semántica , comienza a ser importante.
Por ejemplo, puede hacer una combinación XML de diferentes esquemas simplemente usando el apropiado
xmlns
. Por ejemplo, mezcla a un amigo con vCard , etc.fuente