2 Estructura de un Documento XML Introducción (I) ! ! Un documento XML contiene texto, nunca datos binarios. Documento XML <> Fichero XML ! © 2001 Borja Sotomayor 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. 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 ! ! ! © 2001 Borja Sotomayor 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. 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: ! ! ! ! © 2001 Borja Sotomayor 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. 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 ! © 2001 Borja Sotomayor También deben tener nombres XML los atributos de los elementos. 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 < y2 + 7 </texto> ! © 2001 Borja Sotomayor ¡Parece que estamos empezando una nueva etiqueta! 5 Referencias a Entidades (III) ! Solución: Utilizar referencias a entidades. <texto> La inecuación resultante es x &lt; y2 + 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: ! ! ! ! ! © 2001 Borja Sotomayor &lt; " Less Than (menor que) &amp; " Ampersand &gt; " Greater than (mayor que) &quot; " Quotation Mark (comilla doble) &apos; " Apostrophe (comilla simple) 6 Referencias a Entidades (V) ! ! ! &lt; " Obligatoria. Para no confundir el comienzo de una etiqueta. &amp; " Obligatoria. Para no confundir el comienzo de una referencia a entidad. &qt; &apos; " 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 &quot;cena&quot; interesante” /> Referencias a Entidades (VI) ! ! © 2001 Borja Sotomayor &gt; " Opcional. Podemos definir nuestras propias entidades en el DTD. 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: &lt;html&gt; &lt;head&gt; &lt;title&gt; Ejemplo &lt;/title&gt; &lt;/head&gt; &lt;body&gt; Esto es el texto. &lt;/body&gt; &lt;/html&gt; </texto> © 2001 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: ! ! ! © 2001 Borja Sotomayor <![CDATA[ ]]> Una sección CDATA no es parseada (un < no comienza una etiqueta, ni un & empieza una referencia a entidad). 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: ! © 2001 Borja Sotomayor <?xsl-stylesheet href=“estilo.css”?> (le indica al parseador que hoja de estilo tiene que utilizar) 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) ! ! © 2001 Borja Sotomayor 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 (ö, ç, ...) 11 Declaración XML (III) ! © 2001 Borja Sotomayor 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. 12