Definiciones
XML o eXtensible Markup Language (Lenguaje de Etiquetas Extendible)es una lenguaje para intercambio de datos.
XML esta orientado a producir documentos que contienen datos.
XML permite que los autores de los documentos definan cualquier tipo de etiquetas para cualquier tipo de informacion.
Los documentos XML son portables. Dichos documentos se pueden modificar de diversas formas, de hecho, no se
necesita un software especial.
Cualquier editor de texto que soporte caracter ASCII/Unicode puede ver y editar
un documento XML. Lo mas importante, es que XML puede ser leido por un ser humano o un sistema de computo
Estructurando datos con XML
Un documento XML es un archivo que contiene informacion con etiquetas.
Una etiqueta es un nombre que se pone entre los simbolos de menor (<) y mayor (>).
Por cada etiqueta utilizada, se debe cerrar, indicando el nombre de la etiqueta, y entre el simbolo menor y diagonal (<\) y mayor (>)
El siguiente documento XML, muestra un archivo XML con dos etiquetas.
Se debe observar que una etiqueta, puede tener datos o mas etiquetas dentro de ella.
XML permite estructurar los datos de una manera jerarquica.
Componentes de un documento XML
+ Etiqueta raiz. Cualquier documento XML debe llevar una etiqueta inicial o raiz
+ Elementos. Son etiquetas que estan dentro de la etiqueta raiz.
+ Datos. Entre cada etiqueta, se puede indicar datos (que es tipicamente texto)
+ Atributos de Etiquetas. Se incluyen dentro del elemento que inicia la etiqueta, indicando el nombre del atributo
y su valor

El siguiente ejemplo muestra un documento XML
Esquemas XML
Un documento XML tiene una estructura bien definida. Existe un lenguaje para definir la sintaxis o gramatica de un documento XML, denominada Document Type Definition o DTD.
Un DTD proporciona 2 elementos basicos de definicion.
ELEMENT, sirve para indicar el nombre de una etiqueta, y los subelementos que la componen y los atributos que
tiene
ATTLIST, sirve para indicar los atributos de los elementos y su tipo de dato (tipicamente PCDATA, que es un dato
alfanumerico)
El archivo DTD del documento primero muestra un ejemplo de DTD
A cada elemento o atributo se le pueden indicar operadores que indican la cardinalidad:
Sin operador - Debe Aparecer una vez
? - Puede aparecer 0 o 1 vez
+ - Debe aparecer de 1 a N veces
* - Puede aparecer de 0 a N veces
Un DTD es utilizado por herramientas XML para generar modulos que permitan manipular el documento
El archivo DTD de nomina es otro ejemplo.
Herramientas XML
Aunque un archivo XML es posible manipularlo con un editor de texto, existen un conjunto de herramienta para automatizar su uso
En NetBeans se pueden instalar una serie de herramientas
Para esto
En la barra Principal de NetBeans, indicar Tools->Update Center
Indicar que el modulo reside en NetBeans Update Center
Seleccionar los modulos a instalar, en este caso XML
Indicar que se bajen los modulos
Instalarlos y reiniciar NetBeans
Ademas, montar de la ubicacion de NetBeans (por ejemplo C:\Program Files\NetBeans\lib\ext\xerces.jar)
Basicamente, las herramientas proporcionadas son editores de XML y manipuladores de documentos XML.
Para utilizar el editor, abrir el documento XML, este debe llevar al editor XML de NetBeans.
Dado que un documento XML tiene una estructura bien definida, se puede aplicar un analisis sintactico, con
el fin de entender la informacion que tiene y convertirlo a una estructura de datos manipulable desde un lenguaje
Para este fin, se utilizan analizadores sintacticos o parsers, cuya funcion es ayudar a entender la estructura del documento XML y explotar la informacion contenida en este.
Simple API for XML. SAX
SAX es un conjunto de clases Java que permiten aplicar el análisis sintactico.
Existen diversas implantaciones, una de ellas es Apache Xerces.
Con SAX, se tiene un modelo en el cual, por cada elemento del documento, se invoca un método.
SAX ha tenido dos versiones, la actual 2.0, incluye algunas consideraciones nuevas en el manejo de XML
Para poder manipular un API como SAX, se deben utilizar las siguientes clases o interfases, con el fin
de escribir un parser que se integre a una aplicacion.
org.xml.sax.ContentHandler - Interfaz, a la cual se debe implantar, por el Parser de la aplicacion
org.xml.sax.InputSource - Permite cargar de un archivo o URL un documento XML, es la fuente del documento XML
org.xml.sax.XMLReader - Interfaz que define al analizador sintactico y la cual, tomando un InputSource, entrega
el resultado del analisis a un objeto de tipo ContentHandler. Dado que es una interfaz, la implantacion de SAX provee una Fabrica para poder interacturar que implante a la interfaz XMLReader.
Con NetBeans es posible generar codigo, a partir de un DTD, para un Parser
Estos son los pasos:
Seleccionar el documento DTD
Activar el menu y seleccionar "SAX Document Handler Wizard ..."
1. Indicar JAXP 1.1 y SAX 2.0, NO SELECCIONAR Propaget SAX Events to Generated Handler
\
2. Element Mappings, no indicar nada
3. Data Convertors, no indicar nada
4. Output Files, QUITAR LA OPCION Save Customized Bindings
5. Nombrar el DTD
Aplicar estos pasos con primero.dtd y nomina.dtd
Para nomina.dtd genera 2 clases y una Interfaz
NominaHandler - Interfaz que tiene metodos para manipular cada etiqueta o datos
NominaHandlerImpl - Clase que implanta a la interfaz NominaHandler
NominaParser - Clase que implanta al interfaz org.xml.sax.ContentHandler y utiliza XMLReader e InputSource; delegando la manipulacion de datos a una clase de tipo NominaHandler
Utilizando el parser
Escribir un programa Java como NominaXML
Se puede observar que para manipular el documento, se crea un objeto InputSource, dando la ruta del archivo; y
un objeto de tipo NominaHandler
Un parser para convertir a estructuras de datos Java
La clase NominaHandlerHashImpl.java , entrega el documento XML como una estructura de datos