"
Sistemas de Información 12/13 XML (eXtensible Mark-up Language)
Departamento Informática e Ingeniería de Sistemas Universidad de Zaragoza
Raquel Trillo Lado ([email protected])
Guión
Introducción
Ejemplos
Documentos vs apliaciones XML
Espacios de nombres
Validación de documentos XML DTDs (Document Type Definition) XSD (XML Schema Document)
Bibliografía Sistemas de Información Raquel Trillo Lado
XML (eXtensible Markup Language) Lenguaje basado en etiquetas estandarizado por el
W3C (1998): Las etiquetas no están predefinidas sino que las
definen los usuarios para un dominio/tarea específico
Define reglas sobre cómo se crean documentos de texto usando las etiquetas:
Los documentos tienen forma de árbol (una etiqueta raíz)
Las etiquetas se abren y se cierran y pueden tener atributos cuyo valor se indica entre comillas
… Sistemas de Información Raquel Trillo Lado
Introducción
XML (eXtensible Markup Language) Se diseño para almacenar y transportar datos (no
para mostrar como HTML) Se usa fundamentalmente para:
Intercambio de datos entre diferentes aplicaciones (sencillo de “parsear”)
Establecer los parámetros de configuración de diversas aplicaciones (comprensible si las etiquetas son representativas y extensible)
Generar la vista de una aplicación en función del dispositivo que la accede
Sistemas de Información Raquel Trillo Lado
Introducción
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Fichero XML para intercambio de notas --> <apuntes> <nota fecha=“15/09/2012”> <de>Pepe</de> <para>Mariano</para> <cabecera>Recordatorio importante SI</cabecera> <detalles> No olvides que este fin de semana tenemos que acabar las prácticas de Sistemas de Información! </detalles> </nota> <nota> …. </apuntes>
Sistemas de Información Raquel Trillo Lado
Ejemplos
Declaración de XML: Indica la versión de XML que se está usando (no la versión
del documento) y la codificación de caracteres del documento de texto (por defecto se asume UTF-8)
No es obligatoria pero si aconsejable para que se interprete adecuadamente el contenido del documento
Si se incluye debe aparecer al principio del documento
El elemento raíz: Es obligatorio (en el ejemplo <apuntes>)
Entre el inicio y el cierre de un elemento puede haber diferentes elementos (otros elementos) o texto
Los elementos pueden tener atributos (en el ejemplo fecha)
Sistemas de Información Raquel Trillo Lado
Ejemplos
Diferentes alternativas para representar la misma información:
<apuntes> <nota fecha=“15/09/2012” de=“Pepe” para=“Mariano” > <cabecera>Recordatorio importante SI</cabecera> <detalles> No olvides que este fin de semana tenemos
que acabar las prácticas de Sistemas de Información </detalles> </nota> …. </apuntes>
En general se sigue la siguiente convención: Usar elementos para datos multivaluados o gran cantidad de texto Usar atributos en caso contrario
Sistemas de Información Raquel Trillo Lado
Ejemplos
Para ciertos caracteres es preciso emplear secuencias de escape:
< < > > & & “ " ‘ '
Si se desea incluir un texto largo con muchos caracteres especiales se usan las regiones CDATA para evitar las secuencias de escape: Puede contener cualquier secuencia excepto ]]>
Sistemas de Información Raquel Trillo Lado
Ejemplos
Diferentes alternativas para representar la misma información:
<apuntes> <nota fecha=“15/09/2012” de=“Pepe” para=“Mariano” > <cabecera>Copia y pega esto en el fichero de conf.</cabecera> <detalles> Copia lo siguiente tal cual: <![CDATA[ <servlet> <servlet-name>InsertUser</servlet-name> <servlet-class>ej1.InsertUserServlet</servlet-class> </servlet> ]]> </detalles> </nota> …. </apuntes>
Sistemas de Información Raquel Trillo Lado
Ejemplos
Se distingue entre mayúsculas y minúsculas
Se conservan espacios
Reglas nombrado elementos: No empieza por número o carácter de puntuación No empieza por xml, XML, xML, etc. No puede contener espacios Evitar – (resta), .(Java) y : (prefijos)
Comentarios: Entre marcas <!-- … --> No permiten la secuencia -- Son multilínea
Sistemas de Información Raquel Trillo Lado
Ejemplos
Documento XML: Documento de texto (secuencia de caracteres enviada por
un socket, string devuelto por una llamada a un procedimiento, etc.) que tiene formato XML
Está “bien formado” (well-formed) cuando cumple las características que hemos enumerado (una etiqueta raíz, comentarios, anidamiento de etiquetas correcto, etc. (para permitir construir parsers eficientes)
Aplicación XML: Conjunto de etiquetas específicas para representar la
información de un dominio específico DTDs (Document Type Definition) o Esquemas XML
(XML Schema)
Sistemas de Información Raquel Trillo Lado
Documentos vs aplicaciones XML
En un mismo documento podemos mezclar etiquetas de aplicaciones XML diferentes:
Problema: las mismas etiquetas y atributos puede haberse definido en diferentes aplicaciones con diferentes significados
Solución: uso de espacios de nombres (concepto similar a los paquetes de Java)
Cada espacio de nombres se asocia a una URI (p.e. una URL) que debe ser única:
Si se usan URL como identificadores estas no tienen porque ser válidas
En los documentos XML cada espacio de nombres se asocia con un prefijo
Sistemas de Información Raquel Trillo Lado
Espacios de nombres
<apuntes xmlns=”http://mispracticas/xml/apuntes” xmlns:time=“http://time.example.com”>
<nota> <time:date> <time:day>23</time:day> <time:month>09</time:month> <time:year>2012</time:year> </time:date> <de>Pepe</de> <para>María</para> <cabecera>Dale la comida al gato</cabecera> <detalles> La comida del gato está en …: </detalles> </nota> …. </apuntes>
Sistemas de Información Raquel Trillo Lado
Espacios de nombres
En el ejemplo anterior suponemos que: Existe una aplicación XML que modela información
temporal que dispone del elemento date que debe tener anidados los elementos day, month y year.
Esta apliación se identifica con la URI http://time.example.com y para usarla empleamos el prefijo time (p.e.: <time:date>)
Los nombres de prefijos que se usan en el documento se definen en el elemento raíz con el atributo xmlns:
xmlns=“…” para definir el espacio de nombres por defecto xmlns:nombrePrefijo=“….” para definir los demás espacios
de nombres y sus prefijos asociados para referenciarlos. Sistemas de Información Raquel Trillo Lado
Espacios de nombres
Documento XML válidos: Documento XML bien-formados (well-formed)
que cumplen con las especificaciones dadas en el correspondiente DTD o esquema XML (XML Schema-xsd)
Para que un parser pueda comprobar si un documento es válido o no es necesario especificar a que DTD o esquema XML (xsd) hace referencia
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML
bien-formados
Válidos
Referencias al DTD: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE apuntes SYSTEM ”apuntes.dtd"> <apuntes> <nota fecha=“15/09/2012”> <de>Pepe</de> <para>Mariano</para> <cabecera>Recordatorio importante SI</cabecera> <detalles> No olvides que este fin de semana tenemos que acabar las prácticas de Sistemas de Información! </detalles> </nota> … </apuntes>
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML
La URI (p.e la ruta del fichero o URL) del documento DTD
Referencias al XML Schema: <?xml version="1.0" encoding="ISO-8859-1"?> <apuntes xmlns=“http://mispracticas/xml/apuntes” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://mispracticas/xml/apuntes http://mispracticas/xml/apuntes.xsd”>
<nota fecha=“15/09/2012”> <de>Pepe</de> <para>Mariano</para> <cabecera>Recordatorio importante SI</cabecera> … </apuntes>
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML
El atributo xsi:schemaLocation empareja cada espacio de nombres con el fichero esquema que corresponde a su definición
El atributo xsi:schemaLocation del espacio de nombres http://www.w3.org/2001/XMLSchema-instance especifican las referencias a esquemas XML para la validación del vocabulario empleado
El valor de este atributo es de la forma en1 uri1 …enN uriN, donde eni hace referencia al espacio de nombres i empleado en el documento y urii hace referencia a la URI del esquema XML correspondiente (que define) el espacio de nombres i
Los pasers acceden a los esquemas indicados para la validación del documento
No es necesario especificar la uri del espacio de nombres http://www.w3.org/2001/XMLSchema-instance porque en general los parsers tienen en local almacenada una copia de dicho esquema
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML
Document Type Definition (DTD): Es una forma sencilla de especificar los elementos de una
aplicación XML Más pobre semánticamente que los esquema XML No tiene sintaxis XML Estándard del W3C
Esquema XML (XSD): La especif icación resulta más compleja que si
empleásemos DTDs Proporciona más funcionalidad que los DTDs Sintaxis XML Estándard del W3C
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML
Ejemplo de DTD: <!DOCTYPE apuntes [ <!ELEMENT apuntes (nota+)> <!ELEMENT nota (de,para,cabecera,cuerpo)> <!ELEMENT de (#PCDATA)> <!ELEMENT para (#PCDATA)> <!ELEMENT cabecera (#PCDATA)> <!ELEMENT cuerpo (#PCDATA)> ]>
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML: DTDs
<?xml version="1.0"?> <xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema” targetNamespace=“http://mispracticas/xml/apuntes” xmlns=“http://mispracticas/
xml/apuntes" > <xs:element name=”apuntes”> <xs:complexType> <xs:sequence> <xs:element name=”nota” maxOccurs=“unbounded”> <xs:complexType> <xs:sequence> <xs:element name=”de" type="xs:string"/> <xs:element name=”para" type="xs:string"/> <xs:element name=”cabecera" type="xs:string"/> <xs:element name=”cuerpo" type="xs:string”/> </xs:sequence> </xs:complexType> </xs:element> … </xs:schema>
Sistemas de Información Raquel Trillo Lado
Validación de documentos XML: XSD
Bibliografía
Tutorial de XML disponible en el sitio web formativo del W3C: http://www.w3schools.com/xml/
Fernando Be l las Permuy “ In teg rac ión deSistemas”, Ingeniería Informática, Universidad da Coruña
Transparencias en la plataforma Blackboard 9.1 del Anillo Digital Docente (ADD): http://bb.unizar.es
Sistemas de Información Raquel Trillo Lado