Hay algunas otras cosas que se pueden encontrar en un documento XML:
Comentarios: los comentarios pueden aparecer en cualquier lugar en el documento; incluso antes o después del elemento raíz. Un comentario comienza con <!--y termina con -->. Un comentario no puede contener un guión doble (--), excepto al final; con esta excepción, un comentario puede contener cualquier cosa. Aún más importante, cualquier marca dentro de un comentario será ignorada; si quiere eliminar una gran sección de un documento XML simplemente introdúzcala en un comentario. (Para restaurar la sección comentada simplemente elimine las etiquetas de comentario.) Aquí presentamos un ejemplo que contiene un comentario.
<!--Esto es una PI para Cocoon: --> <?cocoon-process type="sql"?>
Instrucciones de procesamiento: Una instrucción de procesamiento es una marca que se interpretará como un segmento de código. En el ejemplo previo hay una instrucción de procesamiento ( algunas veces llamadas PI) para Cocoon, un marco de procesado para XML de Apache Software Foundation. Cuando Cocoon está procesando un documento XML busca instrucciones de procesamiento que comiencen con cocoon-process, entonces procesa el documento XML de acuerdo a ellas. En este ejemplo, el atributo type="sql" le dice a Cocoon que el documento XML contiene una sentencia SQL.
<!-- He aquí una entidad: --> <!ENTITY dw "developerWorks">
Entidades: El ejemplo previo define una entidad para el documento. Dondequiera que el procesador XML encuentre la cadena &dw;, la reemplazará con la cadena developerWorks. La especificación XML también define cinco entidades que pueden usarse en lugar de varios caracteres especiales. Las entidades son: · < para el símbolo menor que (<) · > para el símbolo mayor que (>) · " para las comillas dobles (") · ' para la comilla simple o apostrofe (`) · & para el ampersand (&).
Namespaces
El poder de XML proviene de su flexibilidad, del hecho de que usted, yo y millones de otras personas podamos definir nuestras propias etiquetas para describir nuestros datos. ¿Recuerda el ejemplo del documento XML con el nombre y dirección de una persona? Ese documento incluía el elemento <titulo> para el título o tratamiento de cortesía, una elección perfectamente razonable como nombre de un elemento. Si usted crea una librería online, podría elegir el crear un elemento <titulo> para almacenar el título de un libro. Si crea una compañía hipotecaria online, podría elegir crear un elemento <titulo> Para el título de una propiedad. Todas son elecciones razonables, pero todas ellas crean elementos con el mismo nombre. ¿Cómo saber si, dado un elemento <titulo> se refiere a una persona, un libro o una propiedad? Con los namespaces.
Para usar un namespace, debe definir un prefijo namespace y mapearlo a una cadena particular. Así es cómo se deberían definir prefijos namespace para nuestros tres elementos <titulo>:
<?xml version="1.0"?> <resumen_usuario xmlns:direccion="
http://www.xyz.com/direcciones/∞" xmlns:libros="
http://www.zyx.com/libros/∞" xmlns:hipoteca="
http://www.yyz.com/hipotecas/∞" > ... <direccion:nombre> <titulo>Mrs.</titulo> ... </direccion:nombre> ... ... <libros:titulo>El Señor de los Anillos</libros:titulo> ... ... <hipoteca:titulo>NC2948-388-1983 </hipoteca:titulo>
En este ejemplo, los tres prefijos del namespace son direccion, libros e hipoteca.
Dese cuenta que la definición de un namespace para un elemento particular significa que todos los elementos hijos pertenecen al mismo namespace. El primer elemento <titulo> pertenece al namespace direccion debido a que su elemento padre <direccion:Nombre>, ya pertenecía a ese namespace. El punto final: La cadena de una definición de namespace es solo una cadena. Si, esa cadena parece una URL, pero no lo es. Podría definir xmlns:direccion="mike" y funcionaría exactamente igual, Lo único que importa acerca de la cadena del namespace es que sea única; por esto la mayor parte de las definiciones de namespace parecen URLs. Los parser XML no van a la dirección
http://www.zyx.com/libros/∞ para buscar una DTD o un Esquema, simplemente usan esos textos como cadenas. Es confuso, pero así es como funcionan los namespaces.