|
El API JAXP |
Introducción Rápida al XML
Esta página cubre la parte básica de XML. El objetivo es ofrecernos la suficiente información para empezar, por eso que entendamos que es XML es importante. (Aprenderemos más sobre XML en secciones posteriores de este tutor). Describiremos las mayores características que hacen de XML un gran sistema de almacenamiento e intercambio de información, y nos ofrece una idea general de cómo se puede usar XML. Esta sección del tutorial cubre.
¿Qué es XML?
XML es un lenguaje de marcas basado en texto que se está convirtiendo rápidamente en el estándar para el intercambio de datos en la Web. Igual que en HMTL, identificamos los datos usando etiquetas (identificadores encerrados entre ángulos, como: <...>). Colectivamente, las etiquetas son conocidas como "marcas".
Al contrario que las etiquetas HTML, las etiquetas XML nos dicen lo que significan los datos, en vez de cómo se mostrarán. Donde las etiquetas HTML dicen algo como "muestra este dato en negrita" (<b>...</b>), una etiqueta XML actúa como un nombre de campo en nuestro programa. Poner una etiqueta a un dato que lo identifica (por ejemplo: <message>...</message>).
De la misma forma que definimos los nombres de los campos para una estructura de datos, podemos usar cualquier etiqueta XML que tenga sentido para una aplicación dada. Aunque, naturalmente, para que múltiples aplicaciones usen el mismo dato XML, tienen que estar de acuerdo con los nombres de etiquetas que intentan usar.
Aquí tenemos un ejemplo de algunos datos XML que podríamos usar para una aplicación de mensajes.
<message> <to>you@yourAddress.com</to> <from>me@myAddress.com</from> <subject>XML Is Really Cool</subject> <text> How many ways is XML cool? Let me count the ways... </text> </message>
|
Nota:
A lo largo de este tutorial usaremos texto en negrita para iluminar las cosas sobre las que queremos llamar tu atención. ¡XML no requiere que nada esté en negrita! |
Las etiquetas de este ejemplo identifican un mensaje completo, las direcciones origen y destino, el subject, y el texto del mensaje. Como en HTML, la etiqueta <to> tiene su correspondiente etiqueta final: </to>. Los datos entre la etiqueta y su correspondiente etiqueta final definen un elemento de los datos XML. Observa también, que el contenido de la etiqueta <to> están enteramente contenido dentro del ámbito de las etiquetas <message>..</message>. Es esta habilidad de que una etiqueta pueda conteneder otras etiquetas la que le da a XML la habilidad de representar estructuras de datos en forma de árbol.
De nuevo, como en HTML, los espacios en blanco son esencialmente irrelevantes, podemos formatear los datos para poder leerlos y todavía poder procesarlos fácilmente con un programa. Sin embargo, al contrario que en HTML, en XML podríamos buscar fácilmente un conjunto de datos para mensajes que contengan "cool" en el subject, porque las etiquetas XML identifican el contenido de los datos, en vez de especificar su representación.
Etiquetas y Atributos
Las etiquetas también pueden contener atributos -- información adicional incluida como parte de la propia etiqueta, dentro de los ángulos de la etiqueta. El siguiente ejemplo muestra una estructura de mensaje de e-mail que usa atributos para los campos "to", "from", y "subject".
<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <text> How many ways is XML cool? Let me count the ways... </text> </message>
Como en HTML, al nombre del atributo le sigue un signo igual y el valor del atributo, y varios atributos se separan por espacios. Sin embargo, al contrario que HTML, en XML las comas entre atributos no se ignoran -- si están presentes, generan un error.
Como podríamos diseñar una estructura de datos como <message> igualmente bien usando atributos o etiquetas, puede tomar una gran cantidad de tiempo imaginarnos cual es el mejor diseño para nuestros propósitos. La última parte de este tutorial, Diseñar una Estructura de Datos XML, incluye ideas para ayudarnos a decidir cuando usar atributos y cuando etiquetas.
Etiquetas Vacías
Una diferencia realmente grande entre XML y HTML es que un documento XML siempre tiene que estar bien formateado. Hay muchas reglas que determinan cuando un documento está bien-formateado, pero una de las más importantes es que cada etiqueta tiene una etiqueta de cierre. Por eso, en XML, la etiqueta </to> no es opcional. El elemento <to> nunca es terminado por una etiqueta distinta de </to>.
|
Nota:
Otro aspecto importante de un documento bien-formateado es que todas las etiquetas están completamente anidadas. Por eso podemos tener <message>..<to>..</to>..</message>, pero nunca <message>..<to>..</message>..</to>. |
Algunas veces, tiene sentido tener etiquetas que existen por sí mismas. Por ejemplo, podríamos querer añadir una etiqueta "flag" que marque un mensaje como importante. Una etiqueta que no encierra ningún contenido, por eso es contenida como una "etiqueta vacía". Podemos crear una etiqueta vacía terminándola con /> en lugar de >. Por ejemplo, el siguiente mensaje contiene dicha etiqueta.
<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <flag/> <text> How many ways is XML cool? Let me count the ways... </text> </message>
|
Nota:
La etiqueta vacía nos evita tener que codificar <flag></flag> para poder tener un documeto bien-formateado. Podemos controlar qué etiquetas están permitidas creando una Definición de Tipo de Documento DTD. Si existe un DTD, el documento puede contener cualquier clase de etiqueta que queramos, mientras que el documento esté bien formateado. |
Comentarios en Ficheros XML
Los comentarios XML se parecen a los comentarios HTML.
<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <!-- This is a comment --> <text> How many ways is XML cool? Let me count the ways... </text> </message>
El Prólogo XML
Para completar este viaje introductorio a XML, observa que un fichero XML siempre empieza con un prólogo. El prólogo mínimo contiene una declaración que identifica el documento como un documento XML, como esta.
<?xml version="1.0"?>
La declaración también podría contener información adicional, como esta:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
La declaracación XML es esencialmente la misma que la cabecera HTML, <html>, excepto en que usa <?..?> y contiene los siguientes atributos.
- version
- Identifica la versión del lenguaje de marcas XML usada en los datos. Este atributo no es opcional.
- encoding
- Identifica el juego de caracteres usado para codificar los datos. "ISO-8859-1" es "Latin-1" el conjunto de caracteres Western European y del lenguaje Inglés. (El valor por defecto es compresión Unicode.UTF-8.)
- standalone
- Dice si este documento referencia o no a una entidad externa o a una especificación de datos externa. Si no hay referencias externas "yes" es el valor apropiado
El prólogo también puede contener definiciones de entidades (ítems que son insertados cuando los referenciamos dentro del documento) y especificaciones que dicen qué etiquetas son válidas en el documentos, ambas declaradas en una Definición de Tipo de Documento (DTD) que puede ser definido directamente dentro del prólogo, así como con punteros a ficheros de especificación externos.
|
Nota:
La declaración es realmente opcional. Pero es una buena idea incluirla simpre que creemos un fichero XML. La declaración debería tener un número de versión, como mínimo, e idealmente también la codificación. Este estándard simplifica las cosas si en el futuro se extiende el estándard XML, y si los datos siempre necesitan ser localizados en diferentes regiones geográficas. |
Instrucciones de Procesamiento
Un fichero XML también puede contener instruciones de procesamiento que ofrecen comandos o información para una aplicación que está procesando los datos XML. Estas instrucciones tienen el siguiente formato.
<?fuente instrucciones?>
donde fuente es el nombre de la aplicación que se espera que haga el procesamiento, e instrucciones es una cadena de caracteres que incluye la información o comandos para que los precese la aplicación.
Como las instrucciones son específicas de la aplicación, un fichero XML podría incluir múltiples instrucciones de procesamiento que le digan a diferentes aplicaciones que hagan cosas similares, aunque de diferente forma. El fichero XML para una presentación, por ejemplo, podría tener instrucciones de procesamiento que permitieran al orador especificar una versión técnica o de nivel exclusivo de la presentación. Si se utilizaran varios programas de presentación, el programa podría necesitar múltiples versiones de las instrucciones de precesamiento (aunque sería mejor si dichas aplicacioens reconocieran instrucciones estándard).
|
Nota:
El nombre de fuente "xml" (en cualquier combinación de letras mayúsculas o minúsculas) está reservado por los estándards XML. En un sentido, la declaración es una instrucción de procesamiento que fija este estándard. (Sin embargo, cuando trabajemos más adelante con el analizador, veremos que el método para manejar instrucciones de procesamiento nunca ve la declaración.) |
¿Por qué es importante el XML?
Hay un gran número de razones para aceptar el uso de XML. Esta sección lista unos pocos de los más prominentes.
Texto Plano
Como XML no está en formato binario, podemos crear y editar ficheros con cualquiera de los editores de texto estándard a un entorno de desarrollo visual. Esto hace fácil la depuración de nuestros programas, y hace útil el almacenamiento de pequeñas cantidades de datos. En el otro lado del expectro, una parte del XML con bases de datos hace posible almacenar grandes cantidades de datos de forma eficiente. Por eso XML proporciona escalabilidad para cualquier cosa, desde pequeños ficheros de configuración a repositorios de datos de grandes compañias.
Identificación de Datos
XML dice que clase de datos tenemos, no cómo se muestran. Como las etiquetas de marca identifican la información y dividen los datos en partes, un pograma de email puede procesarlo, un programa de búsqueda puede buscar los mensajes enviados a una persona particular, y un libro de direcciones puede extraer la información de la dirección del resto del mensaje. Brevemente, como las diferentes partes de la información han sido identificadas, pueden ser usadas de diferentes formas por diferentes aplicaciones.
Estilismo
Cuando el estilo es importante, la hoja de estilos estándad, XSL, nos dicta cómo portar los datos. Por ejemplo, la hoja de estilo para.
<to>you@yourAddress.com</to>
se puede decir:
- Empieza una nueva línea.
- Muestra "To:" en negrita, seguido por un espacio
- Muestra los datos de destino.
Lo que produce:
To: you@yourAddress
Por supuesto, podríamos haber hecho lo mismo con HTML, pero no podríamos procesar los datos con programas de búsqueda y programas de extracción de direcciones o parecidos. Más importante, como XML está libre de estilo, podemos usar una hoja de estilo completamente diferente para producir salida en postcript, TEXT, PDF, o algún nuevo formato que no haya sido inventado todavía.
Reutilización en Línea
Uno de los aspectos más bonitos de los documentos XML es que pueden estar compuestos por entidades separadas. Podemos hacer esto con HTML, pero sólo enlazando a otros documentos. Al contrario que HTML, las entidades XML pueden ser incluidas "en línea" en un documento. Las secciones incluidas parecen una parte normal del documento -- podemos buscar en el documento completo a la vez o descargarlo en una sola pieza. Esto nos permite modularizar nuestros documentos sin recurrir a los enlaces.
Enlazabilidad
Gracias a HTML, la habilidad de definir enlaces entre documentos es ahora una necesidad. La siguiente sección de este tutorial, XML y Aspectos Relacionados, describe la iniciativa de especificación de enlace. Esta iniciativa nos permite definir dos formas de enlaces, enlaces de varias fuentes, enlaces "expandibles" (donde pulsar sobre un enlace hace que la información fuente aparezca en línea), y enlaces entre dos documentos existentes que están definidos en un tercero.
Fácilmente Procesable
Como se mencionó antes, la notación normal y consistente hace fácil construir un programa y procesar datos XML. Por ejemplo, en HTML una etiqueta <dt> puede estar delimitada por </dt>, otra <dt>, <dd>, o </dl>. Esto hace la programación algo difícil. Pero en XML, la etiqueta <dt> siempre debe tener un terminador </dt>, o será definida como una etiqueta <dt/>. Esta restricción es una parte crítica de las restricciones que crean un documento XML bien-formateado. (De otra forma, el analizador XML no podrá leer los datos). Y como XML es un estándard neutral a los vendedores, podremos elegir entre varios analizadores XML, cualquiera de ellos hace el trabajo de procesar los datos XML.
Herencia
Finalmente, los documentos XML se benefician de su estructura en forma de árbol. Estas estructuras son, en general, rápidas de acceder porque podemos trasladrar la parte que necesitemos, como pasando a través de una tabla de contenidos. También es fácil redistribruir, porque cada pieza está delimitada. Por ejemplo, en un documento, podríamos mover una cabecera a una nueva localización y arrastrar todo lo que tenga debajo junto con ella, en lugar de tener que bajar por la pagina para hacer una nueva selección, cortarla, y pegar la selección en una nueva posición.
¿Cómo Podemos usar XML?
Hay varias formas básicas para hacer uso del XML:
- Proceso de datos tradicionales, donde XML codifica los datos para que los procese un programa.
- Programación dirigida a documento, donde los documentos XML son contenedores que construyen interfaces y aplicaciones para componentes existentes.
- Archivo -- el fundamento para la programación dirigida a documento, donde la versión personalizada de un componente es grabada (archivada) para que pueda ser usar más tarde.
- Union, donde el DTD o esquema que define una extructura de datos XML se usa para generar automáticamente una porción importante de la aplicación que eventualmente procesa esos datos.
Proceso Tradicional de Datos
XML se convierte rápidamente en una elección de representación para la red. Es terrorífico cuando se usa en conjunción con programas de la plataforma Java centrados en red que envían y recuperan información. Por ejemplo, una aplicación cliente/servidor, podría transmitir datos XML codificados entre el cliente y el servidor.
En el futuro, XML es la respuesta potencial para el intercambio de datos en toda suerte de transaciones, siempre que ambos lados estén de acuerdo con las marcas a usar. (Por ejemplo, ¿un programa de e-mail debería esperar ver etiquetas llamadas <FIRST> y <LAST>, o <FIRSTNAME> y <LASTNAME>?) La necesidad de estándares comunes generará muchos esfuerzos de estandarización especificos de la industria en los años venideros. Mientras tanto, los mecanismos que nos permiten "traducir" las etiquetas en un documento XML son importantes. Dichos mecanismos incluyen proyectos como la iniciativa RDF, que define "meta etiequetas", y la especificación XSL, que nos permite traducir etiquetas XML en otras etiquetas XML.
Programación Dirigida a Documento(DDP)
La más nueva aproximación a usar XML es para construir un documento que describe cómo debería verse la página de una aplicación. El documento, en vez de ser mostrado simplemente, consiste en referencias a componentes del interface de usuario y componentes de la lógica de negocio que son "enganchados juntos" para crear una aplicación al vuelo.
Por supuesto, tiene sentido utilizar la plataforma Java para dichos componentes. Tanto los Beans Java para interfaces como los JavaBeans Enterprise para la lógica del negocio puede usarse para construir dichas aplicaciones. Aunque ninguno de los esfuerzos hechos hasta ahora ha dado un resultado comercial, la mayoría del trabajo preliminiar ya está hecho.
|
Nota:
El lenguaje Java también es excelente para escribir herramientas de procesamiento XML que sean tan portables como el propio XML. Varios editores visuales de XML han sido escritos usando la plataforma Java. Para ver una lista de estos editores, y otras herramientas puedes ir a la página SGML/XML Web Page. |
Unión
Una vez que hemos definido la estructura de datos XML usando un DTD o uno de los esquemas estándars, una gran parte del procesamiento que necesitamos ya ha sido definido. Por ejemplo, si el esquema dice que los datos de texto en un elemento <date> deben seguir uno de los formatos de datos reconocidos, se ha definido un aspecto del criterio de validación para los datos -- sólo queda escribir el código. Aunque una especificacion DTD no puede ir al mismo nivel de detalle, un DTD (igual que un esquema) proporciona una gramática que le dice qué estructuras de datos pueden ocurrir, en que secuencia. Estas especificaciones nos dicen cómo escribir código de alto nivel que procese los elementos de datos.
Pero cuando la estructura de datos (y posiblemente el formato) está completamente especifiaco, el código que necesitamos para procesarlo puede fácilmente ser generado de forma automática. Este proceso es conocido como unión -- crear clases que reconocen y precesan diferentes elementos de datos mediante el procesamiento de la especificación que define dichos elementos. Como el tiempo se va, deberiamos encontrar que estamos usando la especificación de datos para generan cantidades importantes de código, por eso podemos enfocarnos en la programación que es única para nuestra aplicación.
Archivo
El mecanismo básico para grabar informaicón se llama archivo. Archivamos un componente escribiéndolo en un canal de salida de forma que podamos reutilizarlo más tarde. Entonces podemos leerlo y ejemplarizarlo usando los parámetros grabados. (Por ejemplo, si grabamos un componente tabla, sus parámetros podrían ser el número de filas y columnas a mostrar). Los componentes archivados tambíen pueden ser pasados a través de la Web y usados de muchas formas.
Sin embargo, cuando los componentes son archivados en forma binaria, hay algunas limitaciones sobre los tipos de cambos que podemos hacerle a las clases subyacentes si queremos retener la compatibilidad con versiones grabadas préviamente. Si pudieramos modificar la versión archivada para reflejar el cambio, se solucionaría el problema. Pero esto es díficil de hacer con un objeto binario. Dichas consideraciones han lanzado un gran número de investigaciones sobre el uso de XML para el archivo. Pero si el estado de un objeto es grabado en formato texto usando XML, cualquier cosa en él puede modificarse tan fácilmente como decir: "Busca y Reemplaza".
El formato XML basado en texto también hace sencillo la transferencia de objetos entre aplicaciones escritas en diferentes lenguajes. Por todas estas razones, el archivo basado en XML se convertirá en una fuerza importante en un futuro no muy lejano.
Sumario
XML es muy sencillo y muy flexible. Tiene muchos usos por descubrir -- sólo estamos empezando a arañar la superficie de su potencial. Es el fundamento para una gran cantidad de estándards, proporcionando un lenguaje común que diferentes sistemas de ordenadores puedan usar para intercambiar datos unos con otros.
Me ha aclarado muchas ideas















































