Tutorial de XML

download Tutorial de XML

of 7

Transcript of Tutorial de XML

  • 7/24/2019 Tutorial de XML

    1/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 1/7

    Curso de Microsoft .NETServicios Web y .NetXSLT, hojas de estiloPgina principal del grupo GeNeura

    Contenidode estaseccin

    CmoeditarXMLQu

    hacercon elXMLeditado

    Introduccin al lenguaje XML

    1 Qu es eso del XML?

    XML significa eXtensible markup language, o lenguaje de anotacin extensible. Ya conocemos el lenguaje HTML(hypertext markup language), lenguaje de anotacin para pgina webs que permite navegacin tipo hipertexto sinembargo, XML no es slo un lenguaje, es una forma de especificar lenguajes, de ah lo de extensible. Todo lenguajeque se exprese de una forma determinada puede ser XML. Por lo tanto, XML no es un lenguaje para hacer mejores

    pginas web, sino un lenguaje para informacin auto-descrita, o al menos, auto-descrita si las etiquetas estn bienpuestas.

    XML se inici como un subconjunto de SGML (structured generalized markup language), un standard ISO paradocumentos estructurados que es sumamente complejo para poder servir documentos en la web. XML es algo ascomo SGML simplificado, de forma que una aplicacin no necesita comprender SGML completo para interpretar undocumento, sino slo el subconjunto que se defina. Los editores SGML, sin embargo, pueden comprender XML.

    Por tanto, no debe uno pensarse que XML es para crear pginas web, o algo parecido a las pgina web. XML esun lenguaje que cambia el paradigma de programacin: de basada en el funciones u objetos a laprogramacinbasada en el documento. XML se puede usar para cambiar totalmente el paradigma de publicacin de un programaque recibe unas entradas y produce unas salidas, se pasa a un documento que genera otro documento, o bien

    programas que toman documentos y producen otros documentos. Por eso, tambin, y, en general, salvo en entornosde servicios web, lo normal es que el XML se use en el servidor, y se sirva otro tipo de documentos, HTML, porejemplo, que se obtienen a base de una serie de transformaciones. Precisamente, esto hace que los documentos XMLse usen dentro de entornos de aplicaciones. Este entorno de aplicaciones permite publicar documentos XML, que,antes de ser enviados al cliente, sufrirn una serie de transformaciones para adaptarlo a los requisitos del mismo.Algunos ejemplos de entorno de aplicaciones son el Cocoon, un entorno basado en Java, libre, que permite no slopublicar pginas XML, sino tambin incluir programas dentro de las pginas (XSP). No se caracteriza por su velocidadni amigabilidad, pero es excelente como entorno de desarrollo (y el precio es inmejorable). Otra alternativa gratuitaes el AxKit, escrito en Perl. Como alternativas de pago (y bien pagadas) estn el Bea Weblogic(del que puedes leeruna introduccin en programacion.com, y el IBM WebSphere Transcoding Publisher. Sobre todos estos y muchos msse trata en esta discusin en barrapunto, en la cual se menciona, por ejemplo Krysalis, un entorno de publicacinbasado en PHP, que incluye facilidades paraser usado a travs del protocolo SOAP, un protocolo de acceso remoto adocumentos basado en XML.

    Dentro de estos entornos de desarrollo y/o publicacin, o usndolo de cualquier otra forma, XML tiene grannmero de aplicaciones. La mayor parte de los portales y sitios de noticias ya estn basados en XML, porque permite

    estructurar la informacin y luego aplicarle fcilmente transformaciones para su presentacin. Lo ms normal es quela informacin est almacenada en una base de datos, se convierta a XML y luego se transforme para servirlo alcliente. Otro ejemplo de aplicacin basada en XML es la base de datos discogrfica de Siniestro Totalest tambinbasada en XML, y adems el cdigo es libre. Muchos weblogs, tales como barrapuntoy Slashdot, sirven sus titularesen XML (y RDF), lo cual permite procesarlo fcilmente para, por ejemplo, incluirlos en la pgina personal de uno (verla barra de la derecha). Todos los sitios que sirven, o servan, pginas WAP tambin usan, sin otro remedio, XML.Google ofrece un interfaz de programacinpara acceder a sus servicios usando SOAP, un interfaz de acceso remotoque usa XML. Y se puede usar en cualquier aplicacin web donde haga falta programacin estructurada.

    2 Cmo se usa XML?

    Para editar documentos XML, al igual que para hacerlo con HTML, se puede hace de dos formas:editndolos como cualquier otro fichero ASCII, usando, si acaso, un editor estructurado como el XEmacs, o bienusar un editor especfico para XML, que entiende las particularidades del lenguaje, lo indenta como estmandado, y te cierra solito las etiquetas.

    Para hacer esto hay muchas opciones, tanto en Windows como en Linux, aunque la mayora son de pago.Por ejemplo, XMLSpytiene un buen entorno, funciona solo para Windows, paro es relativamente inestable (almenos las versiones probadas). eXcelon Styluspermite adems aplicar transformaciones, en un entorno de trespaneles bastante pijo. Tambin es relativamente caro. es bastante econmico para uso personal oacadmico, y tiene una versin de prueba de treinta das. Est basado en Java, y funciona tanto en Windows como enLinux. Te completa las etiquetas, y es aceptablemente rpido. Se basa tambin en bastantes herramientas libres,tales como Batik y FOP de Apache. Otra opcin, bastante simple, es XMLShell, que permite tambin hacertransformaciones XSLT simples.

    Una lista extensa, pero sin ningn tipo de comentario, est en Userland software. Tambin suele haber unabuena lista en XMLsoftware, pero en julio 2002 est caido. Habr que esperar a que vuelva. En freshmeat se listanhasta 15 herramientas, algunas de las cuales son editores.

    http://www.google.com/apis/api_faq.htmlhttp://www.siniestro.com/XEShttp://www.beasys.es/productos/weblogic_server_81.jsphttp://www.xml.com/pub/a/98/10/guide0.htmlhttp://www.xml.com/pub/a/98/10/guide0.htmlhttp://www.xml.com/pub/a/98/10/guide0.htmlhttp://www.googleadservices.com/pagead/aclk?sa=L&ai=CTdfQHrYwVuDWOpG7WIOgl8AF_sb4ngiOhOvVmwHAjbcBEAEgmYyZAmDVxdUCoAGF_pHgA8gBAqgDAcgDwQSqBHpP0C3VUk4CAq0JbR7GgI4fF24ICEwNEbTxO7TcSns4mTAOHx9VleGNI6yngM5ObaTPvSv1h8D_bLtoJPz7w-ZZrp7up8ICjPGh1mLQR834L46lTLTT9ttj5khtKdulsHdE_ehjSk8h6ismncMlF_sMcEnTGIzmZDsKpIgGAaAGAoAHhrXKHagHpr4bqAe1wRvYBwHYEwg&num=1&cid=5GgeIlrqRsuvWBUiRFycv9vM&sig=AOD64_3UKl0S4gR4x1JI5sn2aiJU5TYezg&client=ca-pub-1902509609982107&adurl=http://es.wix.com/maravillosositio/900es%3Futm_source%3Dgoogle%26utm_medium%3Dcpc%26utm_campaign%3Dbi_ads_latam_sp_sca%5Esoftware%26experiment_id%3Dgeneura.ugr.es%5E41753753494%5E%5Eprogramas%2520crear%2520webhttp://geneura.ugr.es/~jmerelo/XSLT/http://www.googleadservices.com/pagead/aclk?sa=L&ai=CTdfQHrYwVuDWOpG7WIOgl8AF_sb4ngiOhOvVmwHAjbcBEAEgmYyZAmDVxdUCoAGF_pHgA8gBAqgDAcgDwQSqBHpP0C3VUk4CAq0JbR7GgI4fF24ICEwNEbTxO7TcSns4mTAOHx9VleGNI6yngM5ObaTPvSv1h8D_bLtoJPz7w-ZZrp7up8ICjPGh1mLQR834L46lTLTT9ttj5khtKdulsHdE_ehjSk8h6ismncMlF_sMcEnTGIzmZDsKpIgGAaAGAoAHhrXKHagHpr4bqAe1wRvYBwHYEwg&num=1&cid=5GgeIlrqRsuvWBUiRFycv9vM&sig=AOD64_3UKl0S4gR4x1JI5sn2aiJU5TYezg&client=ca-pub-1902509609982107&adurl=http://es.wix.com/maravillosositio/900es%3Futm_source%3Dgoogle%26utm_medium%3Dcpc%26utm_campaign%3Dbi_ads_latam_sp_sca%5Esoftware%26experiment_id%3Dgeneura.ugr.es%5E41753753494%5E%5Eprogramas%2520crear%2520webhttp://www.googleadservices.com/pagead/aclk?sa=L&ai=CTdfQHrYwVuDWOpG7WIOgl8AF_sb4ngiOhOvVmwHAjbcBEAEgmYyZAmDVxdUCoAGF_pHgA8gBAqgDAcgDwQSqBHpP0C3VUk4CAq0JbR7GgI4fF24ICEwNEbTxO7TcSns4mTAOHx9VleGNI6yngM5ObaTPvSv1h8D_bLtoJPz7w-ZZrp7up8ICjPGh1mLQR834L46lTLTT9ttj5khtKdulsHdE_ehjSk8h6ismncMlF_sMcEnTGIzmZDsKpIgGAaAGAoAHhrXKHagHpr4bqAe1wRvYBwHYEwg&num=1&cid=5GgeIlrqRsuvWBUiRFycv9vM&sig=AOD64_3UKl0S4gR4x1JI5sn2aiJU5TYezg&client=ca-pub-1902509609982107&adurl=http://es.wix.com/maravillosositio/900es%3Futm_source%3Dgoogle%26utm_medium%3Dcpc%26utm_campaign%3Dbi_ads_latam_sp_sca%5Esoftware%26experiment_id%3Dgeneura.ugr.es%5E41753753494%5E%5Eprogramas%2520crear%2520webhttp://freshmeat.net/search/?q=editor&trove_cat_id=868&section=trove_cathttp://xmlsoftware.com/http://scriptingnews.userland.com/directory/1026/xmlEditorshttp://www.softgauge.com/xmlshell/'http://oxygen.sync.ro/http://www.excelon.com/http://www.xmlspy.com/http://www.xemacs.org/http://www.google.com/apis/api_faq.htmlhttp://geneura.ugr.es/~jmerelohttp://slashdot.org/http://barrapunto.com/http://xes.sourceforge.net/http://www.siniestro.com/XEShttp://www.interakt.ro/products/Krysalis/http://barrapunto.com/article.pl?sid=02/07/08/0645230http://www-306.ibm.com/software/pervasive/transcoding_publisher/http://www.programacion.com/java/tutorial/beaintro/http://www.beasys.es/productos/weblogic_server_81.jsphttp://www.axkit.org/http://cocoon.apache.org/http://www.oreilly.com/catalog/javaxml/chapter/ch09.htmlhttp://geneura.ugr.es/~jmerelo/wshttp://www.xml.com/pub/a/98/10/guide0.htmlhttp://geneura.ugr.es/http://geneura.ugr.es/~jmerelo/XSLT/http://geneura.ugr.es/~jmerelo/ws/http://geneura.ugr.es/NEW/www/CUR/NET/
  • 7/24/2019 Tutorial de XML

    2/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 2/7

    Contenido de estaseccin

    XML bienformadoPrimerdocumentoXMLConstituyentesadicionalesde undocumentoXML

    Los mismos entornos incluyen facilidades para validar el cdigo XML resultante, pero esto se puede hacertambin usando analizadores XML, de los cuales hay muchos, de bastante buena calidad, y la mayor parte de ellosgratuitos. Uno de los ms conocidos y usados es el Xerces, del cual hay versiones en Java, en Perl y en C++. Esadecuadamente rpido, y adems incorpora todos los ltimos estndares del W3. Otra opcin, que adems se puedeusar desde Internet, es el XParse de Jeremie, que te analiza directamente el documento y te lo presenta en forma derbol.

    La mayor parte de los validadores pueden trabajar de dos formas: de forma independiente, y usndolos comolibreras desde el lenguaje de programacin de la eleccin de uno por ejemplo, Xerces se puede usarstand-alone, obien como una librera xerces.jar, cuyos objetos se pueden instanciar o usar desde el programa de uno.

    En muchos casos, como en el caso de C#, el XML se puede generar automticamente a partir de la definicinde una clase, o bien, al revs, una clase o un objeto de una clase se puede generar automticamente a partir de XMLa partir de un fichero, de esta forma:

    csc /doc:doc.xml mylangdoc.cs

    De la misma forma, usando la herramienta xsdpermite convertir definiciones de clase en definiciones de tiposde datos en XML y viceversa, usndolo de esta forma:

    xsd.exe /c car.xsd

    convierte una definicin de clase en cdigo C#, o, de forma anloga, pero al contrario:

    xsd.exe car.exe

    que convierte un ensamblajeen una definicin de tipo de datos en XML

    La mayora de los navegadores actuales son capaces de entender XML. Por ejemplo, el Internet Explorer lee

    los ficheros XML y los trata de una forma especial, pudiendo presentar la jerarqua a diferentes niveles. Otrosnavegadores, como el Mozilla o el Netscape, tambin entienden XML, aunque no permiten editarlo de forma adecuadani de presentarlo de forma jerrquica como el IE. En algunos casos, son capaces tambin de aplicar transformacionestales como XSLT o CSS (cascading style sheets).

    3 XML bien formado

    Como lenguaje de anotacin, las sentencias en XML consisten en una serie de etiquetas (llamadaselementos) con una serie de modificadores (llamados atributos). Las etiquetas pueden estar anidadasunas dentro de otras, pero toda etiqueta que se abra se tiene que cerrar, y siempre en el mismo orden.En caso de que un elemento no tenga pareja (por no tener ningn contenido dentro), se le denominaelemento vacoy se indica con un /al final. Los elementos se agrupan en documentos, tales como elsiguiente ( ej1.xml):

    aparador sof

    Todos los documentos XML deben estar bien formados, y este es el requisito mnimo que deben cumplir losdocumentos. Eso que significa que se debe cumplir lo siguiente:

    si no se utiliza DTD, el documento debe comenzar con un Declaracin de Documento Standalone, tal como laque se pone en la primera lnea.todas las etiquetas deben estar equilibradas: esto es, todos los elementos que contengan datos de tipo carcterdeben tener etiquetas de principio y fin

    todos los valores de los atributos deben ir entrecomillados (el carcter comilla simple [el apstrofe] puedeutilizarse si el valor contiene caracteres comillas dobles, y viceversa): si necesitas ambos, utiliza &apos y&quot. As es como se hace en el elemento habitacioncualquier elemento VACO (p.e. aquellos que no tienen etiqueta final como , , y
    y otros deHTML) deben terminar con '/>' o debes hacerlos no VACOS aadindoles una etiqueta de fin, tal como se ve enel elemento puerta.no debe haber etiquetas aisladas (< &) en el texto (p.e. debe darse como &lt y &amp), y la secuencia ]]>

    http://geneura.ugr.es/~jmerelo/xml/ej1.xmlhttp://geneura.ugr.es/~jmerelo/wshttp://www.jeremie.com/Dev/XML/test/index.htmlhttp://xml.apache.org/xerces2-j/index.html
  • 7/24/2019 Tutorial de XML

    3/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 3/7

    ENTIDAD CARACTER

    &amp &

    &lt

    &apos '

    &quot "

    debe darse como ]]&gt si no ocurre esto como final de una seccin marcada como CDATAlos elementos deben anidar dentro de s sus propiedades (no se deben sobreponer etiquetas, como en el restode SGML)Los ficheros bien-formados sin-DTD pueden utilizar atributos en sus elementos, pero stos deben ser todos deltipo CDATA, por defecto. El tipo CDATA (character DATA) son caracteres..Los nombres de las etiquetas pueden ser alfanumricos, comenzando con una letra, e incluyendo los caracteresy :, aunque este ltimo tiene un significado especial.

    En este caso usamos un documento XML para describir las estancias de unacasa. Con l podemos hacer poca cosa, salvo analizarlo a ver si es correcto. Lopodemos hacer usando el parser XML de Jeremie, que nos dar un resultado tal comoel de la imagen.

    Lo que ocurre con el parser este es que se lo traga todo, y ya puede uno meterlos errores que sean, que no da ninguno. Por eso, merece la pena usar un parser talcomo el Xerces, que te puedes bajar directamente de aqu. Para usarlo, tenemos quedar las rdenes siguientes (en Windows)

    :

    set PATH=%PATH%c:\jdk1.1.8\binset CLASSPATH=%CLASSPATH%c:\xerces-1_4_4\xerces.jarc:\xerces-1_4_4\xercesSamples.jarcd c:\xerces-1_4_4java dom.DOMWriter fichero.xml

    Habr que dar, en cada caso, el camino a donde est instalado, de forma efectiva, el Xerces y la mquinavirtual Java. En caso de tratarse de Linux, las rdenes sern as:

    set PATH=$PATH:/usr/jdk1.1.8/binset CLASSPATH=$CLASSPATH:/usr/local/xerces-1_4_4/xerces.jar:/usr/local/xerces-1_4_4/xercesSamples.jarcd /usr/local/xerces-1_4_4java dom.DOMWriter fichero.xml

    Por ejemplo, en el caso del fichero anterior, el resultado sera algo as:

    mellizo:~$ java -cp /home/jmerelo/soft/xerces-1_4_4/xerces.jar:/home/jmerelo/soft/xerces-1_4_4/xercesSamppublic_html/xml/ej1.xml: aparador sof

    Que es muy parecido al original, salvo que la codificacin ha sido cambiada a UTF-8 (un mtodo de codificarcaracteres UNICODE), y por eso los acentos aparecen de forma extraa. En este caso, la clase dom.Domwriter lo quehace es leer el fichero de entrada, validarlo, y escribirlo en la salida con indentaciones. En caso de que hubiramosintroducido un error, por ejemplo, el fichero siguiente:

    aparador sof

    Nos dara un error de este estilo:

    public_html/xml/ej2-peta.xml:[Fatal Error] ej2-peta.xml:8:9: The element type "aqui-peta" must be terminated by the matching end-tag "

    Que indica que, efectivamente, el elemento tipo aquipetadebe de estar emparejado con su anti-elementocorrespondiente.

    En un documento XML, aparte de elementos y atributos, puede haber otras cosas: entidades,que representan smbolos "atmicos", que habitualmente deben ser entendidos por el navegador, yque se muestran en la tabla adjunta como se ve, las entidades van encerradas entre los smbolos& y ; comentarios, que se procesan de forma diferente al texto, y que, tal como en HTML, vanprecedidos por secciones CDATA, que sirven para extraer del documentoXML una seccin, que va a ser interpretada tal cual, sin hacer ninguna modificacin. Puede servir,por ejemplo, para meter HTML "mal-formado" dentro de un documento XML. Por ejemplo, el

    documento siguiente incluira todas los elementos anteriores (ej3.xml):

    http://geneura.ugr.es/~jmerelo/xml/ej3.xmlhttp://xml.apache.org/dist/xerces-j/Xerces-J-bin.1.4.4.tar.gzhttp://xml.apache.org/xerces-jhttp://www.jeremie.com/Dev/XML/test/index.html
  • 7/24/2019 Tutorial de XML

    4/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 4/7

    Contenido deesta seccin

    Espaciosdenombres

    aparador sof "de poca" En la pared de la derecha hay un frigorfico

    Y en la de la izquierda, slo mugre ]]> fregadero

    En este caso, al procesarlo con Xerces, la salida dejar fuera los comentarios, que no forman parte deldocumento, a no ser que se quieran usar de verdad.

    Ejercicios 1 1. Crear un documento XML, que contenga la descripcin de un equipo de la liga (jugadores, nombre,entrenador). Procesarlo en el parser JavaScript, y con el Xerces. Usar alternativamente un editor para Windows.Comprobar que es XML vlido.2. Crear un documento XML que describa varios libros de una biblioteca o librera, con ttulo, autores, resumen,editorial y los datos que se quieran incluir.

    4 Cada cosa en su sitio: XML namespaces

    Si todo el mundo fuera definiendo etiquetas por ah, un documento acabara siendo un caos dediferentes etiquetas procedentes de diferentes sitios, y, lo que es peor, de etiquetas con el mismo nombreque, en realidad, significan cosas diferentes. El concepto de espacios de nombres(namespaces) permiteparticionar el conjunto de todos los nombres posibles, de forma que se pueda definir a qu zona de eseespacio corresponde una etiqueta. De esta forma, etiquetas con el mismo nombre, pero definidas por dos autoresdiferentes, pueden diferenciarse en el espacio de nombres. El espacio de nombres no es esencial en todos losdocumentos, pero resulta til cuando se usan etiquetas procedentes de diferentes procedencias (por ejemplo,etiquetas nuevas dentro de un documento XML), o etiquetas que se quieren procesar de forma diferente. El especiode nombres de una etiqueta se indica con un prefijo y :, como en este caso: . Por ejemplo, se usanespacios de nombres en el documento siguiente (ej4.xml):

    aparador sof "de poca"

    En caso de que no se especifique ningn prefijo, se puede tambin especificar qu espacio de nombres sigue,

    por defecto, el documento:

    aparador sof "de poca"

    Conviene recordar que el prefijo de un espacio de nombres es totalmente arbitrario lo que define un espaciode nombres es, en realidad, el URI.

    En este documento, donde hemos suprimido elementos que ya se han explicado, se usa la primera lnea paradeclarar el prefijo del espacio de nombres mediante el atributo xmlns(XML namespace). En este caso, hemos elegidoel prefijo mc. A la vez, el espacio de nombres tiene que tener asignado un URI (Universal Resource Identification), que

    es bsicamente algo que parece una direccin web, pero que no lo es. Lo nico que se requiere de este URI es quesea nico en el documento adems, es aconsejable que sea siempre el mismo cuando se use el mismo namespace,aunque no es estrictamente necesario, ni se puede comprobar. El que sea un URI significa, entre otras cosas, que siuno se mete en esa direccin no tiene porqu haber nada. Se trata simplemente de asignar un identificador nico.

    En el resto de los elementos se sigue usando el espacio de nombres. Incluso se puede usar en los atributos, sipertenecen al mismo espacio de nombres.

    Un documento XML puede tener tantos espacios de nombres como se quieran declarar, y se pueden mezclarelementos de diferentes espacios de nombres, e incluso sin ningn espacio, tal como se hace en el siguiente ejemplo(ej5.xml):

    aparador Sof Peludo Inconmensurable

    http://geneura.ugr.es/~jmerelo/xml/ej5.xmlhttp://geneura.ugr.es/~jmerelo/xml/ej4.xml
  • 7/24/2019 Tutorial de XML

    5/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 5/7

    Contenido deesta seccin

    XSchemay DTDsValidandoXML

    En este caso, hemos declarado dos espacios de nombres, mcy mueble, y cada uno lo usamos para una cosadiferente. Incluso un atributo, id, se usa sin espacio de nombres.

    Conviene usar los espacios de nombres cuando no hay otro remedio, o cuando hay que combinar conjuntos deetiquetas XML procedentes de difefentes procedencias. En todo caso, en la documentacin de un conjunto deetiquetas conviene especificar un espacio de nombres, para que se las pueda identificar fcilmente cuando aparezcanen un documento. Ms adelante, cuando se vean los DTDs, los espacios de nombres servirn para especificar qudiccionario de datos usar en cada momento un URI tambin identifica un diccionario de datos.

    Ejercicios 2

    1. Con los equipos de la liga anteriores, usar diferentes espacio de nombres para el equipo en s y para suscomponentes. Por ejemplo, los elementos que se incluyan dentro de un jugador pueden tener un espacio de nombres,

    mientras que la descripcin de un equipo puede tener otro diferente

    5 XML y diccionarios de datos

    En algunos casos, es necesario validaar que un documento XML es correcto, es decir, que las etiquetasque se usan son correctas y que estn anidadas de la forma adecuada. Por ejemplo, en el caso anterior, esconveniente comprobar que la etiqueta raz es siempre micasa, que la casa est compuesta de habitaciones, ylas habitaciones tienen muebles y puertas a otros sitios. Incluso se podra intentar que las puertas fueran aotras habitaciones vlidas, aunque es mucho pedir.

    Para ello se pueden usar dos herramientas: DTD, o data type dictionnary, o bien XSchema, el equivalente enXML. Un XSchema describe la sintaxis correcta de un documento XML. En el caso de los documentos que hemos vistohasta este momento, hay que seguir una serie de pasos para crear un XML Schema. La forma ms fcil de hacerlo esusando alguna utilidad generadora, tal como DTDGenerator, que crea un DTD tal como el siguiente (ligeramenteretocado):

    Este DTD se puede usar para validar los ficheros XML anteriores, aunque usaremos XSchema ms adelante. Loque indica es que una habitaciontiene uno o varios muebles, y una o varias puertas (que se indica con +) a su vez,micasapuede tener una o ms habitaciones, y cada uno de los elementos pueden tener los atributos que se indicancon la sentencia ATTLIST. Como se puede ver, no se trata de XML, aunque se le parezca. Por eso, usando una pequeautilidad escrita en Perl llamada dtd2xsd.plse puede convertir a XSchema (el resultado est enmicasa.xsd, aunque,como en el caso anterior hemos tenido que retocar alguna cosilla):

    Este documento declara un espacio de nombres por defecto en la primera lnea, que es el que corresponde alos XML Schemas eso quiere decir que, si no se usa ningn prefijo, los elementos pertenecern a ese espacio denombres. Tambin declara un espacio de nombres "objetivo" (targetNamespace), que ser el que se est validando, y un

    prefijo para el mismo, t.

    A continuacin, se declaran todos los elementos, usando, como es natural, element. Los elementos pueden sertipos simples (tal como en este caso lo es mueble), o complejos (todos los dems). En el caso del elemento simple,basta declarar el tipo, en este caso, una cadena o string.

    Los elementos complejos son los que incluyen diferentes elementos anidados (que se declaran con sequence),

    http://geneura.ugr.es/~jmerelo/xml/micasa.xsdhttp://www.w3.org/2000/04/schema_hack/http://www.hitsw.com/xml_utilites/
  • 7/24/2019 Tutorial de XML

    6/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 6/7

    atributos (attribute). Para cada elemento que puede aparecer dentro de un elemento complejo, se declara el nmeromnimo y mximo de veces que debe o puede aparecer ((min|max)Occurs). Por ejemplo, si queremos que en cadahabitaci haya al menos una puerta (porque si no, a ver cmo vas a entrar, listo), se puede indicar as: , y, evidentemente, a qu elemento se refiere como son elementosdel espacio "target", se usa el prefijo t. Para los atributos, se indica si son obligatorios mediante el atributo use, y dequ tipo son.

    Sin embargo, este Schema, como est generado automticamente, puede simplificarse. Especialmente, sepueden sustituir referencias (indicadas con el atributo ref) a otros elementos con los elementos en s. El cdigoquedara de esta forma:

    Este Schema ejemplo se puede usar, evidentemente, para validar los ejemplso anteriores. Para ello, dentro delmismo ejemplo, basta con indicar qu XSchema o DTD es el que siguen. Por ejemplo, se puede aadir lo siguiente alprincipio (tal como se muestra en el fichero ej6.xml, justo despus de ladeclaracin de XML, para que use ese DTD para validar. Si se quiere usar un XSchema, hay algunas formas noestndar (que se suelen usar con los XSchemata de Microsoft), pero la forma estndar es incluir una serie deatributos en la etiqueta raz, de esta forma:

    Para analizar el documento y validarlo a la vez, hay que irse a la ltima versin de Xerces, la 2 la primera nole hace mucho caso a los XSchemas:

    java dom.Writer/donde/sea/xerces-2_0_2/xercesImpl.jar:

    /donde/sea/xerces-2_0_2/xercesSamples.jar: /donde/sea/xerces-2_0_2/xmlParserAPIs.jar dom.Writer -v -s ej7.xml

    En caso de que haya algn error en el Schema o en el XML, el analizador lo indicara.

    Para terminar, se puede echar un vistazo a xml.com, donde hay un excelente tutorial sobre cmo comenzar ausar los XML Schemas.

    Ejercicios 31. Disear un XSchema para un documento XML que describa una quiniela, incluyendo resultados. Tener en cuentaque una quiniela tiene 15 partidos slo. Hacer un documento XML que siga ese XML Schema, y validarlo usandoXerces2 o algn otro parser con validacin.

    6 Bibliografa y enlaces relacionados con XML

    Libros relacionados con XML

    Para empezar, y como casi siempre, un libro de O'Reilly: Learning XML by Erik T. Ray (2nd Edition), un libro introductorio, de 350pginas, que incluye los conceptos bsicos: etiquetas, enlaces, modelos de documento, y transformaciones, incluyendo un poco deprogramacin. til para quien no ha tenido suficiente con este tutorial, y quiere ir un poco ms all.

    http://www.amazon.com/exec/obidos/ASIN/0596000464/perltutobyjjmerehttp://www.amazon.com/exec/obidos/ASIN/0596004206/perltutobyjjmerehttp://oreilly.com/http://www.xml.com/pub/a/2000/11/29/schemas/part1.htmlhttp://geneura.ugr.es/~jmerelo/xml/ej6.xml
  • 7/24/2019 Tutorial de XML

    7/7

    28/10/2015 Tutorial de XML

    http://geneura.ugr.es/~jmerelo/xml/ 7/7

    XML Bible (2nd Edition) de Elliotte Rusty Harold, la Biblia de XML, ya en su segunda edicin, es un libro mucho ms extenso, conmuchas ms pginas, que describe con ms profundidad cada uno de los reinos del mundo XML: DTDs, RDF, XSLT, CSS, y algunasaplicaciones de XML como VML y XHTML. Recomendable si el libro anterior se queda pequeo, o como libro de referencia en XML.

    Si trabajas en Perl, acaba de publicarse Perl & XML (O'Reilly Perl) by Erik T. Ray, Jason McIntosh, tambin de O'Reilly. Trata de todos losmdulos que se usan para trabajar con XML en Perl, poniendo un poco de orden en el tema. Tambin incluye mdulos un poco msavanzados, como SOAP::Lite.

    Si trabajas en Java, un libro excelente es Java & XML, 2nd Edition: Solutions to Real-World Problems, de Brett McLaughlin, tambin deO'Reilly. Trata de todo tipo de libreras para trabajar con Java y XML, y acaba de actualizarse a su segunda edicin. Incluso aunque nosepas Java, puede servir de introduccin a ambos. Tambin habla de como tratar con XML desde JSPs o servlets, y de cmo usar hojas deestilo XSLT.

    Una serie de tutoriales en castellano de XML: el tutorial de Javi Garca Castellano, una excelente introduccin,que cubre XML sin validar, DTDs, espacios de nombres y el modelo de objectos de documento. Tambin dentro denuestro servidor, Maribel Garca hace una introduccin a los conceptos generales de XML. En otro sitio, podemosencontrar un breve tutorial de Alfredo Reino, que incide en la creacin de documentos XML, y, finalmente, unatraduccin al castellano de la especificacin de XML. Programacion.netaloja tambin un tutorial de XML.

    En la universidad Carlos III de Madrid se aloja XML-ES, que contiene informacin diversa, proyectos basadosen XML, y diversos tutoriales. Son casi unos histricos, con ms de 2 aos. Finalmente, si necesitas ayuda, podisacudir a la lista de correo xml-es de informaticos.biz.

    Juan Julian Merelo Guervos

    Last modified: Wed Nov 10 10:43:15 CET 2004

    mailto:jmerelo(arroba%20aqu%C3%AD)geneura.ugr.eshttp://www.informaticos.biz/http://www.informaticos.biz/mailman/listinfo/xml-eshttp://www.it.uc3m.es/~xml/http://www.programacion.com/tutorial.php?id=apuntesxmlhttp://www.programacion.net/http://mipagina.euskaltel.es/gsagarduy/rec-xml-es.htmlhttp://www.areino.com/alf/docs/introxml.pdfhttp://geneura.ugr.es/~maribel/xml/introduccion/index.shtmlhttp://flanagan.ugr.es/xml/http://www.amazon.com/exec/obidos/ASIN/0596001975/0596001975/perltutobyjjmerehttp://www.amazon.com/exec/obidos/ASIN/0596001975/perltutobyjjmerehttp://www.amazon.com/exec/obidos/ASIN/0596001975/059600205X/perltutobyjjmerehttp://www.amazon.com/exec/obidos/ASIN/059600205X/perltutobyjjmerehttp://www.amazon.com/exec/obidos/ASIN/0764547607/perltutobyjjmerehttp://www.amazon.com/exec/obidos/ASIN/0764547607/perltutobyjjmere