[email protected] CURSO-TALLER Introducción a <? xml ?> Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica Presentación Curso -Taller “Introducción a XML” [email protected] 1. Introducción XML (lenguaje extensible de etiquetas) no es un lenguaje de marcado como el HTML. XML es un metalenguaje que nos permite definir lenguajes de marcado adecuado a usus determinados Al ser XML un metalenguaje para definir lenguajes, los elementos que lo componen pueden dar información sobre lo que contienen, y no necesariamente sobre su estructura física o presentación, como ocurre en HTML Introducción Curso -Taller “Introducción a XML” [email protected] XML no ha nacido solamente para su aplicación en Internet, sino que se propone como lenguaje de bajo nivel (a nivel de aplicación, no de programación) para intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa que podamos pensar. Introducción Curso -Taller “Introducción a XML” [email protected] La idea que subyace bajo el XML es la de crear un lenguaje muy general que sirva para muchas cosas. El HTML está diseñado para presentar información directamente a los humanos, y esto sin duda es algo bueno, pero es un lenguaje complicado de procesar para los programas informáticos. El HTML no indica lo que está representando, se preocupa principalmente de que eso tiene que ir en azul, o con un tipo de letra determinada, pero no te dice que lo que está mostrando es el título de un libro o el precio de un artículo. El XML hace precisamente esto: describe el contenido de lo que etiqueta. Introducción Curso -Taller “Introducción a XML” [email protected] 2. Estructura de un documento XML Un documento XML tiene dos estructuras: - Lógica - Física Físicamente, el documento está formado por unidades llamadas entidades. Cada documento comienza con una entidad documento. Lógicamente, el documento está formado por declaraciones, elementos, comentarios, referencias a caracteres e instrucciones de procesamiento Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Los documentos XML se dividen en dos grupos: - Documentos bien formados - Documentos válidos - Bien formados: son los que cumplen con las especificaciones del lenguaje (sintaxis y estructura jerárquica) - Válidos: Además de bien formados, siguen una estructura y semántica determinada por un DTD (Declaración de Tipo de Documento) Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Este es un sencillo ejemplo: <?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?> <registro> <nombre>Juan</nombre> <apellido>Pérez</apellido> <domicilio>Av. Colón, 123</domicilio> </registro> En la primera línea: - version: indica la versión de XML usada en el documento. Es obligatorio - encoding: La forma en que se ha codificado, por defecto UTF-8 - standalone: Indica si el documento va acompañado de un DTD (“no”) o no lo necesita (“yes”) Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Una DTD define qué tipo de documento estamos creando para ser procesado correctamente, mediante -Un identificador público (PUBLIC) que hace referencia a dicho DTD - Un Identificador Universal de Recursos (URI) precedido de la palabra SYSTEM ejemplos: <!DOCTYPE MESAJE SYSTEM “mesaje.dtd”> <!DOCTYPE HTML PUBLIC “-/ /W3C/ /DTD HTML 3.2 Final/ /EN”> <!DOCTYPE LABEL SYSTEM “http://www.ucol.mx/dtds/label.dtd”> Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Los documentos XML deben seguir una estructura extrictamente jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra <?xml version="1.0"?> <libro> <titulo>XML</titulo> <disponible>tiempo="24" unidad="horas"</disponible> <autor>Kaliman</autor> <formato>Paperback</formato> <publicacion>1998</publicacion> <precio>cantidada="10" moneda="pesos"</precio> <descuento>cantidad="20"</descuento> <libro/> </libro> Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Documentos XML bien formados... Si cumple con las especificaciones XML de producción, que conjunta: Estructura jerárquica de elementos. Las etiquetas deben estar incluidas correctamente en otras: <li>HTML <b> le permite <i> esto </b> </i> <li> en XML la <b> estructura <i> es </i> jerárquica </b> </li> Etiquetas vacías. Tanto XML como HTML permiten etiquetas sin contenido, pero en XML deben ser expresadas <etiqueta/>, por ejemplo: <li>Esto es HTML <br> en el que casi todo está permitido </li> <li>En XML, es <br/> más restrictivo.</li> Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Documentos XML bien formados... Un solo elemento raíz. Un documento bien formado, sólo puede tener un elemento inicial. Valores de atributos. Deben estar siempre entrecomillados, ya sea simple (‘) o doble (“), por ejemplo (incorrecto y correcto): <a HREF=http://www.ucol.mx/> <a HREF=“http://www.ucol.mx/”> Tipos de letras, espacios en blanco. XML es sensible a mayúsculas y minúsculas. Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Documentos XML bien formados... Nombrando cosas. No pueden iniciar con “xml”. Letras y rayas se pueden usar en cualquier parte, dígitos, guiones, puntos. Marcado y datos. Las construcciones con etiquetas, referencia de entidad y declaraciones se denominan “marcas”. Estas son las partes del documento que el procesador XML espera entender. Las marcas de un documento XML son las partes que empiezan conm un “<“ y acaban con un “>” o en referencias a la entidad, que empiezan con un “&” y terminan con un “;” Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Elementos... Un elemento puede contener más elementos, caracteres, o ambos, o ser elementos vacíos Un elemento con contenido, por ejemplo es: <nombre> Rodolfo Gallardo-Rosales </nombre> <aviso tipo=“emergencia” gravedad=“mortal”> Mantener la calma </aviso> Se inicia siempre con una <etiqueta> y se cierra con una </etiqueta> del mismo nombre. A diferencia de HTML las etiquetas se cierran siempre. Un elemento vacío, es el que no tiene contenido, por ejemplo: <identificador RFC=“GURR570905109” /> <linea-horizontal/> En HTML replanteado para que sea un documento XML, las etiquetas cambiarían un mínimo, por ejemplo: <hr/> o bien <img src=“images/logo.jpg”/> Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Atributos... Se usan para incorporar características o propiedades a los elementos de un documento. Por ejemplo: <chiste tipo=“gallegos” calidad=“bueno”> Aquí va el relato... </chiste> En una DTD se especifican los atributos que puede tener un elemento, así como sus valores. Pueden estar delimitados por comillas dobles o simples: <verdura clase=“zanahoria” longitud=‘15” y media’> <cita texto=“’Hola, Buenos días’, dijo él”> Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] Secciones CDATA Este tipo de construcción, permite especificar datos, utilizando cualquier caracter, especial o no. Ejemplo: <parrafo>Lo siguiente es un ejemplo de HTML.</html> <ejemplo> &lt;html> &lt;head>&lt;title>Rock &amp; Roll&lt;/title>&lt;/head> </ejemplo> <ejemplo> <![CDATA[ <html> <head><title>Rock & Roll</title></head> ] ]> </ejemplo> Estructura de un documento XML Curso -Taller “Introducción a XML” [email protected] 3. EJEMPLO Este ejemplo consiste en mostrar un documento de texto como un documento XML visto en explorador. Pongamos el siguiente texto en un documento Notepad. Evolución del XML Rodolfo R. Gallardo En este artículo se muestra la evolución histórica del XML Introducción Para entender la evolución del XML hay que retroceder a la época en la que los sistemas de informática eran todos propietarios de las empresas que los creaban. En realidad, las ideas de esta "nueva" tecnología son de sobra conocidas desde hace muchos años y llevan décadas dando buenos resultados en múltiples proyectos. Vamos a repasar algunas de estas ideas a continuación. Sistema de marcado Ejemplo Curso -Taller “Introducción a XML” [email protected] EJEMPLO Continúa ... El sistema de marcado de formato se basa en marcar el texto con instrucciones precisas que describen cada una de las condiciones que se desea aplicar a las partes del texto, tales como el tipo de letra o su estilo. A estas marcas se las denomina "etiquetas" (tags) o "códigos" y son un proceso válido si se trata de reproducir un documento con un formato determinado por una pantalla o impreso en papel. Aclaración Las normas necesarias para el desarrollo de XML van publicándose poco a poco, siendo necesaria la conexión al W3C para estar al día en este constante proceso de evolución. Última fecha de actualización: 12 de noviembre de 2002 Ejemplo Curso -Taller “Introducción a XML” [email protected] Marcado Lo importante es disponer de un documento que incluya varias entidades, como un : Título principal Evolución del XML El nombre del autor: Rodolfo R. Gallardo Una introducción: En este artículo se muestra la evolución histórica del XML Unos títulos de apartados: Introducción ...... Ejemplo Curso -Taller “Introducción a XML” [email protected] Marcado Sistema de marcado ...... Aclaración Unos párrafos: Para entender la evolución del XML ... En realidad, las ideas de esta "nueva" tecnología ... El sistema de marcado de formato se basa en ... A estas marcas se las denomina "etiquetas" ... Las normas necesarias para el desarrollo de ... Y un comentario final: Última fecha de actualización: 12 de noviembre de 2002 Ejemplo Curso -Taller “Introducción a XML” [email protected] Con esta base, las etiquetas XML adecuadas para marcar correctamente el documento podrían ser: <tituloP> (de Título Principal), <autor> <intro> (de Introducción), <tituloA> (de Título de Apartado), <p> (de Párrafo) y <comentarioF> (de Comentario Final). PRECAUCIÓN: En los nombres de las etiquetas se han eliminado los acentos para evitar cualquier posible incompatibilidad con alguno de los múltiples procesos implicados. Se puede utilizar el alfabeto español sin problemas, pero es una precaución similar a la costumbre de no incluir acentos ni espacios en los nombres de los archivos. Ejemplo Curso -Taller “Introducción a XML” [email protected] Después de incluirlas en sus lugares correspondientes y de añadir la declaración XML al principio y la etiqueta raíz <articulo>, el documento XML queda como el siguiente, <?xml version="1.0" encoding="ISO-8859-1"?> <articulo> <tituloP>Evolución del XML</tituloP> <autor>Rodolfo R. Gallardo</autor> <intro>En este artículo se muestra la evolución histórica del XML</intro> <tituloA>Introducción</tituloA> <p>Para entender la evolución del XML hay que retroceder a la época en la que los sistemas de informática eran todos propietarios de las empresas que los creaban.</p> Ejemplo Curso -Taller “Introducción a XML” [email protected] <p>En realidad, las ideas de esta "nueva" tecnología son de sobra conocidas desde hace muchos años y llevan décadas dando buenos resultados en múltiples proyectos. Vamos a repasar algunas de estas ideas a continuación.</p> <tituloA>Sistema de marcado</tituloA> <p>El sistema de marcado de formato se basa en marcar el texto con instrucciones precisas que describen cada una de las condiciones que se desea aplicar a las partes del texto, tales como el tipo de letra o su estilo.</p> <p>A estas marcas se las denomina "etiquetas" (tags) o "códigos" y son un proceso válido si se trata de reproducir un documento con un formato determinado por una pantalla o impreso en papel.</p> Ejemplo Curso -Taller “Introducción a XML” [email protected] <tituloA>Aclaración</tituloA> <p>Las normas necesarias para el desarrollo de XML van publicándose poco a poco, siendo necesaria la conexión al W3C para estar al día en este constante proceso de evolución.</p> <comentarioF>Última fecha de actualización: 12 de noviembre de 2002</comentarioF> </articulo> Ejemplo Curso -Taller “Introducción a XML” [email protected] 4. Hojas de Estilo en Cascada CSS2 es un lenguaje de hojas de estilo que permite a los autores y usuarios enlazar estilos de formato a documentos estructurados, como los documentos HTML y las aplicaciones XML. Los CSS son unas plantillas de descripciones del formato en el que se desea que aparezca el contenido de un determinado documento. Sus descripciones se archivan en documentos de texto sin formato, guardados con la extensión .css, necesaria para su identificación. Estas plantillas pueden ser enlazadas con uno o varios documentos, por lo que todo el trabajo realizado en cada plantilla, puede ser aprovechado por múltiples documentos, siendo ésta una de las principales ventajas de las CSS. Hojas de estilo en cascada Curso -Taller “Introducción a XML” [email protected] Hojas de Estilo en Cascada Otra de sus ventajas estriba en que cada vez que se modifica algún dato en cualquier plantilla CSS, automáticamente quedan actualizadas las presentaciones de todos los documentos enlazados con ella. La última gran ventaja de las plantillas CSS, es que permiten controlar el formato de un documento hasta niveles de detalle imposibles de definir con las etiquetas de formato HTML. Hojas de estilo en cascada Curso -Taller “Introducción a XML” [email protected] Propiedades importantes de las CSS P r op ied a d C o m e nt a rio D i s p l a y : I n d i c a c ó m o v is u a li z a r e l c o n t e n i d o . C u a n d o s u v a lo r e s b lo c k s e t ra ta c o m o u n b lo q u e y s e t e rm i n a c o n u n " p u n t o y a p a rt e " . I n d i c a e l t ip o d e le t ra q u e s e d e b e a p l ic a r a s u c o n te n id o . V e r d a n a F on t f a m i l y : e s u n a d e l a s m á s u ti li z a d a s e n la W e b . F on t I n d i c a e l t a m a ñ o d e le tr a q u e s e d e b e a p l ic a r a s u c o n te n id o . S i l a s iz e : u n id a d e s p t , e l ta m a ñ o s e fi ja e n " p u n to s ti p o g rá fi c o s " . I n d i c a e l c o lo r q u e s e d e s e a a p li c a r a s u c o n t e n id o . E n e s t e c a s o s e C ol o r: h a n u ti liz a d o d e s c ri p c io n e s p o r n o m b r e . T ex t I n d i c a la a l in e a c ió n d e l t e x to . L o s v a l o r e s l e f t, r ig h t y j u s t ify a li g n: s ig n ifi c a n " iz q u i e r d a " , " d e r e c h a " y " ju s t if ic a d o " . I n d i c a e l e s til o d e le tr a q u e h a y q u e a p lic a r a l t e x to . C o n e l v a l o r F on t s ty l e: i ta li c s e s e l e c c i o n a e l e s ti lo e n " c u rs iv a " . Hojas de estilo en cascada Curso -Taller “Introducción a XML” [email protected] Ejemplo de una Plantilla CSS La siguiente es una plantilla CSS en la que se utilizan las propiedades entes mencionadas. tituloP {display:block; font-size:20pt; font-family:Verdana; color:green; text-align:left} autor {display:block; font-size:12pt; font-family:Verdana; color:red; textalign:right} intro {display:block; font-family:Verdana; font-size:10pt; font-style:italic} tituloA {display:block; font-family:Arial; text-align:left; font-size:14pt; color:blue} comentarioF {display:block; font-style:italic; text-align:center; textsize:10pt} p {display:block; font-family:Verdana; font-size:10pt; text-align:justify } Hojas de estilo en cascada Curso -Taller “Introducción a XML” [email protected] XML con CSS Para verlo como una página web, hay que indicar al visualizador el sistema que deseamos aplicar a su formato. Esto se consigue fácilmente añadiendo una segunda línea, debajo de la declaración XML, que incluya una instrucción de procesamiento adecuada, que para enlazarlo con una plantilla CSS, será como la siguiente: <?xml-stylesheet href="articulo.css" type="text/css"?> En dicha instrucción de procesamiento se pueden distinguir claramente la llamada a un procesamiento XML a través de una hoja de estilo (xml stylesheet), la referencia a un archivo CSS que se denomina articulo.css (href="articulo.css” ) y la observación de que se trata de un tipo de documento CSS en forma de texto sin formato (type="text/css” ). Hojas de estilo en cascada Curso -Taller “Introducción a XML” [email protected] 5. DOCUMENTOS CSS Los documentos CSS, o plantillas CSS, son descripciones detalladas del formato de las entidades XML. Son muy similares a las plantillas CSS utilizadas en HTML, ya que utilizan la misma normativa, pero tienen algunas diferencias, justificadas por el distinto enfoque de las etiquetas HTML (prefijadas de antemano y con algunos criterios definidos) y XML (libres e indefinidas por completo). Las plantillas CSS pueden insertarse en el propio documento XML, pero lo más adecuado y recomendable es que formen parte de un archivo externo, con extensión .css, al que se hace referencia desde el documento principal. Documentos CSS Curso -Taller “Introducción a XML” [email protected] Este sistema recomendado tiene la gran ventaja de asegurar que, cada vez que se realice alguna modificación, todos los documentos XML relacionados, quedan inmediatamente actualizados. En el caso de estar incluidos en el mismo documento XML, cada modificación debe ser realizada en cada documento. Los documentos CSS son archivos de texto sin formato guardados con extensión .css. No es necesario que estén en la misma carpeta del documento principal, pudiendo ser referenciados desde dicho documento a través de una dirección absoluta, o mejor, relativa. IMPORTANTE: Si alguna descripción o regla del documento CSS contiene algún error o no existe alguna de las etiquetas del documento principal en la plantilla, el visualizador anula el modelo erróneo y utiliza los parámetros que tiene por defecto para mostrar la correspondiente información utilizando los datos correctos o con un formato simplificado. Documentos CSS Curso -Taller “Introducción a XML” [email protected] MEJORAS DEL DOCUMENTO XML-CSS Después de repasar las características más importantes de la especificación CSS2, estamos en disposición de mejorar mucho nuestro primer documento XML-CSS. Para realizar las mejoras no es preciso retocar el documento XML, debiendo hacer los cambios sólo en la plantilla CSS. Pudiéndose modificar el archivo articulo.css repetidamente para ver el efecto de dichas modificaciones en la presentación del documento XML. Documentos CSS Curso -Taller “Introducción a XML” [email protected] Una de las muchas variaciones posibles sería dejar la plantilla CSS como el código que sigue a continuación, que se ha guardado con el nombre articulo2.css. tituloP {display:block; width:600px; font-size:20pt; fontfamily:Verdana; color:green; border-bottom:double 4pt navy; text-align:left} width:600px es el largo de la linea border-bottom es el borde de abajo 4 puntos doble color navy autor {display:block; font-size:12pt; font-family:Verdana; color:red; text-align:right; margin-bottom:10pt} Documentos CSS Curso -Taller “Introducción a XML” [email protected] intro {display:block; margin:25px; font-family:Verdana; fontsize:10pt; font-style:italic} tituloA {display:block; font-family:Arial; margin-left:1cm; textalign:left; font-size:14pt; font-weight:bold; margin-bottom:10pt} comentarioF {display:block; margin:.2in; padding:5px; fontstyle:italic; border:outset 3pt; text-align:center; text-size:10pt; background-color:aqua} p {display:block; margin-bottom:10pt; font-family:Verdana,sansserif; font-size:10pt; text-align:justify; text-indent:1cm} Documentos CSS Curso -Taller “Introducción a XML” [email protected] Ahora vamos a incluir algunas correcciones. Se trata de mostrar las palabras que aparecen entre comillas (nueva, etiquetas y código) sin las comillas y con estilo de negrita (<n>), y ya puestos, vamos a ordenar que la palabra que figura entre paréntesis (tags), tenga un estilo de cursiva (<c>). Estos efectos se consiguen añadiendo al código CSS de articulo2.css las siguientes reglas: n { font-weight:bold; display:inline } c { font-style:italic; display:inline } Documentos CSS Curso -Taller “Introducción a XML” [email protected] Esta nueva variante de la plantilla CSS hay que guardarla como articulo3.css. También hay que modificar el documento XML en dos sentidos: uno, actualizando la línea que llama a la nueva plantilla CSS, y después, incluyendo las correspondientes etiquetas <n> y <c> en sus respectivos lugares. El código del nuevo documento XML, denominado ejemplo3.xml, se corresponde con: <?xml version="1.0" encoding="ISO-8859-1"?> <p>En realidad, las ideas de esta <n>nueva</n> tecnología son de sobra conocidas desde hace muchos años y llevan décadas dando buenos resultados en múltiples proyectos. Vamos a repasar algunas de estas ideas a continuación.</p> <p>A estas marcas se las denomina <n>etiquetas</n> (<c>tags</c>) o <n>códigos</n> y son un proceso válido si se . . . Documentos CSS Curso -Taller “Introducción a XML” [email protected] Comentario Oculto Para terminar de mejorar el proceso, habría que incluir algunos comentarios que ayudasen a leer los códigos XML y CSS más fácilmente. Ya hemos visto cómo incluir comentarios con los terminadores especiales para XML ( <!-- y --> ) y para CSS ( /* y */ ), pero también podemos aprovechar el valor none de la propiedad display para que cualquier elemento incluido en el documento XML sea ocultado en el momento de la presentación en la pantalla. Un ejemplo del documento XML con comentarios podría ser el que se muestra a continuación, localizado como ejemplo4.xml. Documentos CSS Curso -Taller “Introducción a XML” [email protected] <comentarioF>Última fecha de actualización: 12 de noviembre de 2002</comentarioF> <comentario_oculto>Este documento es una simplificación de otro más completo</comentario_oculto> </articulo> Y su respectiva modificación en la CSS p {display:block; font-family:Verdana,sans-serif; font-size:10pt; margin-bottom:10pt; text-align:justify; text-indent:1cm} n {display:inline; font-weight:bold} c {display:inline; font-style:italic} comentario_oculto {display:none} Documentos CSS Curso -Taller “Introducción a XML” [email protected] 6. La ayuda del HTML Mientras no se desarrolle completamente XML, hay que aprovechar las técnicas actualmente existentes para complementarlo, ya que XML no es un sustituto de HTML, sino más bien un complemento. Para poder seguir adelante, es imprescindible que comentemos un nuevo concepto: el espacio de nombre (namespace). En nuestro caso, vamos a disponer dos espacios de nombre, para incluir los elementos particulares del documento XML en uno de ellos y para poder utilizar las etiquetas del HTML en el otro espacio de nombre. De esta forma, podremos aprovechar las ventajas de los dos sistemas, y de paso, evitaremos colisiones entre etiquetas coincidentes, como es el caso de la <P> de HTML y de la <p> utilizada en nuestro ejemplo XML. La ayuda del HTML Curso -Taller “Introducción a XML” [email protected] Espacio de nombre Para poder utilizar las etiquetas HTML paralelamente, vamos a utilizar un espacio de nombre especial para que soporte sus elementos. La forma más sencilla para crear dicho espacio de nombre es incorporar el atributo xmlns:html="uri:html" a la etiqueta del elemento raíz, que en nuestro caso quedará como: ...... <articulo xmlns:html="uri:html"> ...... </articulo> La ayuda del HTML Curso -Taller “Introducción a XML” [email protected] Ejemplo Por ejemplo, si se desea que el nombre del autor sirva de enlace para que se le pueda mandar correo electrónico, hay que modificar el correspondiente código para que quede como: <autor> <html:a href="mailto:[email protected]">Rodolfo R. Gallardo</html:a> </autor> Cualquier otro componente HTML que se desee incorporar debe seguir la misma única regla: incluir el prefijo html: en el nombre de sus etiquetas. La ayuda del HTML Curso -Taller “Introducción a XML” [email protected] Ejemplo Por ejemplo, si se desea que el nombre del autor sirva de enlace para que se le pueda mandar correo electrónico, hay que modificar el correspondiente código para que quede como: <autor> <html:a href="mailto:[email protected]">Rodolfo R. Gallardo</html:a> </autor> Cualquier otro componente HTML que se desee incorporar debe seguir la misma única regla: incluir el prefijo html: en el nombre de sus etiquetas. La ayuda del HTML Curso -Taller “Introducción a XML” [email protected] 7. Document Type Definition (DTD) Crear una definición del tipo de documento, es como crear nuestro propio lenguaje de marcado, para una aplicación específica. Por ejemplo, podríamos crear un DTD que defina una tarjeta de visitas. Si un documento se ajusta a un DTD se denomina “válido”. Por ejemplo: <!DOCTYPE etiqueta [ <!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT calle (#PCDATA)> <!ELEMENT ciudad (#PCDATA)> <!ELEMENT pais (#PCDATA)> <!ELEMENT codigo (#PCDATA)> ]> <etiqueta> <nombre>Juan Pérez</nombre> <calle>c/ Daniel Larios, 111</calle> <ciudad>Colima</ciudad> <pais>México</pais> <codigo>28030</codigo> </etiqueta> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] La declaración del tipo de documento empieza en la primera línea y termina con “] >”. Las declaraciones DTD son las líneas que empiezan con “<!ELEMENT” y se denominan declaraciones de tipo elemento. En el ejemplo anterior, todas las declaraciones DTD que se definen “etiquetas” están dentro del documento, pero pueden definirse parcial o totalmente en otro documento. Por ejemplo: <?xml version=“1.0”?> <!DOCTYPE coche SYSTEM “http://www.ucol.mx/dtds/coche.dtd”> <coche> <modelo> . . . </modelo> ... </coche> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Asociamos la DTD respecto de la cual construimos el documento. <?xml version="1.0" encoding="UTF-8"?> En este ejemplo va implícita en el propio documento XML, aunque también puede hacerse externa al documento e incluso de una forma mixta. Si la hubiésemos escrito en un fichero "ejemplo.dtd" tendríamos que referenciarla de la siguiente manera: <!DOCTYPE documento SYSTEM "ejemplo.dtd"> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Entidades Predefinidas En XML se definen 5 entidades predefinidas para representar caracteres especiales y que no se presenten como marcado en el procesador . Es decir, que así podemos usar el carácter “<“ sin que se interprete como el comienzo de una etiqueta XML. Entidad Carácter &amp; & &alt; < &gt; > &apos; ‘ &quot; “ Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Comentarios A veces es conveniente insertar comentarios en el documento, que sean ignorados por el procesado de la información y las reproducciones del documento. Los comentarios tienen el mismo formato que el HTML. Ejemplo: <?xml version=“1.0”?> <!--Aquí va el tipo de documento--> <!DOCTYPE EJEMPLO [ <!--Esto es un comentario--> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Por ejemplo: <!ELEMENT receta (titulo, ingredientes, procedimiento)> Siguiendo la definición de elemento anterior, este ejemplo de documento XML sería válido: <receta> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta> Pero no este: <receta> <parrafo>Esto es un párrafo</parrafo> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] La especificación de contenido puede ser de cuatro tipos: EMPTY Puede no tener contenido. Suele usarse para los atributos. <!ELEMENT salto-de-pagina EMPTY> ANY Puede tener cualquier contenido. <!ELEMENT batiburrillo ANY> Mixed tanto de PCDATA como de enfasis <!ELEMENT enfasis (#PCDATA)> <!ELEMENT parrafo (#PCDATA|enfasis)*> Element Sólo puede contener sub-elementos especificados en la especificación de contenido. <!ELEMENT mensaje (remite, destinatario, texto)> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Declaraciones de lista de atributos Los atributos permiten añadir información adicional a los elementos de un documento. La principal diferencia entre los elementos y los atributos, es que los atributos no pueden contener sub-atributos. Se usan para añadir información corta, sencilla y desestructurada. <mensaje prioridad="urgente"> <de>Juan Perez</de> <a>Hans van Parijs</a> <texto idioma="holandes"> Hallo Hans, hoe gaat het? ... </texto> </mensaje> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] En el ejemplo anterior, para declarar la lista de atributo de los elementos <mensaje> y <texto> haríamos lo siguiente: <!ELEMENT mensaje (de, a, texto)> <!ATTLIST mensaje prioridad (normal | urgente) normal> <!ELEMENT texto (#PCDATA)> <!ATTLIST texto idioma CDATA #REQUIRED> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Tipos de atributos Atributos CDATA y NMTOKEN Los atributos CDATA (Character DATA)sonlos más sencillos, y pueden contener casi cualquier cosa. Los atributos NMTOKEN (NaMe TOKEN) son parecidos, pero sólo aceptan los caracteres válidos para nombrar cosas (letras, números, puntos, guiones, subrayados y los dos puntos). <!ATTLIST mensaje fecha CDATA #REQUIRED> <mensaje fecha="12 de noviembre de 2002"> <!ATTLIST mensaje fecha NMTOKEN #REQUIRED> <mensaje fecha="12-11-2002"> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Declaración de entidades XML hace referencia a objetos (ficheros, páginas web, imágenes, cualquier cosa) que no deben ser analizados sintácticamente según las reglas de XML, mediante el uso de entidades. Se declaran en la DTD mediante el uso de "<!ENTITY" Una entidad puede no ser más que una abreviatura que se utiliza como una forma corta de algunos textos. Al usar una referencia a esta entidad, el analizador sintáctico reemplaza la referencia con su contenido. En otras ocasiones es una referencia a un objeto externo o local. Las entidades pueden ser: •Internas o Externas •Analizadas o No analizadas •Generales o Párametro Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Entidades generales internas Son las más sencillas. Son básicamente abreviaturas definidas en la sección de la DTD del documento XML. Son siempre entidades analizadas, es decir, una vez reemplazada la referencia a la entidad por su contenido, pasa a ser parte del documento XML y como tal, es analizada por el procesador XML. <!DOCTYPE texto [ <!ENTITY alf "Alien Life From"> ]> <texto><titulo>Un día en la vida de un &alf</titulo></texto> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Ejemplos de DTD Un ejemplo de DTD que puede servir para resumir todo lo visto hasta ahora podría ser un DTD que nos defina un lenguaje de marcado para una base de datos de personas con direcciones email. El archivo DIRECTORIO.DTD podría ser algo así: <?xml encoding="UTF-8"?> <!ELEMENT listin (persona)+> <!ELEMENT persona (nombre, email*, relacion?)> <!ATTLIST persona id ID #REQUIRED> <!ATTLIST persona sexo (hombre | mujer) #IMPLIED> <!ELEMENT nombre (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT relacion EMPTY> <!ATTLIST relacion amigo-de IDREFS #IMPLIED enemigo-de IDREFS #IMPLIED> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] Basándonos en este DTD, podríamos escribir nuestro primer directorio en XML de la siguiente manera: <?xml version="1.0"?> <!DOCTYPE directorio SYSTEM "directorio.dtd"> <directorio> <persona sexo="hombre" id="ricky"> <nombre>Ricky Martin</nombre> <email>[email protected]</email> <relacion amigo-de="laetitia"/> </persona> <persona sexo="mujer" id="leatitia"> <nombre>Laetitia Casta</nombre> <email>[email protected]</email> </persona> </directorio> Document Type Definition (DTD) Curso -Taller “Introducción a XML” [email protected] 8. Schemas XML Un "schema XML" es algo similar a un DTD, es decir, que define qué elementos puede contener un documento XML, cómo están organizados, y que atributos y de qué tipo pueden tener sus elementos. La ventaja de los schemas con respecto a los DTDs son: •Usan sintaxis de XML, al contrario que los DTDs. •Permiten especificar los tipos de datos. •Son extensibles. Por ejemplo, un schema nos permite definir el tipo del contenido de un elemento o de un atributo, y especificar si debes ser un número entero, o una cadena de texto, o una fecha, etc. Los DTDs no nos permiten hacer estas cosas. Schemas XML Curso -Taller “Introducción a XML” [email protected] Veamos un ejemplo de un documento XML, y su schema correspondiente: <documento xmlns="x-schema:personaSchema.xml"> <persona id="fulano"> <nombre>Fulano Menganez</nombre> </persona> </documento> Como podemos ver en el documento XML anterior, se hace referencia a un espacio de nombres (namespace) llamado "x-schema:personaSchema.xml". Es decir, le estamos diciendo al analizador sintáctico XML (parser) que valide el documento contra el schema "personaSchema.xml". Schemas XML Curso -Taller “Introducción a XML” [email protected] El schema sería algo parecido a esto: <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <AttributeType name='id' dt:type='string' required='yes'/> <ElementType name='nombre' content='textOnly'/> <ElementType name='persona' content='mixed'> <attrubyte type='id'/> <element type='nombre'/> </ElementType> <ElementType name='documento' content='eltOnly'> <element type='persona'/> </ElementType> </Schema> El primer elemento del schema define dos espacios de nombre. El primero "xml-data" le dice al analizador que esto es un schema y no otro documento XML cualquiera. El segundo "datatypes" nos permite definir el tipo de elementos y atributos utilizando el prefijo "dt". Schemas XML Curso -Taller “Introducción a XML” [email protected] 9. Extended Style Language (XSL) El XSL es un lenguaje que nos permite definir una presentación o formato para un documento XML. Un mismo documento XML puede tener varias hojas de estilo XSL que lo muestren en diferentes formatos (HTML, PDF, RTF, VRML, PostScript, sonido, etc.) La aplicación de una hoja de estilos XSL a un documento XML puede ocurrir tanto en el origen (por ejemplo, un servlet que convierta de XML a HTML para que sea mostrado a un navegador conectado a un servidor web), o en el mismo navegador (como en el caso del MS IE5, y en breve, Netscape 5). Básicamente, XSL es un lenguaje que define una transformación entre un documento XML de entrada, y otro documento XML de salida. Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Una hoja de estilo XSL es una serie de reglas que determina cómo va a ocurrir la transformación. Cada regla se compone de un patrón (pattern) y una acción o plantilla (template). De este modo, cada regla afecta a uno o varios elementos del documento XML. El efecto de las reglas es recursivo, para que un elemento situado dentro de otro elemento puede ser también transformado. Las hojas de estilo tiene una regla raiz que, además de ser procesada, llama a las reglas adecuadas para los elementos hijos. Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Vamos a ver un ejemplo de todo esto: <libro> <titulo>Un título cualquiera</titulo> <capitulos> <capitulo> <titulo>Capítulo 1</titulo> <parrafo>...</parrafo> <parrafo>...</parrafo> </capitulo> <capitulo> <titulo>Capítulo 2</titulo> ... </capitulo> </capitulos> </libro> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Queremos convertir este documento XML en HTML bien formado, de la siguiente manera: <HTML> <HEAD> <TITLE>Un título cualquiera</TITLE> </HEAD> <BODY> <H1>Un título cualquiera</H1> <HR> <H2>Capítulo 1</H2> <P>...</P> <P>...</P> <HR> <H2>Capítulo 2</H2> <P>...</P> </BODY> </HTML> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] La hoja de estilo XSL necesaria sería algo parecido a lo siguiente: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="libro"> <HTML><HEAD> <TITLE><xsl:process select="titulo"/></TITLE> </HEAD><BODY> <H1><xsl:process select="titulo"/></H1> <xsl:process select="capitulos"/> </BODY></HTML> </xsl:template><xsl:template match="capitulos"> <xsl:process select="capitulo”/></xsl:template> <xsl:template match="capitulo"> <H2><xsl:process select="titulo"/></H2> <xsl:process select="parrafo"/></xsl:template> <xsl:template match="parrafo"><P><xsl:process-children/></P> </xsl:template></xsl:stylesheet> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Veamos un ejemplo muy sencillo de un pequeño lenguaje de etiquetas para definir documentos FAQ: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE FAQ SYSTEM "FAQ.DTD"> <FAQ><INFO> <TITULO> WINDOWS98? SOLO SI ME OBLIGAN! </TITULO> <AUTOR> Fernando Damián Lorenzo García </AUTOR> <EMAIL> [email protected] </EMAIL> <VERSION> 1.0 </VERSION> <FECHA> 20.MAYO.99 </FECHA> </INFO><PART NO="1"> <Q NO="1"> <QTEXT>¿Por qué tengo que instalar W95?</QTEXT> <A> A mi también me parece una buena pregunta.</A> </Q><Q NO="2"> <QTEXT>Y de que me vale?</QTEXT> <A>Otra ingeniosa pregunta.</A> </Q></PART> </FAQ> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Para el lenguaje de marcas mostrado arriba tenemos el siguiente DTD: <!ELEMENT FAQ (INFO, PART+)> <!ELEMENT INFO (TITULO, AUTOR, EMAIL?, VERSION?, FECHA?)> <!ELEMENT TITULO (#PCDATA)> <!ELEMENT AUTOR (#PCDATA)> <!ELEMENT EMAIL (#PCDATA)> <!ELEMENT VERSION (#PCDATA)> <!ELEMENT FECHA (#PCDATA)> <!ELEMENT PART (Q+)> <!ELEMENT Q (QTEXT, A)> <!ELEMENT QTEXT (#PCDATA)> <!ELEMENT A (#PCDATA)> <!ATTLIST PART NO CDATA #IMPLIED TITLE CDATA #IMPLIED> <!ATTLIST Q NO CDATA #IMPLIED> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Veamos ahora un ejemplo de código XML para una librería virtual: <?xml version="1.0"?> <libro> <titulo> Cien años de soledad </titulo> <disponible tiempo="24" unidad="horas"/> <autor> Gabriel García Márquez </autor> <formato> Rústica </formato> <publicacion>1967 </publicacion> <precio cantidad="9.99" moneda="euro"/> <descuento cantidad="5"/> <enlacelibro href="/exec/ISBN/84-473-0619-4"/> </libro> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Su DTD correspondiente: <!ELEMENT autor ( #PCDATA ) > <!ELEMENT descuento EMPTY > <!ATTLIST descuento cantidad CDATA #REQUIRED > <!ELEMENT disponible EMPTY > <!ATTLIST disponible tiempo CDATA #REQUIRED > <!ATTLIST disponible unidad CDATA #REQUIRED > <!ELEMENT enlacelibro EMPTY > <!ATTLIST enlacelibro href CDATA #REQUIRED > <!ELEMENT formato ( #PCDATA ) > <!ELEMENT libro ( titulo | disponible | autor | formato | publicacion | precio | descuento | enlacelibro )* > <!ELEMENT precio EMPTY > <!ATTLIST precio cantidad CDATA #REQUIRED > <!ATTLIST precio moneda CDATA #REQUIRED > <!ELEMENT publicacion ( #PCDATA ) > <!ELEMENT titulo ( #PCDATA ) > Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] 10. HTML y XML En algunas ocasiones, cuando no se conocen bien las posibilidades del HTML y del XML, suele surgir la cuestión: si ya existe un potente y conocido HTML, ¿para qué hay que utilizar XML? La respuesta está en que no son sistemas incompatibles ni excluyentes. Cada uno se debe utilizar donde mejor se aproveche. HTML es muy bueno en dar formato a los documentos hipertexto, por lo tanto, debe utilizarse en dichos documentos sin mayor problema. XML tiene mejor comportamiento con documentos complejos interactivos, así que, en ese sector debe utilizarse. Veamos un sencillo ejemplo. Supongamos que hay que diseñar una página web que incluya información sobre tres libros. HTML y XML Curso -Taller “Introducción a XML” [email protected] A través del código HTML se puede crear una tabla como la siguiente: <TABLE> <TR> <TD>Título</TD><TD>Autor</TD><TD>Precio</TD> </TR> <TR> <TD>AutoSketch</TD><TD>Ramón Montero</TD><TD>2.500</TD> </TR> <TR> <TD>Windows 98</TD><TD>Jaime de Yraolagoitia</TD><TD>3.250</TD> </TR> <TR> <TD>Web Graphics</TD><TD>Ron Wodaski</TD><TD>8.975</TD> </TR> </TABLE> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] La misma información, puesta en formato XML podría quedar como se indica en el siguiente código: <LIBROS> <LIBRO> <TITULO>AutoSketch</TITULO> <AUTOR>Ramón Montero</AUTOR> <PRECIO>2.500</PRECIO> </LIBRO> <LIBRO> <TITULO>Windows 98</TITULO> <AUTOR>Jaime de Yraolagoitia</AUTOR> <PRECIO>3.250</PRECIO> </LIBRO> <LIBRO> <TITULO>Web Graphics</TITULO> <AUTOR>Ron Wodaski</AUTOR> <PRECIO>8.975</PRECIO> </LIBRO> </LIBROS> Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] Ante estos ejemplos, el usuario que solo desea publicar estos datos en una página web por Internet, sería más lógico que se decidiese por el código HTML, pero el diseñador que utiliza estos datos para hacer cálculos de precios, o selecciones de obras de autores, por ejemplo, debe optar por XML sin dudarlo. La actual normativa de HTML se encuentra en su versión 4.01 desde el 24 de diciembre de 1999, tal como se puede observar en la figura 00.06. Se puede ver en la sede del W3C, en la dirección: www.w3.org/TR/html4/. Extended Style Language (XSL) Curso -Taller “Introducción a XML” [email protected] 11. Base de Datos XML <?xml version="1.0" encoding="ISO-8859-1"?> <alumnos> <alumno> <numero>1</numero> <nombre>Ramón</nombre> <apellido>Primero</apellido> <nivel>Iniciación</nivel> <curso>XML</curso> </alumno> <alumno> <numero>2</numero> <nombre>Jaime</nombre> <apellido>Segundo</apellido> <nivel>Avanzado</nivel> <curso>Windows 2000</curso> </alumno> <alumno> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <numero>3</numero> <nombre>José Manuel</nombre> <apellido>Tercero</apellido> <nivel>Básico</nivel> <curso>HTML</curso> </alumno> <alumno> <numero>4</numero> <nombre>María Teresa</nombre> <apellido>Cuarta</apellido> <edad></edad> <nivel>Medio</nivel> <curso>UNIX</curso> </alumno> </alumnos> Guardar como alumnos.xml Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Para aprovechar la información del documento externo XML alumnos.xml, hay que modificar el código HTML anterior para dejarlo como el que sigue a continuación, que habrá que guardar como alumnos.html. <html> <head><title>Lista de alumnos 1</title></head> <body> <xml id="ListaAlumnos1" src="alumnos.xml"></xml> <table datasrc="#ListaAlumnos1" border="1"> <caption>LISTA DE ALUMNOS</caption> <thead> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <th>Número</th> <th>Nombre</th> <th>Apellido</th> <th>Curso</th> <th>Nivel</th> </thead> <tbody><tr> <td><span datafld="numero"></span></td> <td><span datafld="nombre"></span></td> <td><span datafld="apellido"></span></td> <td><span datafld="curso"></span></td> <td><span datafld="nivel"></span></td> </tr></tbody> </table> </body></html> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] En el código HTML anterior se puede observar que la parte que no interfiere con los datos del documento XML se trata como cualquier código HTML típico. También se puede ver que se ha añadido una línea con la etiqueta <xml>, ajustada para enlazar con alumnos.xml y conteniendo el identificador ListaAlumnos1. Pero también se han utilizado dos nuevas entidades: datasrc (data-source, origen de datos) y datafld (data-field, campo de datos). DATASRC aparece como atributo específico de <table> en la que se hace una llamada a los datos existentes ListaAlumnos1 anteponiéndole el símbolo del "signo de número" # (<table datasrc="#ListaAlumnos1">). DATAFLD es otro atributo de la etiqueta HTML <span> que permite hacer una llamada a "cada uno de los datos" del campo de datos (elemento XML) al que hace referencia (<span datafld="elemento_XML"></span>). En este ejemplo, datasrc y datafld son atributos de elementos de una tabla, porque es el sistema de presentación HTML elegido, pero pueden añadirse a otras etiquetas HTML. Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Gestión individual de datos XML. La presentación de datos a través de tablas organizadas en filas y columnas es muy práctica en muchos casos, pero en otros, no es el método ideal. Tales son los casos en los que la información de algunas celdas precisa de textos largos, o cuando el número de columnas es demasiado grande para entrar en una pantalla, o también, cuando el número de filas resultante es tan extenso que la visualización de la tabla exige varios desplazamientos verticales. La solución en estos casos pasa por el control de los datos en un formato individualizado, de forma que el usuario pueda acceder a la información de cada elemento principal en modo secuencial, o sea, de uno en uno. Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <html> <head>......</head> <body> <xml id="ListaAlumnos2" src="alumnos2.xml"></xml> <center> <h2>LISTADO DE ALUMNOS del Centro "TODO-WEB"</h2> <h3>RELACIÓN DE ALUMNOS</h3> </center> <p>Número: <b><span datasrc="#ListaAlumnos2" datafld="numero"></span></b></p> <p>Alumno: <b><span datasrc="#ListaAlumnos2" datafld="nombre"></span>&nbsp; <span datasrc="#ListaAlumnos2" datafld="apellido"></span></b></p> <p>Edad: <b><span datasrc="#ListaAlumnos2" datafld="edad"></span></b>&nbsp; Sexo: <b><span datasrc="#ListaAlumnos2" datafld="sexo"></span></b></p> <hr width="500" align="left"> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <p>Curso: <b><span datasrc="#ListaAlumnos2" datafld="curso"></span></b></p> <p>Nivel: <b><span datasrc="#ListaAlumnos2" datafld="nivel"></span></b></p> <p>Observaciones: <b><span datasrc="#ListaAlumnos2" datafld="observaciones"></span></b></p> <hr width="500" align="left"><center> <button onclick="ListaAlumnos2.recordset.MoveFirst()" title="Principio">&nbsp;&nbsp;|&lt;&lt;&nbsp;&nbsp; </button>&nbsp; <button onclick="if (! ListaAlumnos2.recordset.BOF) ListaAlumnos2.recordset.MovePrevious()" title="Anterior"> &nbsp;&lt;&nbsp;</button>&nbsp; <button onclick="if (! ListaAlumnos2.recordset.EOF) ListaAlumnos2.recordset.MoveNext()" title="Siguiente"> &nbsp;&gt;&nbsp;</button>&nbsp; <button onclick="ListaAlumnos2.recordset.MoveLast()" title="Final"> &nbsp;&nbsp;&gt;&gt;|&nbsp;&nbsp; </button> </center></body></html> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Creando el archivo alumnos2.xml como sigue: <?xml version="1.0" encoding="ISO-8859-1"?> <alumnos> <alumno> <numero>1</numero> <nombre>Ramón</nombre> <apellido>Primero</apellido> <nivel>Iniciación</nivel> <curso>XML</curso> <observaciones>Buen estudiante</observaciones> <edad>20</edad> <sexo>H</sexo> </alumno> <alumno> <numero>2</numero> <nombre>Jaime</nombre> <apellido>Segundo</apellido> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <nivel>Avanzado</nivel> <curso>Windows 2000</curso> <observaciones>Parte de la Banda Escolar</observaciones> <edad>18</edad> <sexo>H</sexo> </alumno> <alumno> <numero>3</numero> <nombre>José Manuel</nombre> <apellido>Tercero</apellido> <nivel>Básico</nivel> <curso>HTML</curso> <observaciones>Falta mucho a clase</observaciones> <edad>21</edad> <sexo>H</sexo> </alumno> <alumno> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <numero>4</numero> <nombre>María Teresa</nombre> <apellido>Cuarta</apellido> <nivel>Medio</nivel> <curso>UNIX</curso> <observaciones>Es parte del equipo de atletismo</observaciones> <edad>32</edad> <sexo>M</sexo> </alumno> </alumnos> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Modificando una vez más, para mejor presentación: <html> <head>......</head> <body> <xml id="ListaAlumnos3" src="alumnos3.xml"></xml> <center> <h2>LISTADO DE ALUMNOS del Centro "TODO-WEB"</h2> <h3>RELACIÓN DE ALUMNOS</h3> </center> <p>Número: <b><span datasrc="#ListaAlumnos3" datafld="numero"></span></b></p> <p>Nombre: <input type="text" datasrc="#ListaAlumnos3" datafld="nombre" size="25"></p> <p>Apellido: <input type="text" datasrc="#ListaAlumnos3" datafld="apellido" size="25"> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <p>Edad: <b><span datasrc="#ListaAlumnos3" datafld="edad"> </span></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp; Sexo: <input type="radio" datasrc="#ListaAlumnos3" datafld="sexo" value="H">Hombre <input type="radio" datasrc="#ListaAlumnos3" datafld="sexo" value="M">Mujer</p> <hr width="500" align="left"> <p>Curso: <select datasrc="#ListaAlumnos3" datafld="curso" size="1"> <option value="HTML">HTML <option value="UNIX">UNIX <option value="Windows 2000">Windows 2000 <option value="XML">XML </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Nivel: <select datasrc="#ListaAlumnos3" datafld="nivel" size="1"> <option value="Iniciación">Iniciación <option value="Básico">Básico <option value="Medio">Medio <option value="Avanzado">Avanzado </select><p> <p>Observaciones: <b><span datasrc="#ListaAlumnos10" datafld="observaciones"></span></b></p> <hr width="500" align="left"> <center> <button onclick="ListaAlumnos3.recordset.MoveFirst()" title="Principio"> &nbsp;&nbsp;|&lt;&lt;&nbsp;&nbsp; </button>&nbsp; <button onclick="if (! ListaAlumnos3.recordset.BOF) ListaAlumnos3.recordset.MovePrevious()" title="Anterior"> &nbsp;&lt;&nbsp; </button>&nbsp; Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <button onclick="if (! ListaAlumnos3.recordset.EOF) ListaAlumnos3.recordset.MoveNext()" title="Siguiente"> &nbsp;&gt;&nbsp; </button>&nbsp; <button onclick="ListaAlumnos3.recordset.MoveLast()" title="Final"> &nbsp;&nbsp;&gt;&gt;|&nbsp;&nbsp; </button></center> </body> </html> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Cartas personalizadas. En primer lugar vamos a utilizar un documento XML denominado agenda.xml como base de datos para generar automáticamente cartas personalizadas. Este documento puede ser el siguiente: <?xml version="1.0" encoding="ISO-8859-1"?> <agenda> <cliente> <nombre>Ana</nombre> <apellidos>López García</apellidos> <dirección>c/ Una, 11</dirección> <tfno>111-11-11</tfno> <empresa>UNA.COM</empresa> <sector>Farmacia</sector> <sexo>a</sexo> </cliente> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <cliente> <nombre>José</nombre> <apellidos>Pérez González</apellidos> <dirección>c/ Dos, 22</dirección> <tfno>222-22-22</tfno> <empresa>DOS.NET</empresa> <sector>Turismo</sector> <sexo>o</sexo> </cliente> <cliente> <nombre>Juan</nombre> <apellidos>Gómez Sánchez</apellidos> <dirección>c/ Tres, 33</dirección> <tfno>333-33-33</tfno> <empresa>TRES.ORG</empresa> <sector>Educación</sector> <sexo>o</sexo> </cliente> </agenda> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] El código HTML capaz de generar las cartas personalizadas para cada uno de los clientes, puede ser alguno similar a: <html> <head> <title>Cartas</title> </head> <body> <xml id="agenda" src="agenda.xml"></xml> <table datasrc="#agenda" border="0"> <tr><td> <p><span datafld="apellidos"></span>, <span datafld="nombre"></span><br> <span datafld="empresa"></span><br> <span datafld="dirección"></span></p> <br> <p>Estimad<span datafld="sexo"></span> <span datafld="nombre"></span>:</p> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <p>Como representante de <b><span datafld="empresa"></span></b>, quedas invitad<span datafld="sexo"></span> a la conferencia sobre <i><span datafld="sector"></span></i>&nbsp;que se celebrará el próximo 30 de febrero de 2005 en el Hotel Pi.</p> <p>Un saludo:</p> <br><br><br> <p align="right">Rodolfo Gallardo-Rosales</p> <hr> </td></tr> </table> </body> </html> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Selección de datos El tercer ejemplo nos muestra un proceso de selección de datos, por el que cualquier usuario puede indicar una consulta sobre el tema en el que tiene especial interés, mostrándose seguidamente la información adecuada a la consulta. Para ver un ejemplo práctico, vamos a utilizar una versión modificada de nuestro anterior archivo de agenda, que debe quedar como se muestra a continuación, guardado con el nombre de agenda2.xml: <?xml version="1.0" encoding="ISO-8859-1"?> <agenda> <cliente> <nombre>Ana</nombre> <apellidos>López García</apellidos> <dirección>c/ Una, 11</dirección> <tfno>111-11-11</tfno> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <empresa>UNA.COM</empresa> <sector>Farmacia</sector> </cliente> <cliente> <nombre>José</nombre> <apellidos>Pérez Lago</apellidos> <dirección>c/ Dos, 22</dirección> <tfno>222-22-22</tfno> <empresa>DOS.NET</empresa> <sector>Turismo</sector> </cliente> <cliente> <nombre>Juan</nombre> <apellidos>Gómez Mar</apellidos> <dirección>c/ Tres, 33</dirección> <tfno>333-33-33</tfno> <empresa>TRES.ORG</empresa> <sector>Educación</sector> </cliente> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <cliente> <nombre>María</nombre> <apellidos>Rodríguez Río</apellidos> <dirección>c/ Cuatro, 44</dirección> <tfno>444-44-44</tfno> <empresa>CUATRO.ES</empresa> <sector>Educación</sector> </cliente> <cliente> <nombre>Pedro</nombre> <apellidos>González Monte</apellidos> <dirección>c/ Cinco, 55</dirección> <tfno>555-55-55</tfno> <empresa>CINCO.DE</empresa> <sector>Turismo</sector> </cliente> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <cliente> <nombre>Francisco</nombre> <apellidos>Sánchez Cielo</apellidos> <dirección>c/ Seis, 66</dirección> <tfno>666-66-66</tfno> <empresa>SEIS.FR</empresa> <sector>Educación</sector> </cliente> </agenda> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Ahora hay que crear un código HTML capaz de realizar búsquedas por el campo <sector>, de forma que cualquier persona pueda localizar a todos los clientes de un determinado sector, y ver sus datos. Este proceso exige recurrir a código JavaScript (u otro lenguaje similar), dando lugar a un archivo con nombre agenda2.htm, que puede ser como: <html> <head> <title>Búsqueda en agenda</title> </head> <body> <xml id="agenda2" src="agenda2.xml"></xml> <h2>Buscar datos en agenda por sectores comerciales:</h2> <br> <p>Seleccionar el sector adecuado: <select id="Texto" name="Texto" size="1" onclick='Datos()'> <option>SECTORES:</option> <option>---------</option> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <option value="Educación">Educación</option> <option value="Farmacia">Farmacia</option> <option value="Turismo">Turismo</option> </select> </p> <hr> <p>Datos coincidentes con la búsqueda:</p> <div id=Resultado></div> <script language="JavaScript"> function Datos () { palabra = Texto.value; if (palabra == "") { Resultado.innerHTML = "<font color='red'>Seleccionar un sector comercial</font>"; return; } Base de Datos XML Curso -Taller “Introducción a XML” [email protected] agenda2.recordset.moveFirst(); ResultadoHTML = ""; while (!agenda2.recordset.EOF) { CadenaTexto = agenda2.recordset("sector").value; if (CadenaTexto.indexOf(palabra) >=0) ResultadoHTML += "<p><b>" + agenda2.recordset("apellidos") + "</b>, " + agenda2.recordset("nombre") + "<br><font color='blue'>Empresa:</font> " + agenda2.recordset("empresa") + "<br><font color='blue'>Tfno:</font> " + agenda2.recordset("tfno") + "<br><font color='blue'>Dirección:</font> " + agenda2.recordset("dirección") + "<br><font color='blue'>Sector:</font> " + agenda2.recordset("sector") + "<br><hr></p>"; Base de Datos XML Curso -Taller “Introducción a XML” [email protected] agenda2.recordset.moveNext(); } if (ResultadoHTML == "") Resultado.innerHTML = "<font color='red'>No se ha encontrado ningún cliente en este sector</font>"; else Resultado.innerHTML = ResultadoHTML; } </script> </body> </html> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] <cliente> <nombre>María</nombre> <apellidos>Rodríguez Río</apellidos> <dirección>c/ Cuatro, 44</dirección> <tfno>444-44-44</tfno> <empresa>CUATRO.ES</empresa> <sector>Educación</sector> </cliente> <cliente> <nombre>Pedro</nombre> <apellidos>González Monte</apellidos> <dirección>c/ Cinco, 55</dirección> <tfno>555-55-55</tfno> <empresa>CINCO.DE</empresa> <sector>Turismo</sector> </cliente> Base de Datos XML Curso -Taller “Introducción a XML” [email protected] Para saber más... Se recomienda visitar los siguientes recursos: http://www.ibium.com/alf/xml/index.asp http://www.ulpgc.es/otros/tutoriales/xml/ http://www.teleprogramadores.com/ http://gopher.sil.org/sgml/sgml.html Contacto: [email protected] Para saber más Curso -Taller “Introducción a XML”