2 Estructura de un Documento XML Introducción (I)! Un documento XML contiene texto, nunca datos binarios.! Documento XML <> Fichero XML! Un documento XML puede estar en un registro de una base de datos, puede ser el resultado de un programa (que es enviado a otro programa), etc. sin llegar a ser almacenado en un fichero. 2003 Borja Sotomayor 1
Introducción (II)! Un documento XML está compuesto de:! Elementos ( etiquetas )! Texto (cadena de caracteres)! Referencias a Entidades! Secciones CDATA! Comentarios! Instrucciones de Procesamiento! La declaración XML Elementos (I)! Elemento <> Etiqueta! Un elemento es todo aquello que va delimitado por una etiqueta de comienzo (<tag>) y una etiqueta de fin (</tag>).! Todo lo que está entre esas dos etiquetas se llama el contenido del elemento.! Una etiqueta empty también es un elemento " un elemento sin contenido. 2003 Borja Sotomayor 2
Elementos (II)! El contenido de un elemento puede ser:! Texto: <autor>isaac Asimov</autor>! Elementos: <libreria> <libro titulo= La Fundación /> <libro titulo= El Juego de Ender /> </libreria>! Contenido mixto (texto + elementos): <body> Texto en <i>cursiva</i>. Texto en <b>negrita</b>. Y, para terminar, un salto de línea. <br/> </body> Elementos (III)! Cuando un elemento H está contenido en un elemento P se dice que:! H es un elemento hijo de P.! P es el elemento padre de H.! En XML todo elemento tiene uno y sólo un padre.! El elemento raíz es el único que no tiene padre. Todo documento XML debe tener uno y solo un elemento raíz. 2003 Borja Sotomayor 3
Elementos (IV)! Un elemento debe tener un nombre XML:! Pueden contener cualquier carácter alfanumérico.! Pueden contener los caracteres! _ (subrayado, subguión)! -(guión)!. (punto)! Únicamente puede comenzar por caracteres alfabéticos o por el carácter de subrayado.! No puede contener espacio blanco (carácter de espaciado, saltos de línea, tabulaciones) Elementos (V) libreria " BIEN 3dimension " MAL fecha-nacimiento " BIEN _3d " BIEN Fecha nacimiento " MAL Año " BIEN! También deben tener nombres XML los atributos de los elementos. 2003 Borja Sotomayor 4
Referencias a Entidades (I)! En el texto contenido en un elemento no pueden aparecer estos dos caracteres:! < (menor que)! & (ampersand)! No deberían aparecer los siguientes:! > (mayor que)! (comilla doble)! (comilla simple) Referencias a Entidades (II)! Por qué? <texto> La inecuación resultante es x < y 2 + 7 </texto>! Parece que estamos empezando una nueva etiqueta! 2003 Borja Sotomayor 5
Referencias a Entidades (III)! Solución: Utilizar referencias a entidades. <texto> La inecuación resultante es x < y 2 + 7 </texto>! El parseador XML substituye la referencia automáticamente por el carácter referenciado. Referencias a Entidades (IV)! Las entidades van delimitadas por & (ampersand) y ; (punto y coma).! En XML se encuentran predefinidas las siguientes referencias a entidades:! < " Less Than (menor que)! & " Ampersand! > " Greater than (mayor que)! " " Quotation Mark (comilla doble)! ' " Apostrophe (comilla simple) 2003 Borja Sotomayor 6
Referencias a Entidades (V)! < " Obligatoria. Para no confundir el comienzo de una etiqueta.! & " Obligatoria. Para no confundir el comienzo de una referencia a entidad.! &qt; ' " Obligatoria en el valor de un atributo. Para no confundir el final del valor. <img src= cena.jpg alt= Fue una cena interesante /> <img src= cena.jpg alt= Fue una "cena" interesante /> Referencias a Entidades (VI)! > " Opcional.! Podemos definir nuestras propias entidades en el DTD. 2003 Borja Sotomayor 7
Secciones CDATA (I)! Y si tenemos lo siguiente? <texto> Un documento HTML básico: <html> <head> <title>ejemplo</title> </head> <body> Esto es el texto. </body> </html> </texto> Secciones CDATA (II)! Habría que convertirlo a lo siguiente: <texto> Un documento HTML básico: <html> <head> <title> Ejemplo </title> </head> <body> Esto es el texto. </body> </html> </texto> 2003 Borja Sotomayor 8
Secciones CDATA (III)! Podemos evitar esto con las secciones CDATA: <texto> Un documento HTML básico: <![CDATA[ <html> <head> <title>ejemplo</title> </head> <body> Esto es el texto. </body> </html> ]]> </texto> Secciones CDATA (IV)! Una sección CDATA va delimitada por:! <![CDATA[! ]]>! Una sección CDATA no es parseada (un < no comienza una etiqueta, ni un & empieza una referencia a entidad). 2003 Borja Sotomayor 9
Comentarios! Los comentarios en XML van delimitados por! <!--! -->! No pueden aparecer dentro de etiquetas.! No pueden anidarse. Instrucciones de Proceso! Las instrucciones de proceso le proporcionan información al parseador XML.! Van delimitadas por:! <?!?>! Por ejemplo:! <?xsl-stylesheet href= estilo.css?> (le indica al parseador que hoja de estilo tiene que utilizar) 2003 Borja Sotomayor 10
Declaración XML (I)! La declaración XML es opcional.! Tiene tres atributos.! Parece una instrucción de proceso (aunque no lo es) <?xml version=... encoding=... standalone=...?>! Si aparece, tiene que ser la primera línea del documento. Declaración XML (II)! version: Indica la versión del estándar XML a la cual se ajusta el documento. Actualmente, el único valor válido es 1.0! encoding: Indica el juego de caracteres del documento. P.ej: ISO-8859_1 para caracteres de lenguajes europeos (ö, ç,...) 2003 Borja Sotomayor 11
Declaración XML (III)! standalone: Tiene dos posibles valores.! no " Es necesario acceder al DTD del documento para obtener ciertos datos sobre éste (por ejemplo, los valores por defecto de atributos).! yes " El documento no depende del DTD.! El valor por defecto es no. 2003 Borja Sotomayor 12