Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción A XML: Tabla de Contenidos
Introducción A XML: Tabla de Contenidos
com/developerWorks
Introduccin a XML
Publicado originalmente en ingls por IBM developerWorks http://www.ibm.com/developerWorks Traducido por Gratiniano Lozano para http://www.javahispano.org
Tabla de contenidos
Si est viendo este documento online, puede pulsar sobre los tpicos de abajo para ver cada seccin.
1. Acerca de este tutorial. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Qu es XML? . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Reglas de los documentos XML.. . . . . . . . . . . . . . . . . . . . . . . . 7 4. Definir el contenido de un documento. . . . . . . . . . . . . . . . . . 13 5. Interfaces de programacin XML . . . . . . . . . . . . . . . . . . . . . . .20 6. Estndares XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7. Casos de estudio . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 29 8. Anuncios y recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Introduccin a XML
Pagina 1de 35
http://www.javahispano.org
Introduccin a XML
Pagina 2de 35
http://www.ibm.com/developerWorks
El problema con HTML es que fue diseado pensando en los humanos. Incluso sin ver el documento anterior en un navegador, podemos imaginar que se trata de la direccin postal de alguien. (Especficamente, es una direccin postal de alguien en los Estados Unidos; incluso aunque no estuviese familiarizado con los componentes de las direcciones postales de Estados Unidos podra imaginarse lo que representa.) Como humanos, tenemos la inteligencia para comprender el significado e intencin de muchos documentos. Una mquina, desafortunadamente no puede hacerlo. Mientras que las etiquetas de este documento le dicen al navegador cmo debe mostrar la informacin, no le dicen lo que la informacin es. Nosotros sabemos que es una direccin, pero la mquina no.
Representar HTML
Para representar HTML, el navegador nicamente sigue las instrucciones en el documento HTML. La etiqueta de prrafo le dice al navegador que empiece la presentacin en una nueva lnea, tpicamente con una lnea en blanco antes, mientras que las dos etiquetas de ruptura le dicen al navegador que avance hasta la siguiente lnea sin dejar lneas en blanco en medio. Aunque el navegador da un bonito formato al documento, la mquina an no sabe que se trata de una direccin postal.
Introduccin a XML
Pagina 3de 35
http://www.javahispano.org
Procesamiento de HTML
Para continuar la discusin con el ejemplo del documento HTML, consideremos la tarea de extraer el cdigo postal de la direccin. Aqu presentamos un (intencionadamente frgil) algoritmo para encontrar la marca HTML para el cdigo postal: Si se encuentra un prrafo con dos etiquetas <br>, el cdigo postal es la segunda palabra despus de la primera coma en la segunda etiqueta de ruptura. Aunque este algoritmo funciona con el ejemplo, existen en el mundo una gran cantidad de direcciones perfectamente vlidas para las cuales no puede funcionar. Incluso si se pudiera escribir un algoritmo que encontrase el cdigo postal para cualquier direccin escrita en HTML, existe un gran nmero de prrafos con dos etiquetas de ruptura cuyo contenido no es una direccin postal. La escritura de un algoritmo que busque en cualquier prrafo HTML y encuentre cualquier cdigo postal que contenga sera extremadamente difcil, sino imposible.
Introduccin a XML
Pagina 4de 35
http://www.ibm.com/developerWorks
McGoon </apellidos> </nombre> <calle> 1401 Main Street </calle> <ciudad>Anytown</ciudad> <estado>NC</estado> <codigo-postal> 34829 </codigo-postal> </direccion>
Una etiqueta es un texto entre el smbolo menor que (<) y el smbolo mayor que (>). Existen etiquetas de inicio (como <nombre>) y etiquetas de fin (como </nombre>). Un elemento consta de la etiqueta de inicio, la etiqueta de fin y de todo aquello que este entre ambas. En el ejemplo anterior, el elemento <nombre> contiene tres elementos hijos: <titulo>, <nombre>, y <apellidos>. Un atributo es un par nombre-valor dentro de la etiqueta de inicio de un elemento. En este ejemplo, estado es un atributo del elemento <ciudad>, en ejemplos anteriores <estado> era un elemento ( ver Un documento XML de ejemplo en la pgina 4).
http://www.javahispano.org
Ahora que ha visto como los desarrolladores pueden usar XML para crear documentos con datos que se auto-describen, veamos cmo se estn usando esos documentos para aumentar el rendimiento de la Web. Aqu mostramos algunas reas:
XML simplifica el intercambio de datos. Debido a que diferentes organizaciones ( en incluso diferentes partes dentro de una misma organizacin) raramente utilizan un nico conjunto de herramientas, esto puede suponer una cantidad de trabajo significativa para comunicar las aplicaciones. Usando XML cada grupo crea una nica utilidad que transforma sus formatos de datos internos en XML y viceversa. Lo mejor de todo, hay una gran probabilidad de que sus suministradores de software, ya proporcionen herramientas que transformen sus registros de base de datos( o directorios LDAP, o ordenes de compra, etc.) desde y hacia XML. XML permite un cdigo ms ligero. Debido a que los documentos XML pueden ser estructurados para identificar cada pieza importante de informacin ( as como las relaciones entre dichas piezas), es posible escribir cdigo que procese estos documentos XML sin intervencin humana. El hecho de que los proveedores de software hayan gastado cantidades masivas de tiempo y dinero construyendo herramientas de desarrollo XML significa que escribir ese cdigo es un proceso relativamente simple. XML permite bsquedas ms rpidas. Aunque los motores de bsqueda han mejorado sustancialmente durante los aos, es todava bastante comn encontrar resultados errneos en una bsqueda. Si se estn buscando pginas HTML de alguien llamado Chip, se pueden encontrar pginas sobre chips de chocolate, chips de ordenador, chips de madera y montones de otros enlaces intiles. Buscando en documentos XML por elementos <nombre> que contengan el texto Chip debera darnos un conjunto de resultados mucho mejor.
Discutiremos casos reales del uso de XML en Casos de Estudio en la pgina 28.
Introduccin a XML
Pagina 6de 35
http://www.ibm.com/developerWorks
Documentos invlidos no siguen las reglas de sintaxis definidas por la especificacin XML. Si un desarrollador tiene reglas definidas de lo que ese documento puede contener en una DTD o Esquema, y el documento no las sigue, ese documento es invlido. (Ver Definiendo el contenido del documento en la pgina 13 para una introduccin apropiada a los DTDs y Esquemas de los documentos XML.) Documentos vlidos siguen tanto las reglas de sintaxis XML como las reglas definidas en su propio DTD o Esquema. Documento bien formado sigue las reglas de sintaxis XML, pero no tiene un Esquema o DTD.
Introduccin a XML
Pagina 7de 35
http://www.javahispano.org
<saludo> Hola Mundo! </saludo>
Es necesario un parser XML para rechazar el documento, independientemente de la informacin que pueda contener.
Si comienza un elemento <i> dentro de un elemento <b> tambin deber terminarlo dentro. Si se quiere que el texto XML aparezca en cursiva, hay que aadir un segundo elemento <i> para corregir el marcado:
<!marcado XML legal --> <p> <b>Yo <i>amo de verdad </i></b> <i>XML.</i> </p>
Un parser XML aceptar solamente este marcado; Los parser HTML de la mayora de los navegadores aceptarn ambos.
Introduccin a XML
Pagina 8de 35
http://www.ibm.com/developerWorks
<p>Yada yada yada... <p>...
Si un elemento carece de contenido se le llama elemento vaco; los elementos HTML para ruptura (<br>) e imagen (<img>) son dos ejemplos. En los elementos vacos en XML pueden ponerse lo barra de cierre en la etiqueta de inicio. Los dos elementos de ruptura y los dos elementos de imagen a continuacin significan la misma cosa para un parser XML:
<! Dos rupturas equivalentes --> <br></br> <br/> <! Dos elementos de imagen equivalentes --> <img src="../img/c.gif"></img> <img src="../img/c.gif" />
Compare los dos ejemplos que vienen a continuacin. El marcado del primero es legal en HTML, pero no en XML. Para obtener el equivalente en XML, se le debe dar un valor al atributo y debe entrecomillarse.
<!-- marcado XML ILEGAL --> <ol compact> <!-- marcado XML LEGAL --> <ol compact="yes">
Puede usar comillas simples o dobles siempre y cuando sea consecuente. Si el valor del atributo contiene un single o un double puede usarse el otro tipo de comillas para rodear el valor ( como en nombre=Dougs car), o usar las entidades " para comillas
Introduccin a XML
Pagina 9de 35
http://www.javahispano.org dobles y ' para comillas simples. Una entidad es un smbolo, como ", que el parser XML reemplazar con otro texto como .
Declaraciones XML
Muchos documentos XML comienzan con una declaracin XML que proporciona al parser informacin bsica sobre el documento. Una declaracin XML est recomendada, pero no es obligatoria. Si existe una, debe ser lo primero que aparezca en el documento. La declaracin puede contener hasta tres pares nombre-valor (mucha gente les llama atributos, aunque tcnicamente no lo son). version es la versin de XML usada; actualmente este valor debe ser 1.0. encoding es el conjunto de caracteres usado en el documento. El conjunto de caracteres ISO-8859-1 referenciado en esta declaracin incluye todos los caracteres usados en la mayora de los lenguajes de Europa Occidental. Si no se especifica encoding el parser XML asume que los caracteres pertenecen al conjunto UTF-8, un estndar Unicode que soporta virtualmente cada carcter e ideograma de cualquier lenguaje del mundo.
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
Finalmente, standalone, que solo puede ser yes o no, define si este documento puede ser procesado sin leer otros ficheros. Por ejemplo, si el documento XML no referencia ningn otro fichero, puede especificarse standalone="yes". Si el documento XML referencia otros ficheros que describen lo que el documento puede contener (veremos ms acerca de estos ficheros en un momento), se debe especificar standalone="no". Debido a que standalone="no" es la opcin por defecto, raramente veremos standalone en las declaraciones XML.
Comentarios: los comentarios pueden aparecer en cualquier lugar en el documento; incluso antes o despus del elemento raz. Un comentario comienza con <!y termina con -->. Un comentario no puede contener un guin doble (--), excepto al final; con esta excepcin, un comentario puede contener cualquier cosa. An ms importante, cualquier marca dentro de un comentario ser ignorada; si quiere eliminar una gran seccin de un documento XML simplemente introdzcala en un comentario. (Para restaurar la seccin 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 instruccin de procesamiento es una marca que se interpretar como un segmento de cdigo. En el ejemplo previo hay una instruccin de
Introduccin a XML
Pagina 10de 35
http://www.ibm.com/developerWorks
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 especificacin XML tambin define cinco entidades que pueden usarse en lugar de varios caracteres especiales. Las entidades son: < para el smbolo menor que (<) > para el smbolo 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 direccin de una persona? Ese documento inclua el elemento <titulo> para el ttulo o tratamiento de cortesa, una eleccin perfectamente razonable como nombre de un elemento. Si usted crea una librera online, podra elegir el crear un elemento <titulo> para almacenar el ttulo de un libro. Si crea una compaa hipotecaria online, podra elegir crear un elemento <titulo> Para el ttulo de una propiedad. Todas son elecciones razonables, pero todas ellas crean elementos con el mismo nombre. Cmo 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 cmo se deberan 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 Seor 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.
Introduccin a XML
Pagina 11de 35
http://www.javahispano.org
Dese cuenta que la definicin 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 perteneca a ese namespace. El punto final: La cadena de una definicin de namespace es solo una cadena. Si, esa cadena parece una URL, pero no lo es. Podra definir xmlns:direccion="mike" y funcionara 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 direccin 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.
Introduccin a XML
Pagina 12de 35
http://www.ibm.com/developerWorks
Un mtodo es usar un Document Type Definition o DTD. Un DTD define los elementos que pueden aparecer en un documento XML, el orden en el cual pueden aparecer, cmo pueden estar anidados y otros detalles bsicos de la estructura del documento XML. Los DTD son parte de la especificacin original de XML y son muy similares a los DTDs de SGML. El otro mtodo es usar un Esquema XML (XML Schema). Un esquema puede definir todas las estructuras de documento que pudieran definirse con DTD y adems, puede definir tipos de datos y reglas mucho ms complicadas de las que pueden hacerse con DTD. El W3C desarrollo la especificacin de Esquemas XML un par de aos despus que la especificacin original XML.
Este DTD define todos los elementos usados en el documento de ejemplo. Define tres cosas bsicas:
Un elemento <direccion> que contiene un <nombre>, un <calle>, un <ciudad>, un <estado>, y un <codigo-postal>. Todos estos elementos deben aparecer y deben hacerlo en ese mismo orden.
Introduccin a XML
Pagina 13de 35
http://www.javahispano.org
Un elemento <nombre> contiene un elemento <titulo> opcional (la marca de pregunta indica que titulo es opcional), seguido de un elemento <nombre> y de un elemento <apellidos>.
Todos los dems elementos contienen texto. (#PCDATA indica datos de carcter; no pueden incluirse otros elementos dentro de estos.) Aunque son muy simples, las DTD aclaran que combinaciones de elementos son legales. Una documento de direccin postal que presente un elemento <codigo-postal> antes de un elemento <estado> no es legal, y ningn documento que no presente el elemento <apellidos> lo ser. Adems, hay que darse cuenta de que la sintaxis DTD es diferente de la sintaxis XML ordinaria. (Los documentos de Esquema XML, por el contrario, son XML ellos mismos, lo cual tiene algunas consecuencias interesantes.) A pesar de la sintaxis diferente de los DTDs se pueden seguir insertando comentarios ordinarios dentro de ellas.
El elemento <direccion> debe contener un elemento <nombre>, un <ciudad>, y un <estado> en ese orden. Todos los elementos son obligatorios. La coma indica una lista de items.
Esto significa que el elemento <nombre> contiene un elemento <titulo> opcional, seguido obligatoriamente de un elemento <nombre> y de otro <apellidos>. La marca interrogacin, indica que un item es opcional; Puede o no aparecer.
Un elemento <agenda> contiene uno o ms elementos <direccion>. Se pueden tener tantos elementos <direccion> como se necesiten, pero, al menos, debe existir uno. El signo mas (+) indica que un item debe aparecer al menos una vez, pero puede aparecer cualquier nmero de veces.
Introduccin a XML
Pagina 14de 35
http://www.ibm.com/developerWorks
El asterisco indica que un item puede aparecer cualquier nmero de veces, incluyendo cero.
Definicin de atributos
Este tutorial introductorio no puede profundizar demasiado en cmo trabajan los DTDS, pero hay un tpico bsico que s cubriremos aqu: la definicin de atributos. Se pueden definir atributos para los elementos que aparecen en su documento XML. Usando una DTD tambin se puede:
Introduccin a XML
Pagina 15de 35
http://www.javahispano.org
Definir qu atributos son obligatorios. Definir valores por defecto para los atributos Proporcionar una lista con los valores vlidos para un atributo.
Supongamos que se quiere cambiar la DTD para hacer que estado sea un atributo del elemento <ciudad>. Se hara as:
<!ELEMENT ciudad (#PCDATA)> <!ATTLIST ciudad estado CDATA #REQUIRED>
Esto define el elemento <ciudad> como antes, pero el ejemplo revisado tambin usa una declaracin ATTLIST para enumerar los atributos del elemento. El nombre ciudad dentro de la enumeracin de atributos le dice al parser que esos atributos estn definidos para el elemento <ciudad>. El nombre estado es el nombre del atributo y las palabras reservadas CDATA y #REQUIRED le dicen al parser que el atributo estado contiene texto y es obligatorio ( si fuese opcional, se indicara con CDATA #IMPLIED). Para definir mltiples atributos para un elemento, se escribe un ATTLIST como este:
<!ELEMENT ciudad (#PCDATA)> <!ATTLIST ciudad estado CDATA #REQUIRED codigo-postal CDATA #REQUIRED>
Este ejemplo define estado y codigo-postal como atributos del elemento <ciudad>. Finalmente, las DTDS permiten definir valores por defecto para los atributos y enumerar los valores vlidos para un atributo:
<!ELEMENT ciudad (#PCDATA)> <!ATTLIST ciudad estado CDATA (AZ|CA|NV|OR|UT|WA) "CA">
Este ejemplo indica que solo se soportan direcciones de los estados de Arizona (AZ), California (CA), Nevada (NV), Oregon (OR), Utah (UT), y Washington (WA), y que el valor por defecto es California. De esta manera se puede realizar una muy limitada forma de validacin de los datos. Aunque es una funcin til, es solo una pequea parte de lo que se puede hacer con los esquemas XML (ver Esquemas XML en la pgina 16).
Esquemas XML
Con los esquemas XML se tiene un mayor poder para definir lo que parece un documento XML vlido. Presentan varias ventajas sobre los DTDs:
Los esquemas usan sintaxis XML. En otras palabras, un esquema XML es un documento XML. Esto significa que se puede procesar un esquema igual que cualquier otro documento. Por ejemplo, se puede escribir una hoja de estilo XSLT que convierta un esquema XML en un formulario Web completo con cdigo JavaScript generado automticamente que valide los datos conforme se vayan introduciendo.
Introduccin a XML
Pagina 16de 35
http://www.ibm.com/developerWorks
Los esquemas XML soportan tipos de datos. Mientras que los DTDs no soportan tipos de datos, esta claro que esos tipos de datos fueron desarrollados con una perspectiva de publicacin. Los esquemas XML soportan todos los tipos originales de los DTDs (cosas como Ids y referencias ID). Tambin soportan enteros, nmeros en punto flotante, fechas, horas, cadenas de texto, URLs y otros tipos de datos tiles para el procesado y validacin de datos. Los esquemas XML son extensibles. Adems de los tipos de datos definidos en la especificacin de esquemas XML, se pueden crear tipos de datos propios y se pueden derivar nuevos tipos de datos a partir de otros. Los esquemas XML tienen mayor poder de expresin. Por ejemplo, con esquemas XML se puede definir que el valor del un atributo <estado> no puede tener una longitud mayor de 2 caracteres, o que el valor de un elemento <codigo-postal> debe cumplir la expresin regular [0-9]{5}(-[0-9]{4})?. No se puede hacer ninguna de estas cosas con los DTDs.
Introduccin a XML
Pagina 17de 35
http://www.javahispano.org
<xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:length value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name ="codigo-postal"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:schema>
Como en la versin DTD, el esquema XML de ejemplo define que <direccion> contiene un elemento <nombre>, un <calle>, un <ciudad>, un <estado>, y un <codigo-postal>, en ese orden. Se debe notar que el esquema define un nuevo tipo de datos con el elemento <xsd:complexType>. Definir la mayor parte de los elementos que contienen texto es sencillo. Unicamente se declara el nuevo elemento y se le da un tipo de datos xsd:string:
<xsd:element <xsd:element <xsd:element <xsd:element <xsd:element name="titulo" type="xsd:string"/> name="nombre" type="xsd:string"/> name="apellidos" type="xsd:string"/> name="calle" type="xsd:string"/> name="ciudad" type="xsd:string"/>
http://www.ibm.com/developerWorks
El esquema de ejemplo define restricciones para el contenido de dos elementos: el contenido del elemento <estado> debe tener una longitud de dos caracteres, y el contenido de un elemento <codigo-postal> debe cumplir la expresin regular [0-9]{5}(-[0-9]{4})?. As es como se hace:
<xsd:element name="estado"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:length value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="codigo-postal"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/> </xsd:restriction> </xsd:simpleType> </xsd:element>
Para los elementos <estado> y <codigo-postal>, el esquema define nuevos tipos de datos con restricciones. En el primer caso usa el elemento <xsd:length> y en el segundo usa <xsd:pattern> para definir una expresin regular que ese elemento debe cumplir. Este resumen solo araa la superficie de lo que los esquemas XML pueden hacer; hay libros enteros dedicados a este asunto. Para el propsito de esta introduccin basta con decir que los esquemas XML son una manera muy potente y flexible de describir lo que un documento XML debe parecer.
Introduccin a XML
Pagina 19de 35
http://www.javahispano.org
Visin General
Esta seccin echa un vistazo a la gran variedad de interfaces de programacin para XML. Estas interfaces proporcionan a los desarrolladores una forma consistente de trabajar con los documentos XML. Hay muchos APIs disponibles; Esta seccin se centra en cuatro de la ms populares y tiles: el Document Object Model (DOM), el Simple API for XML (SAX), JDOM, y el Java API for XML Parsing(JAXP) . Se puede encontrar mucha ms informacin acerca de estos APIs a travs de los enlaces en Recursos en la pgina 32). ___________________________________________________________________
Limitaciones de DOM
DOM proporciona un rico conjunto de funciones que pueden usarse para interpretar y manipular un documento XML, pero esas funciones tienen un precio. Tan pronto como el DOM para XML original empez a desarrollarse, mucha gente en la lista de correos de XML-DEV empez a preocuparse acerca de lo siguiente: DOM construye un rbol en la memoria con el documento entero. Si el documento es muy grande ser requiere una cantidad significativa de memoria. DOM crea objetos que los representan todo en el documento original, incluyendo elementos, texto, atributos y espacios en blanco. Si solo se tiene inters en una pequea parte del documento original, es extremadamente costoso crear todos esos objetos que nunca se usarn. Un parser DOM tiene que leer el documento entero antes de que el cdigo pueda tomar el control. Para documentos muy grandes esto puede causar un retraso significativo.
Estas son algunas de las debilidades derivadas del diseo del Document Object Model; independientemente de estas, el API DOM es una forma muy til de parsear documentos XML.
Introduccin a XML
Pagina 20de 35
http://www.ibm.com/developerWorks
Dicho esto, tanto SAX como DOM tienen su lugar respectivo. El resto de esta seccin discute el porqu usted querra usar una u otra interfaz.
Limitaciones de SAX
Para ser sinceros, los parsers SAX tienen limitaciones que pueden causar preocupacin: Los eventos SAX no tienen estado. Cuando un parser SAX encuentra texto en un documento XML, enva un evento a su cdigo. Este evento solo le indica el texto encontrado; no le dice que elemento contena ese texto. Si quiere saberlo, tiene que escribir el cdigo para la gestin de estado usted mismo. Los eventos SAX no son permanentes. Si su aplicacin necesita una estructura de datos que modele el documento XML, debe escribir ese cdigo usted mismo. Si necesita acceder a los datos de un evento SAX y no los ha almacenado en su cdigo, tiene que parsear el documento de nuevo. SAX no est controlado por una organizacin centralizada. Aunque esto no ha causado problemas hasta hoy, algunos desarrolladores se sentiran ms cmodos si SAX estuviese controlado por una organizacin como la W3C.
JDOM
Introduccin a XML Pagina 21de 35
http://www.javahispano.org
Frustrados por la dificultad en realizar ciertas tareas con los modelos DOM y SAX, Jasn Hunter y Brett McLaughlin crearon el paquete JDOM. JDOM es un proyecto open-source de tecnologa basada en Java que intenta seguir la regla 80/20: Desarrollar lo que el 80% de los usuarios necesitan con el 20% de las funciones en DOM y SAX. JDOM trabaja con parsers SAX y DOM, as que est implementado como un conjunto relativamente pequeo de clases Java. La principal ventaja de JDOM es que reduce enormemente la cantidad de cdigo que se debe escribir. Aunque este tutorial introductorio no discute tpicos sobre programacin con profundidad, el tamao de las aplicaciones JDOM es, por lo normal, una tercera parte que el de las aplicaciones DOM y aproximadamente la mitad que el de las aplicaciones SAX. (Los puristas de DOM, por supuesto, aseguran que el uso de DOM es una buena disciplina que producir beneficios a largo plazo.) JDOM no lo hace todo, pero para la mayor parte del parseo que se quiera hacer, es probablemente la eleccin correcta.
Su aplicacin estar escrita en Java? JAXP trabaja con DOM, SAX y JDOM; si esta escribiendo su cdigo en Java, debera usar JAXP para aislar su cdigo de los detalles de implementacin de los diversos parsers. Cmo ser distribuida su aplicacin? Si su aplicacin va a ser distribuida cmo un applet Java, y quiere minimizar la cantidad de cdigo descargado, tenga en mente que los parser SAX son ms pequeos que los parser DOM. Tambin debe considerar que el uso de JDOM requiere una cantidad de cdigo menor que los parser SAX o DOM. Una vez que se ha parseado el documento, necesitar acceder a esos datos varias veces? Si necesita volver sobre la versin parseada del documento XML, DOM es
Introduccin a XML
Pagina 22de 35
http://www.ibm.com/developerWorks
probablemente la eleccin correcta. Cuando un evento SAX se ha disparado es responsabilidad suya ( del desarrollador) almacenarlo si lo va a necesitar ms tarde. Si necesita acceder a un evento que no salvo, debe parsear el fichero de nuevo. DOM almacena todos los datos automticamente. Necesita solo unas pocas cosas del documento XML? Si solo va a necesitar unas pocas cosas del documento XML, SAX es probablemente la eleccin correcta. SAX no crea objetos para todo lo que contiene el documento fuente; se puede decidir que es lo importante. Con SAX puede comprobar cada evento par determinar si es relevante para sus necesidades y procesarlo entonces adecuadamente. An mejor, una vez que ha encontrado lo que andaba buscando, su cdigo puede elevar una excepcin para parar definitivamente el parser SAX. Est trabajando en una mquina con muy poca memoria? Si es as, SAX es la mejor eleccin, independientemente de todos los otros factores que pueda considerar.
Recuerde que existen APIs XML para otros lenguajes; Las comunidades Perl y Phyton en particular tienen muy buenas herramientas XML.
Introduccin a XML
Pagina 23de 35
http://www.javahispano.org
Visin General
Existe una gran variedad de estndares en el universo XML. Adems del estndar base XML, otros estndares definen esquemas, hojas de estilo, enlaces, servicios Web, seguridad y otros importantes items. Esta seccin cubre los estndares ms populares, y le indica referencias para encontrar otros estndares.
La especificacin XML
Esta especificacin, localizada en w3.org/tr/rec-xml, define las reglas bsicas para los documentos XML. Todas las reglas para documentos XML definidas anteriormente en este tutorial estn definidas aqu. Adems del estndar bsico XML, la especificacin de Namespaces es otra parte importante de XML. Puede encontrar el estndar para los namespaces en: w3.org/TR/REC-xml-nombres/.
Esquema XML
El lenguaje de Esquemas XML est definido en tres partes:
Un primario, localizado en w3.org/TR/xmlschema-0, que proporciona una introduccin a los documentos de esquema XML y al para qu estn diseados. Un estndar para los documentos de estructura, localizados en w3.org/TR/xmlschema1, que ilustra cmo se define la estructura de los documentos XML. Un estndar para los tipos de datos, localizada en w3.org/TR/xmlschema-2, que define algunos tipos de datos comunes y las reglas para crear otros nuevos.
Este tutorial discute brevemente sobre los esquemas en Definicin del contenido de un documento en la pgina 13; si desea completar detalles sobre todas las cosas que puede hacer con los esquemas XML, el primario es el mejor lugar para empezar.
Introduccin a XML
Pagina 24de 35
http://www.ibm.com/developerWorks
El Lenguaje Extensible de Hojas de Estilo, XSL (Extensible Stylesheet Language), define un conjunto de elementos (llamados elementos de formato) que describen como los datos deben ser formateados. Por claridad, este estndar an se designa como XSL-FO para distinguirlo de XSLT. Aunque inicialmente fue diseado para generar documentos para impresin de gran calidad, tambin se pueden usar los objetos de formato para generar ficheros de audio desde XML. El estndar XSL-FO se encuentra en w3.org/TR/xsl/. El Lenguaje Extensible de Hojas de Estilo para Transformaciones, XSLT ( eXtensible Stylesheet Language for Transformations), es un vocabulario XML que describe cmo convertir un documento XML en algo ms. El estndar esta en w3.org/TR/xslt XPath, el lenguaje de rutas XML es una sintaxis que describe localizaciones en los documentos XML. XPath se usa en las hojas de estilo XSLT para describir qu partes de un documento XML se quiere transformar. XPath tambin es usado in otros estndares XML, siendo este el porqu es un estndar separado de XSLT. XPath est definido en w3.org/TR/xpath.
DOM
El Document Object Model define cmo se convierte un documento XML en una estructura de rbol en memoria. DOM est definido en un varias especificaciones en la W3C:
El nucleo ( core) DOM define el DOM mismo, la estructura de rbol y los tipos de nodos y excepciones que su cdigo puede encontrar cuando se mueve a travs del rbol. La especificacin completa se encuentra en w3.org/TR/DOM-Level-2-Core/. Eventos, define los eventos que pueden sucederle al rbol como esos eventos son procesados. Esta especificacin es un intento de reconciliar las diferencias en los modelos de objetos soportados por Netscape e Internet Explorer desde la versin 4 de estos navegadores. Esta especificacin esta en w3.org/TR/DOM-Level-2-Events/. Estilo define cmo las hojas de estilo XSLT y las hojas de estilo CSS pueden ser accedidas por un programa. Esta especificacin esta en w3.org/TR/DOM-Level-2-Style/. Traversaciones y Rangos, define interfaces que permiten a los programas traversar el rbol o definir un rango de nodos en el rbol. Puede encontrar la especificacin completa en w3.org/TR/DOM-Level-2-Traversal-Range/ . Vistas, define una interfaz AbstractView para el documento mismo. Puede encontrar ms informacin en w3.org/TR/DOM-Level-2-Views/.
Introduccin a XML
Pagina 25de 35
http://www.javahispano.org
ayudarle a empezar (Para encontrar artculos sobre JDOM en developerWorks, mire en Recursos en la pgina 32.)
Un punto significativo acerca de SAX y JDOM es que ambos han salido de la comunidad de desarrolladores de XML, no de un cuerpo de estndares. Su amplia aceptacin es un tributo a la participacin de los desarrolladores XML en el mundo entero. Puede encontrar todo lo que hay que saber acerca de JAX en java.sun.com/xml/jaxp/.
Enlazado y referencia
Hay dos estndares para el enlazado y referencia en el mundo XML: XLink y XPointer:
XLink, el lenguaje XML de enlazado, define muchas maneras de enlazar diferentes recursos juntos. Puede hacer enlaces normales punto-a-punto ( como con el elemento XML <a>) o enlaces extendidos, que pueden incluir enlaces multipunto, enlaces a travs de terceros y reglas que definen lo que significa seguir un enlace determinado. El estndar XLink se encuentra en w3.org/TR/XLink/. XPointer el lenguaje de apuntadores XML, usa XPath como una manera de referenciar otros recursos. Tambin incluye algunas extensiones a XPath. Puede encontrar su especificacin en www.w3.org/TR/xptr/.
_____________________________________________________________________________
Seguridad
Hay dos estndares significativos que determinan la seguridad de los documentos XML. Uno es el estndar XML Digital Signature o Firma Digital XML (w3.org/TR/xmldsig-core/ ), que define una estructura de documento XML para las firmas digitales. Puede crear una firma digital XML para cada tipo de datos, tanto si es un documento XML, un fichero HTML, texto plano, datos binarios, etc. Puede usar la firma digital para verificar que un fichero concreto no ha sido modificado despus de que fuese firmado. Si el dato que ha firmado es un documento XML, puede incrustar el documento XML en el fichero de firma, lo que hace que el procesado de los datos y de la firma sea muy simple. Los otros estndares determinan el encriptado de documentos XML. Aunque es bueno que los documentos XML sean escritos de tal manera que un humano pueda leerlos y entenderlos, esto puede significar un problema si el documento cae en las manos equivocadas. El estndar XML Encryption o Encriptacin XML (w3.org/TR/xmlenc-core/ ) define como partes de un documento XML pueden ser encriptadas. Usando estos estndares juntos, puede usar documentos XML con confianza. Yo puedo firmar digitalmente un importante documento XML, generando una firma que incluya el mismo documento. Puedo entonces encriptar el documento ( usando mi clave privada y su clave pblica) y envirselo a usted. Cuando lo reciba, puede desencriptarlo con su clave privada y m clave pblica, lo que le permitir saber que he sido yo el nico que le ha enviado el documento ( en
Introduccin a XML
Pagina 26de 35
http://www.ibm.com/developerWorks
caso necesario, tambin puede probar que fui yo quin se lo envi). Una vez desencriptado el documento, puede usar la firma digital para asegurarse de que no ha sido modificado en ninguna forma.
Servicios Web
Los Servicios Web es un importante nuevo tipo de aplicacin. Un servicio Web es un fragmento de cdigo que puede ser encontrado, descrito y accedido usando XML. Hay una gran actividad en este espacio, pero los tres principales estndares XML para los servicios Web son:
SOAP: originalmente, el Simple Object Access Protocol (Protocolo para Acceso Sencillo a Objetos), SOAP define un formato de documento XML que describe como invocar un fragmento de cdigo remoto. Mi aplicacin crea un documento XML que describe el mtodo que quiero invocar, pasndole cualquier parmetro necesario, y entonces enva ese documento a travs de la red hacia el fragmento de cdigo. El cdigo recibe el documento XML, lo interpreta, invoca el mtodo que solicit y entonces retorna un documento XML que describe los resultados. La especificacin de las versin 1.1 de SOAP se encuentra en w3.org/TR/SOAP/. Visite w3.org/TR/ para ver todas las actividades de W3C relativas a SOAP. WSDL: El Web Services Description Language (Lenguaje para la Descripcin de Servicios Web) es un vocabulario XML que describe un servicio Web. Es posible escribir un fragmento de cdigo que tome un documento WSDL e invoque un servicio Web que nunca ha visto antes. La informacin del fichero WSDL define el nombre del servicio Web, los nombres de los mtodos, los argumentos de esos mtodos y otros detalles. Puede encontrar la ltima especificacin de WSDL en w3.org/TR/wsdl . UDDI: La Universal Description, Discovery and Integration protocol ( protocolo de Descripcin Universal, Exploracin e Integracin) define una interfaz SOAP con un registro de servicios Web. La especificacin UDDI define cmo aadir la descripcin de un servicio al registro. Si est buscando un fragmento de cdigo que proporciona una determinada funcin, la especificacin UDDI define cmo consultar el registro para encontrar lo que busca. La fuente de todas las cosas acerca de UDDI es uddi.org.
_____________________________________________________________________
Otros estndares
Existe un gran nmero de otros estndares XML que no veremos aqu. Adems de los estndares de aplicacin general como Scalable Vector Graphics (www.w3.org/TR/SVG/) Vector Graphics y SMIL, el Syncronized Multimedia Integration Language (www.w3.org/TR/smil20/), hay muchos estndares especficos en la industria. Por ejemplo, el Consorcio HR-XML ha definido una gran cantidad de estndares XML para Recursos Humanos; puede encontrarlos en hrxml.org .
Introduccin a XML
Pagina 27de 35
http://www.javahispano.org
Finalmente, para una buena fuente de estndares XML visite el Repositorio XML en xml.org/xml/registry.jsp. Este sitio proporciona cientos de estndares para una gran variedad de industrias.
Introduccin a XML
Pagina 28de 35
http://www.ibm.com/developerWorks
Provincia de Manitoba
El gobierno de la Provincia de Manitoba cre el Registro de la Propiedad Personal para proporcionar a los propietarios servicios internet sobre el estado-del-arte durante las 24 horas. Los principales beneficios de la aplicacin fueron un acceso ms rpido y conveniente a los datos de las propiedades, menos pasos manuales en el proceso de administracin de las propiedades y menos llamadas a la central de llamadas del gobierno. En otras palabras darle a los usuarios un mejor servicio, reduciendo el gasto y la carga de trabajo del gobierno. _____________________________________________________________________
Diseo de la aplicacin
La aplicacin fue diseada como una aplicacin multi-capas, con la interfaz separada de la lgica de negocio. Los datos para cada transaccin necesitaron ser transformado en varias formas diferentes, dependiendo de si deban ser formateados en un dispositivo, presentados en una aplicacin o formateados por el sistema de procesado back-end. En otras palabras esta aplicacin era una oportunidad perfecta para usar XML.
Introduccin a XML
Pagina 29de 35
http://www.javahispano.org
Como con cualquier aplicacin, la interfaz de usuario era extremadamente importante. Para simplificar la primera implementacin, los datos XML necesarios fueron transformado en HTML. Esto proporciono a los usuarios una interfaz de navegador para la aplicacin. El registro fue construido con VisualAge for Java, especficamente el componente Visual Servlet Builder. Tambin se uso Enterprise Java Beans (EJBs), incluyendo beans de Sesin y de Entidad.
SvOutPlaceObject
Introduccin a XML
Pagina 30de 35
http://www.ibm.com/developerWorks
SvOutPlaceObject
Introduccin a XML
Pagina 31de 35
http://www.javahispano.org
En segundo lugar, los interfaces proporcionados por un servicio Web (nombres de mtodos, parmetros, tipos de datos, etc..) estn descritos con XML. Lo siguiente es que la descripcin de un servicio Web puede estar almacenada o ser devuelta por un registro UDDI y toda la informacin que entra o sale del registro est en formato XML. Finalmente, los datos proporcionados por el servicio Web son ellos mismos XML.
Hewitt ha desarrollado dos aplicaciones que ilustran su habilidad para distribuir datos de muchas y flexibles maneras: Con Secure Participant Mailbox, los usuarios autorizados pueden solicitar informes conteniendo informacin personalizada sobre jubilaciones y otros beneficios de los empleados. Con Retirement Access B2B Connection, los usuarios autorizados pueden obtener detalles sobre la informacin financiera de un cliente.(401k)
Ambas aplicaciones devuelven datos desde sistemas ya existentes, usando XML para formatear los datos y distribuyendo la informacin ya formateada a travs de la Web. Debido a que estas aplicaciones estn construidas sobre estndares abiertos, Hewitt puede distribuirlas rpidamente. Lo mejor de todo, la flexibilidad de estas aplicaciones ayuda a Hewitt a distinguirse de sus competidores. Nosotros vemos los servicios Web como un vehculo para proporcionar acceso abierto y no propietario a los participantes a nuestros servicios de negocio y datos a travs de una red de datos ubicua, dijo Tim Hilgenberg, Jefe de Tecnologa Estratgica en Hewitt. El resultado final: Hewitt desarrolla aplicaciones ms flexibles, de un modo ms rpido y barato, los clientes tienen mejores acceso a sus datos y las aplicaciones existentes en Hewitt no han tenido que cambiar.
Introduccin a XML
Pagina 32de 35
http://www.ibm.com/developerWorks
Decida que datos quiere convertir en XML. Tipicamente estos son los datos que necesita mover entre sistemas o que deben ser transformados en varios formatos. Compruebe si ya existe algn estndar XML. Si esta usando datos muy comunes cmo ordenes de compra, registros mdicos, o reservas en almacn, tiene muchas posibilidades de que alguien ya haya definido un estndar XML para esos datos. Compruebe si sus herramientas actuales soportan XML. Si est usando una versin reciente de un paquete de base de datos, hoja de clculo o algn otro tipo de herramienta para la administracin o manejo de datos, es probable que sus herramienta ( o alguna actualizacin) pueden usar XML como formato para la entrada o salida de datos. Aprenda cmo construir aplicaciones basadas en XML. Necesita comprender como sus datos estn almacenados actualmente, como necesitan ser transformados y cmo integrar sus esfuerzos de desarrollo XML con la aplicaciones existentes. La columna de Benot Marchalls Working XML es un estupendo lugar donde empezar; puede encontrar un listado actualizado de todas sus columnas en http://www106.ibm.com/developerworks/xml/library/x-wxxmcol/ . Unase al grupo de estndares apropiado. Considere unirse a grupos como el WorldWide Web Consortium (W3C) , as como a grupos de industrias especficas cmo HRXML.org. Ser un miembro de esos grupos le ayudar a estar informado sobre lo que ocurren en la industria, y le da la oportunidad de modelar el futuro de los estndares XML. Evite soluciones propietarias. Es importante que use slo tecnologa basada en estndares en sus esfuerzos de desarrollo; resista los seuelos de los vendedores que le ofrecen mejoras. Una de las ventajas de XML es que puede tener control completo sobre sus datos. Una vez que ha sido tomados como rehenes por un formato de datos propietario, se padece una tremenda perdida del control. Contacte con el equipo jStart. Si piensa que su empresa podra trabajar con el modelo de contrato de jStart, contacte con el equipo y compruebe cuales son sus posibilidades. Permanezca atento a developerWorks. Nuestra zona XML tiene miles de paginas cuyo contenido abarca varios tpicos XML, incluyendo desarrollo de DTDs y de esquemas, programacin XML y creacin de hojas de estilo XSLT.
_____________________________________________________________________
Recursos
Aqu presentamos algunos recursos para ayudarle a empezar:
Introduccin a XML
Pagina 33de 35
http://www.javahispano.org
The dW XML zone Uno de nuestro lugares favoritos para ver recursos XML. Ver www106.ibm.com/developerworks/xml para todo lo que siempre quiso saber sobre XML. XML tools: developerWorks tiene "Fill your XML toolbox" con artculos que describen herramientas de programacin XML para varios lenguajes:
C/C++: Ver el artculo de Rick Parrish en www-106.ibm.com/developerworks/library/xctlbx.html (developerWorks, Septiembre 2001). Java: Ver el artculo de Doug Tidwell en www106.ibm.com/developerworks/library/java-xml-toolkit/index.html (developerWorks, Mayo 2000). Perl: Ver el artculo de Tony Darugar en www106.ibm.com/developerworks/library/perl-xml-toolkit/index.html (developerWorks, Junio 2001). PHP: Ver el artculo de Craig Knudsen en www106.ibm.com/developerworks/library/php-xml-toolkit.html (developerWorks, Junio 2000).
Adems de estos artculos puede ver el examen que David Mertz hace a las herramientas XML para Phyton en su artculo "Charming Python: Revisiting XML tools for Python" enwww106.ibm.com/developerworks/library/l-pxml.html . Tutoriales XML: Docenas de tutoriales sobre XML estn disponibles en developerWorks; puede ver http://www-105.ibm.com/developerworks/education.nsf/dw/xml-onlinecourse-bytitle para la lista ms actualizada. IBM's jStart team: El equipo de jStart trabaja a muy bajo precio para ayudar a los clientes a construir soluciones usando las nuevas tecnologas (Servicios Web XML, por ejemplo). A cambio, esos clientes le permiten a IBM publicar sus proyectos cmo casos de estudio. Para mas informacin, ver ibm.com/software/jstart. Estndares XML: Presentamos una lista por orden alfabtico de los estndares mencionados en este tutorial. DOM, el Document Object Model: Core Specification: w3.org/TR/DOM-Level-2-Core/ Events Specification: w3.org/TR/DOM-Level-2-Events/ Style Specification: w3.org/TR/DOM-Level-2-Style/ Traversal and Range Specification:w3.org/TR/DOM-Level-2-Traversal-Range/. Views Specification: w3.org/TR/DOM-Level-2-Views/ HR-XML.org, El Human Resources XML Consortium: hr-xml.org JAXP, el Java API for XML: java.sun.com/xml/jaxp/ JDOM, que actualmente no est recibiendo soporte jdom.org/ SAX, el Simple API for XML: saxproject.org/ SMIL, el Synchronized Multimedia Integration Language: www.w3.org/TR/smil20/ SOAP, que estaba soportado por Simple Object Access Protocol, pero que ahora, oficialmente no esta soportado por nadie: w3.org/TR/SOAP/ SVG, Scalable Vector Graphics: www.w3.org/TR/SVG/ UDDI, Universal Description, Discovery, and Integration Protocol: uddi.org
Introduccin a XML
Pagina 34de 35
http://www.ibm.com/developerWorks
WSDL, Web Services Description Language: w3.org/TR/wsdl (no closing slash) XLink, XML Linking Language: w3.org/TR/XLink/ XML, el estndar que lo comenz todo: w3.org/TR/REC-xml XML Digital Signatures: w3.org/TR/xmldsig-core/ XML Encryption: w3.org/TR/xmlenc-core/ XML Namespaces: w3.org/TR/REC-xml-nombres/ XML Repository de DTDs y esquemas: xml.org/xml/registry.jsp XML Schema: Part 0 - Primer: w3.org/TR/xmlschema-0 Part 1 - Document structures: w3.org/TR/xmlschema-1 Part 2 - Datatypes: w3.org/TR/xmlschema-2 XPath, el lenguaje XML Path: w3.org/TR/xpath (sin barra de cierre) XPointer, el lenguaje de punteros para XML: www.w3.org/TR/xptr/ XSL-FO, Extensible Stylesheet Language for Formatting Objects: w3.org/TR/xsl/ XSLT, Extensible Stylesheet Language: w3.org/TR/xslt (sin barra de cierre) Para saber ms sobre JDOM, puede leer los siguientes artculos de developerWorks: Simplify XML programming with JDOM at www-106.ibm.com/developerworks/java/library/j-jdom/ (developerWorks, Mayo 2001) Converting from DOM en www-106.ibm.com/developerworks/java/library/x-tipcdm.html (developerWorks, Abril 2001) Converting from SAX en www-106.ibm.com/developerworks/java/library/x-tipcsx.html (developerWorks, Abril 2001) Using JDOM and XSLT en www-106.ibm.com/developerworks/java/library/x-tipjdom.html (developerWorks, Marzo 2001)
Opiniones
Por favor, envie sus opiniones sobre este tutorial. Lo hemos revisado extensivamente (Agosto 2002) basandonos en sus opiniones y en los nuevos desarrollos en el mundo XML. Siempre estamos dispuestos a escucharle.
Introduccin a XML
Pagina 35de 35