Un elemento es un grupo formado por una etiqueta de apertura, otra de cierre y el contenido que hay entre ambas.
En los documentos de lenguajes de marcas, la distribución de los elementos está jerarquizada según una estructura de árbol, lo que implica que es posible anidarlos pero no entrelazarlos.
Hemos visto que en los elementos el orden es importante, ¿lo es también para los atributos? En este caso el orden no es significativo. Lo que hay que tener presente es que no puede haber dos atributos con el mismo nombre.
Sabemos que los atributos no pueden tener nodos que dependan de ellos, por tanto solo pueden corresponder con hojas de la estructura de árbol que jerarquiza los datos. ¿Significa esto que todas las hojas van a ser atributos? Pues no, es cierto que los atributos son hojas, pero las hojas pueden ser atributos o elementos.
En ese caso, ¿qué criterios podemos utilizar para decidir si un dato del documento que se pretende estructurar ha de representarse mediante un elemento o un atributo? Aunque no siempre se respetan, podemos usar los siguientes criterios:
- El dato será un elemento si cumple alguna de las siguientes condiciones:
- Contiene subestructuras.
- Es de un tamaño considerable.
- Su valor cambia frecuentemente.
- Su valor va a ser mostrado a un usuario o aplicación.
- Los casos en los que el dato será un atributo son:
- El dato es de pequeño tamaño y su valor raramente cambia, aunque hay situaciones en las que este caso puede ser un elemento.
- El dato solo puede tener unos cuantos valores fijos.
- El dato guía el procesamiento XML pero no se va a mostrar.
Los espacios de nombres, o namespaces, ¿qué nos permiten?
- Diferenciar entre los elementos y atributos de distintos vocabularios con diferentes significados que comparten nombre.
- Agrupar todos los elementos y atributos relacionados de una aplicación XML para que el software pueda reconocerlos con facilidad.
¿Cómo se declaran?
xmnls:"URI_namespace"
¿Y si se usa un prefijo que nos informe sobre cuál es el vocabulario al que está asociada esa definición?
xmnls:prefijo="URI_namespace"
En ambos casos URI_namespace
es la localización del conjunto del vocabulario del espacio de nombres al que se hace referencia.