Manual xml
Upcoming SlideShare
Loading in...5
×
 

Manual xml

on

  • 4,038 views

 

Statistics

Views

Total Views
4,038
Views on SlideShare
4,027
Embed Views
11

Actions

Likes
0
Downloads
128
Comments
0

1 Embed 11

https://twimg0-a.akamaihd.net 11

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Manual xml Manual xml Presentation Transcript

    • introducción a ¡ -XHTML ! páginas web estándar ~ W3C nuevos estándares, nuevas reglas -XSL transformaciones de XML en HTML DTD validación de XML4.50 EURNúmero 8: Introducción a XML
    • ,I 1, 11, i I ¡ Introducción J ( Q XML I Prefacio: Bienvenido al curso sobre XML .•••••••.••• 3 lección 9: sobre espacios de nombres e Islas de datos •......•....•.•...•.•......•...•..•.••...•.........•..•...•..••. 47 Asr empezó todo: SGML como lenguaJe de descripción de documentos •..•••.••..•..•.•..........•.4 lección 10: HTML vive: XHTML como nueva versión de HTML ••.•.••.•.•...•••••.•••••.•••.••.•••.•••••••• 51 fTML como lenguaJe de descripción de páginas para el Web ••••.••.••••••.••.•••••••..•.•...•..•...•..•..•••••...• 5 SECCiÓN PRÁCTICA paréntesis, espacios de D: nombres, XHTML ....••..••.•..•••...•.•.•••.•••••••••.•...• 55 Caracterlstlcas de XML como Idioma del futuro •.7 lección 11: dar formato a archivos XML: EJemplos de aplicación: XML en la práctica 11 Introducción a CSS ....•......•......•.••...•...•••..••.••.• 56 , , Resumen: caracterrstlcas de XML •.......••..•....•••.•.16 Lección 12: crear una lista de productos con CSS59 SECCIÓN PRÁCTlCAA: reguntas generales sobre la p Lección 13: más posibilidades con XSL o XSL T 61 Introducción ......••.•..•.••...••.•........•...••...••••••.•..••17 Lección 14: XSLT para profesionales: organizar y lección 1: IBlenvenldo XMLI Primeros Intentos clasificar ...................................•.........•..•.••..••.. 65 prácticos •..••••••..•••.•.•••.•.•...••••••.•.....•................. 8 1 SeCCióNPRÁCTICA eJercicios sobre CSS y XSLT 68 E: Uso de caracteres especiales y entidades 20 lección 15: Introducción al concepto de esquema lección 2: estructura arbórea de XML con una XML •..•.•.•.....•..•••.••.....•..•...•..•..•......••.•...••••..•.•..69 lista de tftulos .•••••.........••.••..•..•••..•..••............•..22 lección 16: hlpervrnculos con XUnk .••....••..•••••.•73 ~I ! lección 3: crear una DTO para la lista de Ululos 24 Informarse, aprender, consultar: recursos sobre 1 I lección 4: comprobar la validez de un documento XML •.............•..•...••.....................•..........•.••...•.• 74 XML •••......•...•..••.•..•...•.....•...................•..•.......... 29. 11 , SeCCIÓN PRÁCTICA eJercicios sobre el esquema y F: SeccIÓNPRÁCTICA primeros eJercicios con XML32 B: los hlpervrnculos •.••..•..•••.•..•••••.•••..•....•.•.••..•..• 5 7 lección 5: definir las etiquetas con atrlbutos .••..33 Los manuales de PC Cuadernos ....•...•.....•...•...... 76 lección 6: Más sobre los atributos ........•...•.....•.. 38 Venta al número .................•..•..••.•.... ~.•..•.....•.•.....• 77 lección 7: utilizar entidades como "comodlnes"41 índice de palabras clave ...••..•..•..••••••..••.•..•..••••.••• 8 7 SeccIÓNPRÁCTICA atributos, DTO y entidades ... 44 C: Lección 8: anldaclón y Juegos con paréntesis en ISBN 2-914944-08-X la DTD ••.•••.•.••••••••••••••••.•••.••..•..•...••.•..••.••..••..•.. 45 ~11~~IIIUI 9 782914 944083---~----.--------~~~------------------------------------------------~
    • PCCuademos Prefacio 32 PC Cuadernos - Básicos Prefacio: Bienvenido al curso sobre XML Como su propio nombre indica, está es-Introducción pecialmente dirigido a usuarios noveles. XML todavía en desarrollo se encuentra ¿Qué aprenderá? Le presentaré paso a paso las características y ventajas del nuevo lenguaje de descripción de PC Cuadernos - Técnicos No me gusta pensar en mi primer curso sobre páginas (del que he quedado francamente con- XML XM:L,porque le habría decepcionado. Hasta Cubre temas pensados, por lo general, vencido). El cuaderno está pensado como un Q para un público con más conocimientos, ahora los lectores seguían mis cuadernos fiel- mente: les había hablado de cómo dar los pri- curso, centrado en ejemplos y ejercicios para aunque también incluye la continuación meros pasos para crear una página Web, cómo poner en práctica la teoría. Johann-Christian Hanke o el nivel superior de algunas de las dominar HTML y...siempre volvían. En esta lista le detallo los temas que trataremos: © Copyright, Johann-Christian Hanke aplicaciones tratadas en PC Cuadernos Volvían porque esperaban más de XML. Si todo • Los antecesores de XML: SGML y HTML y KnowWare EURL - Básicos. el mundo habla de ello, algo tiene que tener de • XML versus HTML especial. Buscaban la última tecnología para sus • Ventajas de XML como lenguaje del futuro Traducción: Mareotis Llenguatges S.L. Formato práctico sitios Web, pero pronto se dieron cuenta de que: • Ya existe XML: WML, WSF y más PC Cuadernos - Técnicos La presentación en forma de cuaderno • XHTML como reformulación de HTML • XML no-estaba pensado prioritariamente pa- www.pc-cuadernos.com es muy práctica, ya que permite dispo- ra el diseño de sitios Web y por lo tanto no • Práctica de XML: documentos bien formados ner de mucha información en poco es- sustituiría el lenguaje HTML (por lo menos, • Introducción al concepto de las DTD Sociedad editora: no en los próximos años). pacio. • Validar los archivos XML KnowWare E.U.R.L. • XML, a diferencia de HTML, todavía se e n- • El nuevo estándar: esquema XML 70, rue Georges Villette Nuestros manuales de entre 64 y 80 cuentra en desarrollo. Muchas de las cosas • Pruebas mediante parsers de validación F-77250 Ecuelles páginas equivalen a libros de 200 pági- que son naturales desde hace años en el caso • Dar forma a documentos XML con CSS nas en lo que se refiere a información; del HTML no funcionan con XML. Por • Más posibilidades con XSLT Francia pero tienen un volumen dos ,veces in!e- ejemplo, ni siquiera los vínculos más senci- Director: rior. .. ¡y un precio mucho mas asequi- llos funcionaban con Internet Explorer 5.5. Atención: puede descargar todos los archivos Mikkel Franck • XML no representa datos por sí mismo, s o- de los ejemplos directamente del Web. Los en- ble! lamente organiza la estructura. contrará en la sección de suplementos del Web Dirección electrónica: Además, un cuaderno puede mantener- • XML solamente está soportado en los últi- de PC Cuadernos: info@pc-cuadernos.com se abierto más fácilmente al lado del mos navegadores y no estaba indicado úni- http://www.pc-cuadernos.com. ordenador. Es una verdadera herra- camente para el Web. ISSN : en curso mienta de trabajo. Pero no servía de nada tener miedo. Después Tu "tutor XML", Johann-Christian Hanke, Depósito legal: en curso del primer susto, los lectores empezaron a ad- Enfoque realista Septiembre de 2002 ISBN 2-914944-08-X quirir espíritu de pioneros. Siempre que el tema lo permita, encon- Trabajar con una nueva tecnología también Imprenta: trará ejercicios o ejemplos concretos. puede ser divertido y ameno. Sobre todo, con OTM, Ikast, Dinamarca Este enfoque práctico facilita su uso pa- una tecnología que en los próximos años estará ra la información y la formación autodi- más que asentada. Una tecnología de la que to- Distribución quioscos: davía no se puede decir "esto es así", sino que dacta y permite un aprendizaje acelera- Coedis S.L. hay que decir "esto será así" o, aún peor, do. "podría ser así". Avda. de Barcelona, 225 Molinsde Rei Mikkel Franck, editor. Algunas de las cosas que se han escrito en este Barcelona mfranck@pc-cuadernos.com manual son recomendaciones, y no un estándar consolidado.¡Puede haber modificaciones! Venta por números: Todos los productos citados en este manual son marcas registradas o marcas comercial~~. El Después de su aparición, los números autor y el editor declinan toda responsabilIdad de esta colección pueden pedirse por que pueda surgir de la utilización de los dat~ o correo. programas que aparecen en este libro. (consulte la página 77) Septiembre de 2002
    • SGML como lenguaje de descripción de documentos HTML como lenguaje de descripción para el Web 54Así empezó todo: SGML como lenguaje de descripción de do- HTML como lenguaje de descripción de páginas para el Webcumentos ¿Qué ocurrió en 1989/90? Efectivamente, cayó Una "homepage" o, mejor dicho, una "página el muro de Berlín, pero no el¡a eso a lo que me Web", no es otra cosa que un documento con¡La diversidad es matadora! Quizás al lector SGML se convierte en el estándar ISO refiero. En ese año se creó el World Wide Web. texto, vínculos y gráficos. Este documento otambién le suene familiar: alguien le envía un GML fue evolucionando a lo largo de los años, conjunto de documentos se encuentran en los y el creador de esa gran telaraña fue ni más nitexto y... no puede abrirlo. El motivo es que ese y finalmente apareció SGML. SGML son las si- menos que Tim Berners-Lee, y lo hizo en Suiza. servidores Web repartidos por el World Widealguien utiliza un procesador de textos distinto glas correspondientes a Standardized Generali- Web. Para vísualizar las páginas se necesita un Berners-Lee trabajaba como informático en uny no existe ningún filtro. zed Markup Language, que en español significa browser o navegador. Se trata de un programa centro de investigación nuclear en Zurich.Sin embargo, incluso cuando se utiliza el mismo "lenguaje general y estandarizado de marcado". que se instala en el ordenador diente.programa de procesamiento de textos el éxito El desarrollo del lenguaje iba tan rápido que en WWW: Internet adquiere una di-no está garantizado. Supongamos que su cono- 1986 se reconoció el lenguaje SGML como el es- mensión gráficacido utiliza una versión más reciente: será muy tándar internacional ISO 8879. Lo que la mayoría suele olvidar es que Internetdifícil que usted pueda abrir el documento, ya exístía hace tiempo. Los orígenes de la red seporque su programa no conocerá el formato de Para el transporte de los datos del servidor Web remontan a los años sesenta. Los primeros men- la nueva versión. sajes de correo electrónico se enviaron en 1971 al navegador se utiliza un protocolo llamado En realidad, el objetivo de SGML era poder en EE.UU., y además del e-mail también se uti- H1TP, Hypertext Transfer Protocol (ProtocoloLa torre de Babel asegurar electrónicamente que los documentos lizaban servicios como Usenet (foros de discu- de Transferencia de Hipertexto). De ahí viene elEn realidad, en el mundo informático a veces importantes fuesen independientes de los for- sión), la descarga de archivos a través de FTP, http:// antes de cualquier dirección Web.podríamos hablar de una "torre de Babel". Ca- matos de archivo binario en constante cambio la búsqueda de archivos con Archie o la bús-da fabricante utiliza un formato propio para sus El Warld Wide Web se puede considerar una es-programas, y aproximadamente cada dos años (Word, WordPerfect) o de los sistemas operati- queda de bases de datos con WAIS. pecie de "interfaz gráfica" para Internet. Todoeste formato cambia. Ni siquiera los filtros más vos (Windows, Mac-OS, Unix, etc.). Sin embargo, moverse por las intrincadas ramas se puede realizar intuitivamente con el ratón.avanzados consiguen transferir siempre todas Organísmos oficiales, empresas, organizaciones de esa télaraña era un auténtico suplicio: se tr a-las características de un formato a otro sin pér- educativas e instituciones guardan documentos taba de una unión elitista dirigida a militares, HTML como lenguaje para sitiosdidas. en SGML. Un conocido mío que trabajaba como científicos y trabajadores de universidades, e asistente en una universidad de Berlín hace incluso estos últimos no siempre sabían cómo Web¿Qué hará cuando quiera ver dentro de diez años que se moría porque los trabajos científicos utilizarlo. Hemos estado hablando todo el rato de estosaños los documentos que haya creado hoy? se guardasen en SGML. Para solicitar información, era necesario apren- documentos, pero lo verdaderamente interesan-¿Podrá abrirlos sin más? De acuerdo, quizás en der antes varios comandos crípticos y dejarse te es el lenguaje en el que están escritos. A con-el caso de la correspondencia privada no su- Sin embargo, por ese entonces él debía ser uno los dedos en el teclado. Si el lector conoce DOS tinuación le hablaré de HTML, Hypertext Ma-ponga un gran drama, pero ¿qué ocurrirá con de los pocos que cantaba las excelencias de o ha tenido que vérselas alguna vez con orde- rkup Language.los documentos importantes de los organísmos SGML. Este lenguaje era desconocido para lae instituciones oficiales? mayoría de nosotros, a pesar de sus claras ve n- nadores Unix, sabrá a lo que me refiero. En ese Lee no era tonto y sabía que no había descubier- tajas. momento no exístía una interfaz de usuario grá- to la rueda. Se basó en estándares ya exístentes. Este problema no es nada nuevo; hace décadas fica. Los sitios Web en formato HTML son una com- que se conoce. Por ello, en los años sesenta el Sr. SGML es complicado binación de: Charles F. Goldfab se ocupó por encargo de Así pues, no había nada para el usuario medio, SGML tenia una imperfección decisiva: era de- • ASCII mM de la descripción de documentos. Fruto de sin tener en cuenta que por aquel entonces ni el masiado complicado. En su desarrollo se había • ySGML. su trabajo apareció el lenguaje GML, Generali- lector ni yo habríamos tenido acceso a la red. trabajado con la administración y las autorida- zed Markup Language. Creo que no sería nada exagerado afirmar que Seguro que conocerá las siglas ASCn, que co- des en mente, no pensando en el usuario medio. El objetivo de GML era describir los docume n- En consecuencia, las herramientas de software la mayoría apenas conocía la exístencia de In- rresponden a American Standard Code for In- tos de forma que el resultado no dependiese de para la creación de SGML eran caras y no tuvíe- ternet. formation Interchange (Código Estándar Ame- una determinada plataforma ni de una aplica- ron gran aceptación. ricano para el Intercambio de Información). Se Todo esto cambió con el invento de Tim-Berners ción específica. No se trataba de la apariencia trata de un formato de texto puro estandariza- Por ese motivo, no es de extrañar que el le n- Lee, que se llamaba World Wide Web. Y esta del documento, sino de la estructura lógica del do. Se podría decir que ASCII es el "mínimo guaje SGML no tuviese mayor difusión fuera de Web o telaraña se basaba en un lenguaje de des- mismo, como la subdivísión en títulos, capítu- común denominador" en la transferencia de da- las aplicaciones ya mencionadas. Sin embargo, cripción de documentos llamado HTML. los, páginas y párrafos. tos entre ordenadores. Cualquier procesador de entonces llegó el World Wide Web y todo cam- Con el World Wide Web aparecieron por pri- textos sencillo puede almacenar y leer archivos bió ... mera vez las páginas de colores en las que uno en formato ASCII. podia hacer dic. Apareció, al fin Yal cabo, lo Los perros viejos de la informática seguramente que hoy llamamos homepage o página Web. conocerán el formato ASCII como texto MS- DOS.
    • 6 HTML como lenguaje de descripción para el Web Caracterrsticas de XML como idioma del futuro 7Las etiquetas o tags No olvidemos los hipervínculos Características de XML como idioma del futuroSin embargo, con ASCII no es posible resaltar Casi nos habíamos olvidado de los vínculos, es-de ninguna forma los títulos ni aplicar negrita, tas "puertas de salto" a otras páginas. Los vín- Lo que SGML no pudo conseguir lo hizo Estoy convencido incluso de que HTML o lacursiva o subrayado. culos o enlaces forman parte indisoluble del HTML: el lenguaje se convirtió en un bestselIer. n~ev~ "Variante?e HTML", el XH1ML, segui- Web. Empresas, instituciones y el ámbito privado ran SIendo el estándar durante varios años en loAquí es donde Lee recurrió a SGML. En SGML, utilizan HTML para poner su contenido en el que se refiere a diseño Web. XML se va ase n-las opciones de formato como "esto es un títu- Para ellos, Lee inventó una notación que empie- Web. tando en el Web lentamente, ya que el soportelo", "este texto forma parte de una lista", etc. se za con la etiqueta Anchor (de ancla). Este es elrepresentan por medio de las llamadas etique- aspecto de un vínculo cualquiera: Los navegadores para poder visualizar páginas del lenguaje se encuentra en sus primeras fases.tas o tags. Estas "marcas" se incluyen entre los <a href:nhttp://www.pc- HTML son cada vez mejores, al igual que lassignos de menor y mayor que (c»), cuadernos.com">Este vinculo le herramientas de software. Aunque los profesio- llevará a PC Cuadernos</a> nales siempre prefieren el trabajo manual, cada vez es más sencillo almacenar documentos En el navegador, solamente aparecerá el texto grandes como un archivo HTML .. Extensible Markup Lang~age (XML) Este vínculo le llevará a PC Cuadernos (y casiSi desea dar formato a un texto como un título siempre aparecerá subrayado). ~~~~~~~ I ~~~~~--=~~~~,~;~w.I)XIfUIde primer orden, deberemos escribir: : ~ • .lInWThe~~IlIiIMW3C"I..or1t(lnrllSlOpicinmore~For"*-d Ahora ya habrá comprendido el significado de<hl>Titulo de primer orden</hl> las siglas HTML. Hypertext Markup Language rw..tIy~~~.}!lj,*:g>po!! •• )(MAm~E!l::fIdli2!S.2!líll!L SknlllIkldC!rprjg!ttmoo y si resulta que HTML es magnífico, ¿por qué MII!M....S& sm}MH1 es la abreviatura de Heading 1, o título de hace referencia a un lenguaje de descripción pa- no dejamos que ocupe el trono para siempre? Wortlng Draft.primer orden. Uno de segundo orden sería H2, ra "documentos de hipertexto", es decir, para ; ::::::~~-::"for-=-:.....s<hll~::.~~:-~.eldXM.u<wngAGJ •• ~ n.y así podríamos seguir. También exísten etique- sitios Web con hipervínculos. ¿Qué es XML? .xKk!dy2Jl"f.I2!Jns:Wt!u.tc.. •••••••.••••••• 1._DI1tas para listas, definiciones, negrita, cursiva, etc. :~~~ tEl gran mérito de Lee fue la incorporación de La popularidad de HTML ¿Qué razón nos llevó a inventar algo nuevo? ¿Por qué después de SGML y HTML irrumpió ~~~=--1O~a1 .-IIeá(""""Hiv,.........."... • ~""""""m,rmw·(rml!O!!!$ ~ ~un grupo limitado de etiquetas de SGML. Utili- HTML es tan fácil de comprender que el le n- XML? ¿Qué significa XML? guaje rápidamente tuvo una gran aceptación. El Working Drafts en el W3C: XML todavía se encuentra enzó únicamente las instrucciones que eran abso- Las siglas XML corresponden a eXtensible Ma- desarrollolutamente indispensables. De esta forma, World Wide Web y las páginas HTML dieron a Internet la popularidad que tiene actualmente. rkup Language, o Lenguaje de Marcado Exten- Antes de adentramos en las características deHTML se convirtió en una versión simplificada sible. El World Wide Web Consortium (W3C)y mucho más comprensible de SGML. Muy XML, intentaremos responder a la pregunta de El responsable del desarrollo de los lenguajes y presentó XML en 1998, aunque las primeras in- por qué era necesario otro lenguaje de descri p-pronto aparecieron los primeros programas ca- estándares para el Web es una asociación lla- vestigaciones empezaron en 1996.paces de visualizar HTML, como el navegador ción de documentos. mada World Wide Web Consortíum, abreviadaMosaic o el primer Netscape Navigator. como W3C. Lo que propone la gente del W3C Mitos y hechos sobre XML Desventajas de HTMLPor lo general, se suele decir que ni SGML ni se convierte unos pocos años después en están- Exísten varios mitos y falsas asunciones sobre el Para comprenderlo, es necesario conocer lasH1ML se ocupan del diseño. Al contrario, bás i- dar del sector. El W3C cuenta con distintos lenguaje XML en la comunidad de Internet. desventajas de HTML. Y es que con el tiempo secamente tratan la estructura. grupos de interés, además de con la participa- hizo patente que HTML no era perfecto. Lo cierto es que XML es un lenguaje de descri p- ción de empresas como Microsoft, IBM, AdobeLos primeros navegadores obtenían los mismos ción de documentos, un factor que tiene en co- • HTML estaba pensado para mostrarse en un o Sun. El director del W3C es Tim Berners-Lee,resultados al interpretar el lenguaje HTML, in- mún con HTML o SGML. También es cierto es navegador Web, pero no está tan indicado y su sitio Web lo encontrará en www.w3.org.dependientemente de si se trataba de texto, tí- XML permite definir tags (etiquetas) propios. para la impresión o para tareas de diseño.tulos o listas. Por ese motivo, no podemos dejar La versión actual de HTML es la 4.x. El lenguaje Efectivamente: con XML el autor es quien do- ¿Márgenes de página? ¿Formato de papel?de admitir que las etiquetas de HTML sí están ha madurado. Si desea más información, la en- mina la estructura del documento. ¿Párrafos? ¿Encabezado y pie de página?relacionadas con el diseño. contrará en mis cuadernos "Cree su página Web Sin embargo, no es verdad que XML sea la úl- ¿Índices, tablas, referencias cruzadas? Inclu-Además, naturalmente exísten instrucciones pa- (D" y "Cree su página Web (ID", o también tima novedad para crear fantásticos sitios Web so ayudándonos de CSS, poco se puede ha-ra asignar el tipo de letra, el tamaño de letra y puede echar un vistazo a www.selfthtrnl.org. interactivos. XML no es el sucesor directo dé cer para acomodar estos elementos conel color, por ejemplo. Detrás de estas instru e- Para comprender XML le ayudará tener cono- HTML ni tampoco un lenguaje de diseño en HTML.ciones se esconde el lenguaje llamado CSS, Cas- cimientos de HTML, aunque no son un requisi- sentido estricto. • Las etiquetas existentes son limitadas, decading Style Sheets (Hojas de Estilo en Casca- to indispensable. modo que el lenguaje no es demasiado flexi-da), que complementa perfectamente el lenguaje ble. ¿Qué hacer cuando, por ejemplo, unoHTML. necesita incluir gráficos vectoriales u hojas de cálculo en un proyecto? Con HTML no hay forma.
    • 8 Características de XML como idioma del futuro Características de XML como idioma del futuro 9• HTML no puede mostrar contenido dinámi- Limitación al Web Principales características de XML Si bien es cierto que la familia Microsoft Office co, y este hecho es especialmente importante: Sin embargo, hoy en dia HTML es inflexible con Algunas de las características de XML son también trabaja con el formato XML desde 1999, supongamos que necesita mostrar determi- su limitación para su uso en el Web. realmente tentadoras y van mucho más allá de no tiene mucho que ver con el "verdadero es- nados productos de una base de datos de tándar": Microsoft utiliza en la conversión a las posibilidades de HTML: pedidos; es imposible. La representación de Si uno desea utilizar la información existente en H1ML las llamadas islas de datos XML, que se los datos en tablas HTML es estática y sola- un sitio Web con otros fines (catálogo impreso, • Es posible definir tags propias. incrustan dentro de HTML. En ellas, el fabrican- mente se pueden realizar consultas a bases audio, etc.), antes es necesario convertirla a un • También se pueden asignar atributos a las te incluye informaciones específicas de Word o de datos con ayuda de lenguajes de secuen- formato adecuado. etiquetas. Excel que deben garantizar una buena reimpor- cias de comandos (Perl, PHP, etc.) y crear • Las etiquetas y atributos se definen de forma tación en Office. Lo mismo ocurre con el proceso inverso: los d a- exacta mediante un esquema. Dicho esque- documentos H1ML nuevos en función de la El formato estándar binario real no ha sido re- tos procedentes del procesamiento de textos, e a- ma se llama definición de tipo de documen- consulta. emplazado por XML, y en la nueva versión XP tálogos o bases de datos deben convertirse a to, abreviado como DTD.• La estructura y el diseño están mezclados. de Office tampoco ha cambiado nada en este HTML para poder visualizarlos en el Web. ¿No • La estructura y el diseño están totalmenteEl último inconveniente es precisamente el deci- sería increíble que existiese un formato de base sentido. separados.sivo. ¿Qué tiene de malo? para todo ello? XML es internacionalizable Pues bien, este formato de base ya existe. Otras características de XML XML es internacionalizable, trabaja con cual-Mezcla: estructura y diseño XML tiene otras características que le auguran quier conjunto de caracteres. Sin embargo, enAntes he afirmado que el lenguaje HTML se XML como lenguaje únicamente mucho futuro: este cuaderno nos ceñiremos a 150-8859-1, elocupa principalmente de la estructura y menos para estructuras conjunto de caracteres de Europa occidental.del diseño. Eso es cierto, aunque solo en parte. XML como estándar abierto no sujeto XML es, a diferencia de HTML, un lenguaje pu- XML está basado en texto puroComo hemos mencionado, en HTML cada eti- ramente estructural, que no incluye ninguna in- a licenciasqueta tiene una característica incorporada. Un El estándar XML está basado únicamente en formación relativa al diseño. De ello se deduce Empecemos con la sensación: XML es un están-título de primer orden <h1></hl> tendrá un ta- texto y no utiliza el formato binario. ¿Y que tie- que XML en su forma pura no está indicado pa- dar abierto y no requiere una licencia. Cual-maño mayor que <h2></h2>. Los títulos y pá- ne esto de bueno? ra la representación (visualización) de datos. Sin quiera puede utilizar este formato de datos,rrafos «p></p» tienen asignada además una embargo, se encarga de fijar la estructura de los cualquiera lo puede comprender y, con un poco ¿Ha intentado divertirse algún dia abriendo undeterminada distancia. documentos. de paciencia, también leer. Y esto es un hecho. archivo de Word o Excel en un sencillo editorUn párrafo formateado con las etiquetas de texto?<b><fb> (b de bold) aparecerá en negrita y la eti- XML almacena solamente los datos, la estructu-queta «hr» creará, en función del navegador, ra. Para dar un formato adecuado a dichos d a-una bonita línea en pantalla. Así podríamos se- tos para cada finalidad se debe utilizar un len- guaje de diseño. Por lo tanto, ya no es necesario que los progr a-guir nombrando las distintas etiquetas, y ve- madores "desarrollen" sus propios formatos deríamos que HTML también asume cuestiones XML está especialmente indicado para datos archivos binarios incompatibles con los de larelativas al diseño o disposición. que deban estar estructurados desde el princi- competencia. No importa si se trata de proc e- pio. Estoy pensando, por ejemplo, en listas de samiento de texto, hojas de cálculo o un pro-~·Er{8i!MLl¡.la~esfrUCtlmG"él1,irseñ(i esfán1ñezl direcciones u otros datos que se administren en:;~ -<~:.~, " .~~ ¡ct~9Q~ .i.: -~~~.. ¡o, "!~-~ ~~: grama de presentaciones: en todos los casos se forma de tabla, como bases de datos, trabajos podría utilizar un esquema que los fabricantesSin embargo, HIML no es perfecto en ninguno científicos, etc. utilizarían como formato general.de los dos ámbitos. En lo que se refiere al dis e- Sin embargo, también es posible crear una es- Todavía está por ver si los fabricantes realmente Interesante: formato binarlo de Word en el Bloc de notasño, HTML no funciona de forma óptima debido tructura para documentos convencionales para desean algo así. Sun ya utiliza en su nuevo pa-a sus posibilidades limitadas. Por ese motivo, poder utilizar XML para la notación de la in- La imagen ilustra lo que intento mostrarle. Se le quete ofimático StarOffice 6 (Open Office 1.0) ellos diseñadores Web tienen que recurrir a dis- formación. presentará un conjunto de caracteres ininteligi- formato XML como "formato interno" . Mástintos trucos o utilizar un lenguaje adicional bles, cuyo significado posiblemente sea un se- adelante le daré más información.como las hojas de estilo en cascada (CSS). creto reservado a Microsoft.Ya hemos hablado de los inconvenientes estruc- Por el contrario, los archivos de texto se puedenturales: la existencia de un grupo limitado de La invención de una estructura es, sin duda, leer y comprender fácilmente.etiquetas no es suficiente y la administración de más complicado que la sencilla creación de do-datos con tablas HTML es casi impracticable. cumentos HTML con un editor gráfico.HTML no está indicado para tareas del futuro.
    • Caracteristicas de XML como idioma del futuro Algunos ejemplos: XML en la práctica 1110Debo admitir que el formato de texto tiene un Lenguajes basados en XML Ejemplos de aplicación: XML en la prácticainconveniente: requiere mayor espacio de alma- Muchos de estos módulos o lenguajes basados El concepto modular ya mencionado dellen- WAP es una aplicación XMLcenamiento. Pero este espacio es cada vez más en XML ya existen o se encuentran en fase de guaje HfML conllevará qUE: ML se consolide X No importa si es una palabra mágica o un fraca-barato. Por ese motivo, este argumento cada día desarrollo. como formato de documento universal, inde- so del siglo XX: las páginas Web para teléfonospierde importancia, y las ventajas del formato MathML (Mathematical Markup Language) es pendiente de cualquier plataforma y programa. móviles con WAP ya se creaban en WML. Yde texto superan los inconvenientes. un lenguaje de descripción pensado especial- Ya existen varias aplicaciones prácticas muy WML también es un "dialecto de XML". mente para crear fórmulas matemáticas.Además, hace tiempo que existen eficaces for- valientes y prometedoras. No importa si es unamatos de compresión como ZIP o ARJ que per- ¿Necesita un par de hipervínculos en XML? base de datos o una aplicación ofimática: XML Navegador WAPmiten "encoger" el tamaño de los archivos Solamente con XML no lo conseguirá. Pero los no se limita únicamente al World Wide Web. In.trucdonn: Introduzca la dirección de un lenguajes XLink y XPointer se ocupan de enla-XML. sitio WI>P en si campo de texto zar con otros documentos. Las posibilidades de FileMaker utiliza el formato XML que hay debajo delnavegador WI>P y haga clic en "Ver sitio enlazar actualmente superan ampliamente el Así, por ejemplo, el fabricante FileMaker ya uti- W/IP- para ver la página. Advertencia: concepto de hipervínculos de HfML, ya que en- liza el estándar XML en su conocida base de da- Puede ser que algunos sitios tre otras cosas es posible enlazar a secciones e n- tos FileMaker Pro. De este modo, FileMaker se WAP no se vean correctamente en el navegador WNJ de teras de páginas. puede concentrar en las tareas propias de una Yahool. J Qué pyedo hacer con elIdeal para conservar datos a largo Si desea incorporar un toque multimedia a sus base de datos: en guardar, buscar y ordenar d a- navegadQcWAP?plazo páginas XML, utilice el módulo "SMIL". SMIL tos. WAP es una especie de "Mlni-HTML" basado en XMLXML está indicado, al igual que SGML, para el (Synchronized Multimedia Integration Langua- La presentación de los datos XML y su conver- ge) se aplica para incorporar multimedia (TV, sión a HfML es responsabilidad de cualquier En este sentido, WAP hace uso de algunas eti-archivo de datos a largo plazo. Y además, otra video). navegador. quetas conocidas de H1ML, aunque la sintaxisventaja que ya habíamos mencionado: XML se está sujeta al estricto estándar de XML.puede convertir fácilmente a otro formato. Para crear gráficos vectoriales existe SVG (Scalable Vector Graphics). Se trata del futuro El nuevo vestido de HTML: XHTMLXML es modular, ampliable estándar para la creación de gráficos vectoriales .l!l!lOl!!llCl:::~r;;..-·-fIMllI!nloo:e~ ~¡.~ ... ,"""" ._..._. Hablando de estándares estrictos: el World W i-La construcción modular se aplica constante- escalables. ¡,p; ••• I••.••••••· I_.ru,,", ,.~~;-.._ ~ •..••" .••.IoO:Óo de Web Consortium también "dio nueva vida"mente: en muebles de Ikea, en piezas de Lego, Las páginas Web pensadas para móviles con FII.M ••• r XML c.ntral FiI~ al clásico lenguaje HIML en forma de XHfML.en ordenadores personales o en XML. WAP ya se están creando en WML. WML tam- =::===;::.-==;::::~ ----_._ ....._---- XHTML no es otra cosa que una reformulacióny eso nos lleva a la siguiente cuestión: XMLtambién se puede ampliar. Al fin Y al cabo, poralgo se llama Extensible Markup Language, len- bién es una "aplicación práctica de XML". y aquí dejaremos nuestros augurios de futuro. ~=--_._.. --_-., e.o_.ooo _ •• _ - ~ ~J ._ .. del estándar HTML aprovechando las estrictas reglas de XML. Encontrará más información en la página 51.guaje de marcado extensible. ¿Es el lenguaje XML ya algo más que un sueño Medias tintas: Microsoft Office ,.-, t EiS"lln:t1lát~leñgu?leap~iairJ:re1}:uar 1 y un enorme terreno en obras? Por desgracia, "obras" es el término adecuado Como ya hemos dicho, Microsoft-Office tam- ~gM~~r~r~ti~J~rigJÍl.¡ijªª .~ .•.. ;2:. ~ ~ Incluso es posible crear lenguajes propios basa- para describirlo. Pero algunas partes ya están terminadas, tal como le mostraré en las páginas .- PretMntaclón ~tm&J. de FlleMaker ;=:;-..::::.-:::-...:...- ...• o.;~ •• y XML ...:...-=.::=== •.~.;o..:~ f.!,. ...;ít¡ bién utiliza el formato XML desde 1999, aunque no lo hace de forma estricta: al convertir archi- dos en el código de XML. Pero no vayamos tan siguientes. =~.:..""=::.::::=_. =~OO::Wb vos a HfML, MS Office trabaja con las llamadas lejos todavía. Volvamos a los "módulos". islas de datos XML que se insertan en H1ML. La base de datos FileMaker se basa totalmente en XML En estas islas, Microsoft incluye información En el sitio Web de FileMaker esta ventaja está específica de Word o Excel con el fin de gara n- muy bien documentada. Le recomiendo que vi- tizar la reimportación de los datos sin pérdida site www2.filemaker.fr/spain/ (.com) y busque de información. Puesto que el formato estándar la palabra clave xm1. . binario de Office no ha sido sustituido por XML, esta sol ución se queda a medio camino.
    • Algunos ejemplos: XML en la práctica Algunos ejemplos: XML en la práctica 1312 El archivo meta-inf/manifest.xml describe la es- En el caso de las aplicaciones XML especiales,Wlndows Scripting Host tructura del archivo XML. no hace falta representar o visualizar el conteni-Windows Scripting Host (WSH), la conocida in- do. La aplicación correspondiente se encargaráterfaz para programadores de Windows, trabaja OpenOffice también guarda la definición del ti- de interpretarlo. El formato WSF, por ejemplo,desde la versión 2.0 con WSF, el formato de se- po de documento (hablaremos de ella más ade- solamente funciona en Windows Scripting Hostcuencias de comandos de Windows. Detrás de lante) abiertamente en el disco duro. a partir de la versión 2.0. Se trata de la ejecucióneste formato también se esconde XML. De este modo, cualquiera puede acceder a esta de comandos de programación partiendo de un Todos los documentos de Office se comprimen conjunto de comandos establecido. información. Ocurre lo mismo que en el caso deEl culpable de la mala reputación de Scripting siguiendo el proceso ZIP. De este modo, los po- HTML: el que tenga buenos "conocimientos del También WML, el lenguaje para páginas WAP,Host son los gusanos del correo electrónico. drá extraer con cualquier programa compatible,Muchos virus de este tipo se activan gracias a código fuente" podria crear documentos de se basa (paradójicamente) en un conjunto de por ejemplo WinZip o el programa descompre- Office sin prácticamente necesitar el programa comandos predeterminado. Utiliza las conoci-que en el ordenador está instalado WSH. sor integrado en Windows XP. Solamente es ne- Office. das etiquetas de HTML para representar los d a- cesario sustituir la extensión propia del pro- Al igual que para crear HTML basta con un ed i- tos -en el móvil.Channel Definition Format grama sxw por zip y ya tendrá acceso al conte-Microsoft parece adorar XML, ya que incluso nido del archivo. tor de texto sencillo, cualquier aficionado a la. y los archivos XML de StarOffice u OpenOfficelos desdichados canales que aparecían en el an- informática pueda crear archivos de Office con solamente tienen sentido (hasta ahora) en lostiguo Internet Explorer 4 ya se escribían en el el Bloc de notas. En el futuro la gente elegirá su programas correspondientes.lenguaje "adaptado a XML" CDF, el Channel producto ofimático, no tanto en función del formato de archivo (¿puede leer documentos de XML puroDefinition Format. Word 2000?), sino basándose en la comodidad Pero observemos al "XML puro" en la forma enXML en StarOffice/OpenOffice de uso. En el fondo, todos los programas cre a- la que deseo presentárselo. Pensemos primeroEn el momento de redactar este cuaderno, en el , rán (esperemos) XML puro. en la representación en Internet. Para ello debe- Doo.mentoXM.sector de la informática se está produciendo rá recordar un lenguaje de diseño como CSS o DocunentoXM. Las interfaces XML son abiertas y están bien XSLuna revolución: en mayo de 2002 apareció la DoarnenI:o XM.primera suite de ofimática basada totalmente en Doo.mento XMI. documentadas. Aunque CSS sigue siendo la elección habitual Doo.mentoXM.el formato estándar XML. Se trata del programa para mostrar los datos en el navegador Web, elStarOffice de Sun. ¿Cuáles son los inconvenientes de lenguaje XSL, que todavía se encuentra en fase XML? de desarrollo, también se podrá utilizar para La versión comercial de StarOffice cuesta alre- otros propósitos. Hablemos de sus inconvenientes. Una clara dedor de 79 euros y se puede pedir a través de desventaja de XML es la gran necesidad de e s- Modifique los datos de forma que estén indic a- www.amazon.com. por ejemplo. La versión De un sxwtenemos un z/p: el nacimiento de un archivo pacio de disco del formato de texto (de la que dos para la impresión de un catálogo de alta ca- gratuita y con algo menos de funcionalidad se El contenido de texto del documento se encuen- ya hemos hablado) en comparación con los da- lidad. Para ello necesitará un lenguaje de des- llama OpenOffíce y se puede descargar desde tra en el archivo content.xml. Es posible abrir el tos binarios. Pero esta desventaja queda com- cripción para la impresión, como Postscript o el www.openoffice.org. pensada porque el espacio de disco cada vez es archivo con cualquier editor de texto o, después estándar de Adobe, PDF (Formato de Doc u- StarOffice realmente guarda todos los docu- de eliminar el vínculo a la DTD, observarlo en más barato. mento Portable). mentos en formato XML. Así, cualquiera puede el navegador: Además, existen formatos de compresión muy Transforme su información basada en XML en visualizar y modificar la información. c!ta_t:wquef>C.....oocb> eficaces como ZIP o ARJ, que se pueden utilizar un documento de Word o en una hoja de cál- <tut:" 1.~t:sti·Ie·".". •••.•• oding 1" Itltt:lilv ••• ·l·::>OoC:umentO de pnI..bIl</t •• t:h> para ahorrar espacio en los archivos XML. culo. Entre bastidores .:::e:d:ptext:sry,.-n_."8tonct.td"l> d."t:p teKl :stlle·.,_."Stano;a..nS":>E5tOV prDbando pora ver c6mo ¿Ha instalado este programa ofimático en su funciono" .dItlM de texto de OpenOlftce.c/tlld:lI> Prepare los datos para que un software telefóni- </offiu:body> Los desarrolladores de StarOffice han integrado disco duro? Intente crear un archivo de texto. <loffic.: cklcunent -canten!:> co se los pueda leer al cliente. una rutina de compresión en el programa. La forma en la que se solucionan todos estos Estructura clara: extracto de content.xml aspectos depende de cada programa. Recuerde Una estructura, muchos diseños En el archivo meia.xml se incluyen la llamada esto: Si la estructura y el diseño están separados, meta-información sobre el documento, es decir ¿cómo se debe mostrar el contenido XML? De- ,; estructuraséguirá siendólamlsma;sofia,:j:: las "propiedades del archivo". penderá del uso que se quiera dar a la informa- merÍt~ se pued~:alusti!lrl~ repré~nta.d9!1~;~·:~ En el archivo settings.xml encontrará informa- ción, o incluso de si se desea visualizar de algu- ción sobre la configuración para la impresión. El na forma. Pero volvamos a la realidad de nuestro cuader- archivo styles.xml incluye los estilos y formatos no. A continuación hablaremos de navegadores definidos para el documento. I Web e Internet. Un documento de prueba en OpenOffice Writer 10.1 I 1
    • Algunos ejemplos: XML en la práctica 15 Algunos ejemplos: XML en la práctica14 La conversión de XML a HTML a través de unXML no siempre está a la vista La solución: transformar lenguaje de secuencias de comandos es un tema Las datos se transforman sencillamente de XMLEn Internet también se hace un uso extensivo de muy amplio para el que se necesitan conoci- a· irrMLl..ó XHTML. ¿Cómo? Si desea pisar te-XML. En ese caso, este formato suele trabajar mientos de programación. No hablaremos de meno seguro, lo mejor es utilizar lenguajes de"entre bastidores". ello en este cuaderno . . secuencias de comandos (scripts), que permitenUn buen ejemplo sería un carrito de la compra. crear HTML "clásico" a partir de los datos en Si desea adquirir más conocimientos sobre len-Se preguntará qué tiene que ver un carrito de la XML. Bstoy pensando, por ejemplo, en PHP, guajes de programación, en PC Cuadernos secompra con XML; pues bien, las páginas se ba- Perl q yas o JavaScript, que funcionan con ASP. han publicado números dedicados a PHP o Ja-san en HTML, pero se crean dinámicamente con Un resultado muy diferente en Netscape 6 Y 7 vaScript.un lenguaje como PHP. En ese caso, PHP recu- Esta es la única forma de mostrar el documento Pero en el navegador Netscape 6 (imagen de larriría a una base de datos que utilice XML, por correctamente en el navegador, especialmente si Transformación por XSL izquierda) el diseño no tiene nada que ver, porejemplo. el prógrama todavía no es totalmente compati- Volvamos a XML. En este caso también existe no decir que no hay diseño alguno. Por suerte,Un ejemplo como este no tiene nada de extraño; parece que la versión 7 (derecha) ha mejorado bleconXML. un "lenguaje de diseño y transformación" que de hecho, cada vez se pueden encontrar más si- se escribió directamente en XML y que está tios Web que están totalmente escritos en XML. Pero como usuario muy pocas veces se dará mucho en este aspecto, y el resultado es el mis- mo que en IE6. El ejemplo práctico no pasa I XML (estructura) I pensado para XML. Estoy hablando de XSL, eX- tended Stylesheet Language. Se trata de un len- guaje especial de "transformación" que puede cuenta de ello, ya que XML trabaja, digámoslo así, en segundo plano. ¿Mostrar XML directamente navegador? Seguro que se preguntará si realmente tiene en el la prueba Lo admito, el hecho de utilizar XSL como len- guaje de formato limita las posibilidades de que se vea bien en todos los navegadores, ya que el uso de este lenguaje no está tan generalizado T~OO convertir XML a otros formatos. Cuando nos ocupemos de XSL a partir de la pá- gina 61 comprobará que también se podría ha- blar de una especie de "programación". ¿El in- conveniente de XML para el Web? XSL todavía sentido publicar páginas Web exclusivamente como el de CSS. no recibe el soporte necesario (consulte las imá- en XML. Supuestamente, con ayuda de lengua- jes como CSS y XSL se podría conseguir un d i- Sin embargo, en mis experimentos con CSS he I (X)IITML (navegador) 1 genes de la página anterior). Pero seamos opti- mistas. comprobado que también existen diferencias seña exacto. Pero he dicho supuestamente. notables en el diseño. Sobre seguro: transformar XML en HTML Ejemplo práctico En consecuencia: el lenguaje XML puro actual- El gráfico muestra el principio: inicialmente, to- Observe, como ejemplo práctico, un archivo de mente está indicado para mostrarlo en el Web dos los datos están en formato XML. Sin e m- la página de w3schools.org (donde podrá en- solamente bajo determinadas condiciones. .bargo, el servidor muestra al usuario una pági- contrar numerosos tutoriales y ejemplos sobre naHIML. De esta forma, el navegador no tiene los estándares promovidos por el W3C). XML solo "entre bastidores" que ser compatible con XML. o. A pesar de lo que acabamos de exponer, XML se utiliza cada vez más para publicar informa- ción en el Web. Para la empresas supone las si- My CD CollectioD guientes ventajas: TIle:E~cB • ~!:,l·f.t.:.. •.• !c,q.~ Todos los datos se almacenan en formato XML. Se introducen y gestionan en formato XML. De esta manera, se consigue crear una estructura : TÓC:(irn!.:r(Eu , Ar1Ut; i :-.:,-;",!. ~ multipropósito que se puede adaptar a distintos TllllrStili~~fl;,e¡_"= diseños. Y este es el punto clave: distintos dise- Anjsr:"w./ t.!~·il TIIIe:Eto.o ños. ! Artist:_:c.kl,;.,-.:-;.:rJ Porque los datos se visualizan en el Web a par- tir de HTML o XHTML. Internet Explorer: todo en orden En la última versión de Internet Explorer, la pá- gina se ve perfectamente y no la distinguiríamos de una página Web normal. El diseño es correc- to.
    • Resumen: principales características de XML Sección práctica A: preguntas generales 1716Resumen: características de XML Descripción mediante una OTO En este capítulo hemos visto:Recuerde que solo XML todavía no está indica-do para la publicación en el Web. De hecho, no Si lo desea, puede describir con todo detalle es- • SQL YHTML, los predecesores de XMLes nada recomendable. Además, recordaremos tas etiquetas y atributos (puede hacerlo, pero no • Ventajas e inconvenientes de XMLtambién que XML es ideal para tratar datos que tiene que hacerlo). • Características principales de XMLse deban incorporar dentro de una estructura. Es decir, es posible crear previamente una espe- • Aplicaciones que utilizan XMLA primera vista no parece demasiado atractivo, cie de instrucción en la que definirá las etique-pero hay un par de características destacadas tas, sus nombres, su orden, su jerarquía, etc. Preguntas sobre XMLque superan ampliamente las cualidades de Es posible determinar qué atributos están ~er- Responda a las siguientes preguntas. Puede haber una o más respuestas posibles. Encontrará las so-HTML. . mitidos y qué valores son aceptables. Por eJ~m- luciones en el suplemento online de PC cuadernos. plo, puede describir si el uso de una determina-Definición de etiquetas propias da etiqueta o atributo es obligatorio u optativo.La primera característica es una auténtica nove- 1. ¿Cuáles son las características principales de 2. ¿En qué lenguajes se basa HTl1l?dad: uno puede definir sus propias etiquetas. Este complicado código se puede encontrar en SGIIL y XIIl?Lo ha leído bien, no importa si escribe: dos "versiones". La que se presentó inicialmen- te se llama DTO (definición de tipo de docu- [a] guarda el formato, como negrita, cursiva, etc, [a] ASCII<Encabezadol> ...</Encabezadol> mento). Crearemos la primera DTO a partir de [b] guarda la estructura lógica de los documentos [b]SGML<parrafo> </parrafo> la página 24. La versión nueva y más complica- [e] guarda los documentos en el formato universal [e] XML<Pastel> </Pastel> da se llama esquema (en inglés, schema). Dare- WordTodo está permitido. A lo que realmente se re- mos los primeros "pasos esquemáticos" a partirfiera el par de etiquetas en cuestión es respon- [d] guarda los documentos independientemente de [d]CDF de la página 69.sabilidad del autor. A diferencia de HTML la plataforma(todas las etiquetas están predefinidas) en XML Solamente se pueden validar documentos XML 3. ¿Cuándo se convirtió SGML en el estándar ISO? 4. ¿Quién creó HTML?nadie le dirá que etiquetas tiene que utilizar. con DTO / esquema. Si se omite la DTO o el e s- [a] 1971 [a] Microsoft quema, el documento solamente estará bien Antes de escribir un documento XML, debería [b]1986 [b] Tim Berners-Lee formado (well-formed). pensar también en las etiquetas que utilizará y [e] 1989/90 [e] Adobe y Sun su significado. [d] 1996 [d] FileMaker y aquí es donde empiezan los problemas: este Separación de estructura y diseño trabajo previo es casi tan complejo como la pla- 5. ¿Qué significan las siglas HTML? 6. ¿Cuáles son las características de XML? En el lenguaje XML, la estructura y el diseño es- nificación de una base de datos. tán totalmente separados. Este punto es tan im- [a] Hyper Tool Mouseloader [a] guarda solo los datos, solo la estructura Una vez hecho esto, también deberá ocuparse portante que no me cansaré de repetirlo. [b] Hypertext Multi Language [b] no es prioritario para su aplicación en el de la apariencia de las etiquetas, ya que ésta no Cuando uno crea un documento XML, no sabe Web está definida. cómo se representarán los datos. El principio es [e] Hypertext Markup Language [c] formato basado en texto puro comparable (como ya hemos dicho antes) al de Definición de atributos propios [d] Hyperlink Extended Markup Language [e] estándar de licencia libre una base de datos. Por si eso fuera poco, también es posible definir 7. ¿Cuáles de estos formatos no tienen nada que ver 8. ¿Quién es el responsable del desarrollo El usuario es quien decide si desea imprimir atributos para las distintas etiquetas. He aquí con XML? de lenguajes como XML? una lista de direcciones como una tabla o como dos ejemplos: [a] SMlL [a] WAP (Wireless Application Protocol) tarjetas para pega tinas. Los datos "puros" <parrafo tipO="cuadro"> ... siempre estarán allí, lo único que variará es la [b]WAP [b] USB (Universal Seri~l Bus) <pastel bueno="no"> ... forma de mostrarlos. [e]XH1ML [c] W3C (World Wide Web Consortium) Aquí también se pondrá a prueba su ~ento , como estratega. ¿Qué atributos necesita? ¿Que [d]SQL [d] Adobe valores están permitidos? ¿Sería posible expre- sar también estas cualidades de forma indivi- dual en forma de etiquetas?
    • • I Lección 1: primeros intentos prácticos con XML 19 Lección 1: primeros intentos prácticos con XML18 El prólogoLección 1: ¡Bienvenido XML! Primeros intentos prácticos La primera fila introduce el documento XML, de ahí que se le llame prólogo. En nuestro caso, elAquí se acaba la teoría. Vamos a empezar con los primeros ejercicios prácticos, que le permitirán a d- prólogo consta únicamente de la etiqueta «ixm ...?l>: <?xml version="l.O" encoding="iso-8859-1"?>quírír estos conocimientos:• Creación de un documento XML sencillo con el Bloc de notas El signo de interrogación del principio y el final es típico de esta etiqueta. Con el atributo ve r- sion="l.O" se define la versión de XML -actualmente es la versión 1.0.• Creación del prólogo, las etiquetas y el elemento raíz• peculiaridades de visualización en distintos navegadores La instrucción ericod.i.nqe " iso-8859-1" no significa otra cosa que el hecho de que se utiliza el• Utilización de caracteres especiales y entidades conjunto de caractere~ iso-8859-1 (Latin 1). Este conjunto de caracteres permite representar acentos y diérésis.Consejo: le recomiendo que cree una c~~ llamada cursoxml en el disco c:. Guarde en ella y en Muy importante: con esta etiqueta y su atributo (no los valores) es obligatorio el uso de minúsculas.las subcarpetas que iremos creando los distintos documentos del curso. Por lo tanto, no escriba <?XML ... sino «ixm! ... XML necesitará un editor de texto. Windows incluye el Bloc de notas, un editor sencillo. .P ara crear . [ENTRARl arecerá el Bloc de notas Escr ¡- ASeleccione INlClo/EJEClITAR escriba notepad. Presione y . P . El elemento raízba el siguiente código, que es la base fundamental de cualquier documento XML. A continuación aparece el elemento raíz. En nuestro ejemplo se llama documento. El elemento raíz es obligatorio y presenta el documento, <?xml version="l.O" encoding="iso-8859-1"?> <documento> <pregunta>Hola XML, ¿estás aqui?</pregunta> es el formato de archivo del futuro!</respuesta> En las siguientes líneas tenemos, pues, el contenido real. De ello se ocupan las etiquetas creadas e s- <respuesta>XML </documento> pecialmente para la ocasión «preguntas-qpregunta» y -crespuestas-cirespuesta». Finalmente, se cierra el elemento raíz con la etiqueta <ldocumenio>, En proyectos de "gran envergadura" deberá inventar Guarde el documento con la extensión .xml Yllámelo, por ejemplo, hola.xml, Guárdelo dentro de la más etiquetas y más complejas. Lo bonito del asunto: a diferencia de lo que ocurre en HIML, aquí ya no se necesitan más etiquetas. carpeta cursoxml. No es necesario cerrar la etiqueta <?xml .. ,> del principio, Únicamente el elemento raíz ...... f -ro " d" te"r""mI;ada xten~SI-6n? veees pueden surgir compÜcaéiones;por e A lo~que le"fa:; «documentcc-cldocumento» forma un "corchete", ., Desea orza una e" . ". . • 1 1" .. :¿" , _., , . . -com!en d o q"ueescriba el nombre de archivo sntre cOlTllllas: .ho a.xm.. .._~ .- . ",.-- - .•,..• Recuerde que: el documento XML básico consta de un prólogo, un "elemento raíz" y varias etiquetas definidas por el autor. Mostrar el resultado en Internet Explorer Abra el documento en Internet Explorer. Tendrá este aspecto: No utilice diéresis, acentos, signos especiales, espacios en blanco y dos puntos en los nombres de las etiquetas. No empiece con un número, Y recuerde que se distingue entre mayúsculas y minúsculas. Por lo tanto, <Respuesta> y <respuesta> son etiquetas distintas. <?xml version="1.0" encoding="iso-8859-1" ?> Visualización en Netscape Si lo desea, puede visualizar el ejemplo en otro navegador. Utilice, por ejemplo, Netscape 7, Mozilla - <documento> <pregunta>Hola XML, ¿estás aquí?</pregunta> u Opera. Abra la carpeta cursoxml y arrastre el archivo hola.xml hasta la ventana del navegador man- <respuesta>XML es el fonnato de archivo del futuro!</respuesta> teniendo pulsado el botón izquierdo del ratón. <¡documento> IHola XMU Internet Explorer muestra los documentos XML en una estructura jerárquica Por lo tanto utilizaremos Internet Explorer porque este navegador tiene algunas características i m- , . d fin . gún diseño todos los documentos portantes que otros no pueden ofrecer. ~entra5 no e amos ron , XML se mostrarán en su estructura arbórea. Observemos qué se esconde detrás de cada elemento. Navegadores corno Netscape 6x Ó 7 muestran únicamente el texto Comprobará que la mayoría de navegadores solamente muestran el texto seguido.
    • Lección 1: uso de caracteres especiales y entidades 21 Lección 1: uso de caracteres especiales y entidades20 Cambiar los signos prohibidos Desgraciadamente, las demás entidades prede- finidas conocidas de HTML como &aum/; oUso de caracteres especiales y entidades E~t~n algunos signos que no debe utilizar bajo &oum/; etc. no están permitidas. Para ello deb rungun concepto:A continuación, hablaremos de qué caracteres Los códigos de país más importantes rá utilizar los "códigos". e-puede utilizar y cuáles no. A continuación le presento los códigos de país • < más importantes. Puede escribir ISO tanto en Códigos para caracteres especiales • > mayúsculas como en minúsculas. La siguiente tabla contiene los principales carac-USO de acentos •& teres especiales y la entidad correspondiente.Ya le he adelantado la buena noticia: puede tra-bajar en sus archivos XML (pero no en las etique- .. • • •••• - l • Conjunto de caracteres uniwrsal Los signos de mayor y menor que se utilizan para definir las etiquetas y provocarían inter- Carácter Códigotas) tranquilamente con acentos, diéresis o ca- UTF-8 (Unicode) ISQ-8859-1 (LatIn-1) Europa occidental. Latinoamérica pretaciones equivocadas. . &#187;racteres especiales como "t;, Por lo tanto, undocumento XML como este: 150-8859-2 (Latin-2) Europa central y oriental sudoeste de Europa Las comillas dobles (n) y simples () también son problemáticas. . &#171; 150-8859-3 (Latin-3) © &#169;<?xm1 version="l.O" ~ncoding= Paises Escandinavos. 8á1ticos 150-8859-4 (Latin-4)"iso-8859-1"?> Todos estos signos se deben cambiar; en este ® &#174; 150-8859-5 Cirflico<participantes> contexto, se habla de "enmascarar". ¡: 150-8859-6 I Araba &#163; <nombre>Ma1aquias</nombre> Griego 150-8859-7 <ape11idos>Gonzá1ez Hebreo 150-8859-8 pingüino</ape11idos> Turco 150-8859-9 </participantes> Lapón. nórdico. esquimal 150-8859-10 Las entidades se podrían considerar caracteres es perfectamente correcto. Al fin Y al cabo, por EUC-JP oder 5hift JI5 Japonés "comodín". Una entidad empieza por & y algo hemos incluido después del atributo enco- siempre termina con un punto y coma ;. En este ding el valor iso-8859-1. caso, los cambios recurren a los códigos de las ¿Juego de caracteres equivocado? iso-8859-1 significa Latin 1, Ycorresponde al tablas ISO correspondientes. ¡Mensaje de error! conjunto de caracteres de Europa occidental, Diviértase un poco y cambie el conjunto de ca- s: e.~been cuestión.donde ejemplo,sustituye por< el código &#~;, Por NR se el símbolo que también permite el uso de diéresis y acen- racteres. En lugar de 8859-1, escriba iso-8859-3 tos. De este modo quedan cubiertos todos los (Sudoeste de Europa) o iso-8859-5 (Cirílico). tiene el código 60 y se escribe cifrado como caracteres especiales del español, el francés, el Pueden ocurrir dos cosas: o bien Internet Explo- &#60;. También es posible utilizar el nombre más sencillo &1t; para este símbolo; 1 t signifi- Series de las normas ISO 8859 italiano y el alemán, por ejemplo. rer le devuelve un mensaje de error o bien mos- ca louier ihan, menor que («), s :!-. l· 2.. 1 ~ 2·· lQ 11 1Ddócr.1~ trará el texto con caracteres extraños. Nombres más sencillos para entida- -ctxml version==-1.0· encoding=·iso-8859-1- 7> JSO..88S9-1 _ <participantes:=. des No se puede mostrar la página XML <nombre>Mallllqu(lIIs</nombre> I • ( M l¡I : , • , I ~ - , - <apellidos>Gonz6Iez Plngülno</apellidos> Los siguientes cinco nombres se suelen llamar t •• ~, .. t .11 X X ¿ No se puede ver la entrada XMl con la hoja de estile. ccrrüe el ¡¡ A e ~ </participantes> entidades predefinidas: A ,/¡ .ti A 1( É f f 1 i i i erro,. ., haga die en el botón ~, o int6ntelo de nuevo más o ¡¡ ó ó ó o o •• i1 ü Ú Ü Ü V 1> 8 tarde. i i i i i i, e i! e e e l I ¡ I .~ Carácter Entidad 11ii ( á 6 ¡¡ 5 + • u u iI ü ~ 1> ~ Latln 1 permite mostrar acentos El .Inema no e. comp .•tlble con 1 codlflc ..• ..• clón e.peclflc ..• ..•. d < &It; Error al proce •..•r el recurso ftle:///C:/kw/e.¡XML/xmCexample > &91: Nos quedaremos con este juego de caracteres Folder/lecclonl/particlpante •. Mml. Únea t. poslcl6n .•.• para olvidamos de problemas. En la tabla a con- <1x:ml ver:llion."1.0" encodinq-"1~o-88S9-3"?> . & &amp; &quot; tinuación encontrará los principales estándares . (Apostroph) &apos; T ocio a la vista: un resumen de los conjuntos de caracte- res ISO. Escriba el código del documento de arriba y En esta sección le he mostrado cómo reempla- Mensaje de error: el navegador se no muestra el archivo zar caracteres especiales con entidades. Sin em- guárdelo con el nombre participantes.xml. (El sal- to de línea después de encoding solamente se Si no incluimos el atributo encoding también bargo, las entidades también se pueden utilizar debe a la anchura de la columna del cuaderno). aparecerá un mensaje de error, porque el nave- como comodín o abreviatura (para programa- gador partirá de Unicode (utf-8) y exigirá una dores: una especie de "variable") para varios ~máscara para las diéresis". caracteres. Hablaremos de ello en la página 41. L
    • 3 Lección 2: estructura de árbol de XML mediante una lista de títulos 23 Lección 2: estructura de árbol de XML mediante una lista de titules 22 Junto al elemento raíz hay más nodos Lección 2: estructura arbórea de XML con una lista de títulos . Abra el documento en Internet Explorer. Esta lista de títulos incluye el prólogo obligatorio y natu- lista con algunos títulos de las publ i- ralmente el elemento raíz. En nuestro caso, éste se llama <listatitulos></listatitulos>. Vamos a crear un pequeño proyecto en el que mostrare,mos una , il C:I""esXM.XITC.~ FoIderlocdon2_,xn1 caciones de PC Cuadernos. Con este ejemplo aprendera a: . <?xml versian=-l. o· encoding=·ISQ-88S9-1- 1> • Ordenar datos basándose en una sencilla lista de títulos - <list atitulos> • Crear un nodo adicional en XML - <cuaderno> <titulo>Photoshop 5.5</titulo> • Reconocer la estructura de árbol de XML <autoDMldtael Karbo</autar> • Repasar el concepto de well-formed (bien formado) <:autar>Peter G. chrtstíensenc/autcr» <editorial>PC Cuademos</editorial> cprecicc-e-c/preclo» En primer lugar planificaremos la lista de títulos . , . </cuaderno> , d s .Y qué es una lista de títulos SIDO una - <cuaderno> XML está especialmente indicado parlis~ ~~s :=~ap~ C~adernos nos interesa incluir la siguiente <titulo>Cres su página Wsb (I)</titulo> maravillosa estructura? Para nuestra e -ceutorxrohenn-christlen HlInke</autor> cedítoríeb-pc Cuedemos</editarial> información sobre cada cuaderno <descripcion>Introducd6n a HTML<ldescripcion> 1. Autor cprecioc-s-c/precio» </cuaderno> 2. Editorial - <cuaderno> 3. Descripción (si la conozco) <titulo>EI registro de Wlndows</titulo> -ceutcrc-üevtd aosmen-c/sutco- 4. Precio . d t XML Yola he llamado titulos.xml y se encuentra en la carpeta leccion2 <editoriabPC CUlIdemos</editorial> coescnpcioro Trucos pere edltin el reglstro</descripcion:> ~~~~:~e:~:;:nsada para estructurar mejor el código a nivel visual: <precio>4</precio> </cuaderno> </hstatitulos> <?xml version="l.O" encoding="ISO-8859-l"?> <listatitulos> Fácil de reconocer: mediante varios nados se crea una estructura arbórsa <cuaderno> Resulta interesante ver que existe otra rama, es decir otro nodo. Compruébelo: <titulo>Photoshop 5.S</titulo> <autor>Michael Karbo</autor> 1. Haga dic antes de <lista titulas>, es decir antes del elemento raíz. De esta forma lo contraerá o a m- <autor>Peter G. Christiansen</autor> pliará todo. <editorial>PC cuadernos</editorial> 2. Haga dic antes de la etiqueta <cuaderno>. De esta forma contraerá o ampliará el título en cuestión. <precio>4</precio> Se parece al sistema que utiliza el Explorador de Windows. Un signo menos (-) significa que está e x- </cuaderno> pandido. Un signo más (+) significa que todavía hay una rama "replegada". Como puede ver, XML <cuaderno> . solamente le ofrece la estructura para mostrar datos. El prólogo, el elemento raíz y las etiquetas los <titulo>Cree su página Web (I)</t~tulo> accesorios necesarios. <autor>Johann-Christian Hanke</autor> <editorial>PC Cuadernos</editorial> " El navegador como parser: ¿qué es un parser? El navegador le muestra la estructura: lee el documento XML. En la jerga especializada se habla de <descripcion>Introducción a HTML</descr~pc~on> que el navegador "parsea" o analiza el documento. <precio>4</precio> </cuaderno> En la práctica existen muchos otros parsers. En el caso de StaIOffice, el programa de procesamiento <cuaderno> de textos o de hojas de cálculo analiza el documento XML y lo muestra en pantalla para poder ed i- <titulo>El registro de windows</titulo> tarlo. En el caso de Windows Scripting Host (la interfaz de programación de Windows), Windows <autor>David Bosman</autor> analiza o "parsea" la secuencia de comandos; <editorial>PC Cuadernos</editorial> , . <descripcion>Trucos para editar el registro</descr~pc~on> En este cuaderno utilizamos el navegador Internet Explorer en su versión más reciente porque lo te- nemos a mano y porque queremos mostrar los datos de alguna forma. No consideramos el navegador <precio>4</precio> como "la herramienta para un diseño Web fantástico", porque realmente no sirve para eso. Se tra ta </cuaderno> más bien de una "herramienta de visualización". No olvide nunca que nuestros experimentos tienen </listatitulos> como fin aprender la estructura de XML (aunque más adelante les daremos forma con CSS y XSL). La lista de títulos como un documento bien formado . de ;~~el código? Encontrará los dOCumentos ejemplo en subcarpetas ordenadas de Por cierto: hasta ahora hemos estado trabajando con un "documento bien formado" (well-formed) . .No tiene ganas copiar . ad m por lecciones. Puede descargarlo todo como suplemento desde: www.oc-cuemos.co . No tiene ninguna definición del tipo de documento (DTD), es decir no tiene ningún conjunto de re- glas para las etiquetas. ~--------~---------------~-----------------------------------------
    • Lección 3: crear una OTO para la lista de títulos 25 Lección 3: crear una OTO para la lista de títulos24 Código fuente del archivo titulos.dtdLección 3: crear una OTO para la lista de títulos A continuación reproduzco el código fuente completo del archivo titulos.dtd. Copie mi ejemplo y no Planificación de la OTO olvide guardar los datos.A continuación crearemos un conjun~o ~~,reglaspara la lista de títulos, es decir, la definición ~el ¿Qué hay que saber para crear la OTO? <!ELEMENT listatitulós (cuaderno+»tipo de documento. En esta sección aprendera a: • El elemento raíz se llama listatítulos. <!ELEMENT cuaderno (titulo,autor+,editorial,descripcion?,precio+» • En este elemento raíz se encuentran n elemen- <!ELEMENT titulo (#PCDATA»• Planificar una definición de tipo de docu- tos (varios elementos) llamados cuaderno. . <!ELEMENTautor (#PCDATA» mento (OTO) <!ELEMENTeditorial (#PCDATA»• Repasar el concepto valid (válido) • Cada cuaderno tiene un título (elemento ti- <!ELEMENTdescripcion (#PCDATA»• Escribir una OTO tulo). • Cada cuaderno tiene uno o más autores <!ELEMENTprecio (#PCDATA»• Concepto PCOATA • Claves e indicadores de la DTD (autor). • Cada cuaderno tiene una editorial (editorial) El significado de cada línea • Establecer un vinculo a la OTO Vaya, esto parece bastante complicado. Le explico por qué: las OTO se escriben en el lenguaje SGML, que siempre es la misma -al ser una lista deDediquémonos primero a la definición del tipo PC Cuadernos ... y este lenguaje tiene una sintaxis algo complicada. Por eso propongo que observemos de cerca lo quede documento o OTO. • La descripción no siempre es~ presente p~a significa cada una de las líneas, paso a paso. cada título, de modo que la etiqueta descnp- Definición del tipo de documento 1. En la primera línea se define la etiqueta listatitulos. Es nuestro elemento raíz. Las definicio- cion es opcional. Si ha leído el apartado introductorio ya sabrá nes de elementos empiezan con <!ELEMENT ...• en mayúsculas. Puesto que el elemento lista- que un archivo XML puede tener asignada una Hasta aquí las consideraciones previas. titulos solamente aparece una vez. no especificaremos nada más. ¿Pero qué significa esto de definición de tipo de documento (aunque no es cuedemo« que hemos escrito entre paréntesis? Muy sencillo: dentro de Crear la OTO <Iistatitulos><llistatitulos> se encuentran varios pares de «cuedemos-acusdemo». El signo de obligatorio). Nos interesa aprender a trabatar co~.I?TO ex- suma detrás de la etiqueta significa que puede haber más de un elemento. Si no incluyéramos el Como recordatorio: la OTO es un conjunto de ternas. De esta forma mejorara la vision general signo de suma. -ccuedemos-c/cusdemo» solo podría aparecer una vez. reglas que define las etiquetas, sus nombres, su del proyecto, ya que el documento XML Yla orden, su jerarquía, etc. En la O,!,? podrá est a- OTO estarán separados. <!ELEMENT listatitulos (cuaderno+» blecer qué atributos están pemutidos y sus va- También es posible colocar el signo de suma después de los paréntesis: (cuaderno) +. En ese caso .~ lores correspondientes. También seyuede des- afectará al "grupo", ya que los paréntesis identifican a un grupo. Puesto que cuaderno es el único ele- cribir si el uso de una etiqueta o atributo es op- Jt mento del grupo, la posición del operador es totalmente indiferente. cional u obligatorio. Cree un documento de texto llamado títulos.dtd. El objetivo es, naturalmente, definir antes ~l . 2. El elemento cuaderno contiene más elementos. que se deben incluir entre paréntesis para conjunto de reglas. Sin embargo, en este eJerCI- formar un grupo. Estos elementos se ordenan y se separan mediante comas. Puesto que la co- cio crearemos la OTO posteriormente porque e.s Nuevo Documento de m.to..bIt ma actúa como separador, no es necesario dejar espacios en blanco entre los elementos. aun- """""""do..,.. más sencillo, ya que la estructura XML ya es Vi- F«::hodomodfltad6n:IMrtCS,10de soptbTIbrodcl2002,9:29 que se puede hacer. sible y podemos imaginamos algo sobre ella. <!ELEMENTcuaderno (titulo,autor+,editorial,descripcion?,precio+» Una OTO no es nada más que otro archivo de texto ¿Válido O bien formado? . y /0: con esta coma como separador crearemos un orden estricto. Eso significa que las etiquetas s o- Un documento sin OTO está well-formed (bien Consejo: puede crear archivos de tex~osirnen- lamente se pueden y deben emplear en este orden. A esto también se le llama la partícula y (indica formado). Si, además, tiene una DTD y se ~ es- do el procedimiento "orientado a objetos". Abra secuencialidad); titulo y autor y editorial ... Por el contrario, si desea especificar una opción o part í- crito correctamente, entonces será valid (válido). la carpeta deseada, haga clic con el botón der:- cula o, deberá utilizar una barra vertical I (para escribiría, pulse [AltGr] + "1") Ydespués del parén- En el siguiente ejemplo transformaremos nues- cho y seleccione Nuevo/Archivo de texto. Cambie tesis de cierre incluir un signo de suma. Hablaremos de ello en detalle a partir de la página 45. tro archivo bien formado lista.xml en un docu- el nombre predeterminado por tttulos.dtd. mento XML válido. 3. Los elementos titulo y editorial solamente aparecen una vez dentro de «cuedemos-e/cuedemo». Por ese motivo, no es necesario especificar ninguna otra peculiaridad. Volverá a encontrar el operador de suma en los elementos eutor« y precio+. La explicación está muy clara: este operador indica que el elemento tiene que aparecer como mínimo una vez y se puede repetir tantas veces como se desee. En este contexto, se habla de un indicador de fre- cuencia. <!ELEMENTcuaderno (titulo,autor+,editorial,descripcion?,precio+» t
    • , IE. Lección 3: crear una OTO para la lista de tftulos 27 Lección 3: crear una OTO para la lista de títulos 26 Establecer un enlace a la DTD 4. ¿Pero qué significa el interrogante detrás del elemento descripcion? Este "indicador de fre- Ya hemos terminado con la DTD, pero todavía nos queda un aspecto importante: enlazar a ella. cuencia" indica que este elemento es opcional (voluntario). Por lo tanto, indica que es posible, pero no obligatorio, incluir una descripción. fi:"~~tilIf~_lSili§ll~_~~ºil)efiOh;.""lli~~;{!EHr.1"1B¡"lIlíl~tI<: ~ U,Uft:J!Sfi~~ji!~,t~~ ~~USHI ...r -"h.,,", .--"" o,.", ••• <lELEMENT cuaderno (titulo,autor+,editorial,descripcion?precio+» 5. Ya hemos definido el orden de cada elemento. En las siguientes cinco IIneas se definen los elementos en función del orden. Para ello, escribiremos después de dELEMENT simplemente ~~e~:~te. 1 . Abra nuevamente el documento XML l ei Consejo: ¿ha abierto el archi;Oe;neln~~:!I~:~:~O;~ ::/~::a~~~i~:~e~ el nombre de la etiqueta, por ejemplo titulo. Entre paréntesis deberemos incluir el extraño código ;~r;lc~:~C~ns:s::~~~olocar debajo del prólogo y antes del elemento raíz. Presione [ENTRAR) (#PCDATA). <lELEMENT titulo (#PCDATA» <lELEMENT autor (#PCDATA» <lELEMENT editorial (#PCDATA» <lELEMENT descripcion (#PCDATA» <lELEMENT precio (#PCDATA» ¿Qué significa PCDATA? PCDATA significa que este elemento puede contener character data, es decir datos de carácter, y no 3. A continuación, escriba: gráficos o elementos multimedia. P significa parsed, es decir, "analizado". En conjunto, PCDATA es la <lDOCTYPE listatitulos SYSTEM "titulos.dtd"> abreviatura de parsed character data. Como habrá visto, la sintaxis de una DTD es ligeramente complicada. y todavía no le he mostrado Crear la declaración de tipo de documento ¿Qué significa la línea <lDOCTYPE listatitulos SYSTEM "titulos. dtd" ? todas las claves e indicadores. • La declaración DT se debe iniciar con <IDOCTYPE . >. • Detrás de DOCTYP . . , y Siempre en mayúsculas. Más claves e indicadores so es listatiiulas, E debera incluir el nombre del elemento raiz del documento XML. En nuestro ea- La siguiente tabla muestra otros símbolos, claves e indicadores importantes para las DTD: .. . . . dELEMENT .. listatitulos • A continuación aparece la clave SYSTEM. Signific~ que la DTD es válida localmente, "en nuestro sistema" . Es válida úni t , . camen e para nuestros archivos XML y no es pública. Los paréntesis sencillos agrupan subetique- () (titulo,autor +, editorial» tas, contienen valores de atributo v claves. Nota al margen: de forma muy distint 1 d (titulo,autor,editorial) blica. Dicha DTD se encuentra en los s~ e~ os ocumentos ~ se hace referencia a una DTD p ú- Partícula y: la coma indica la ordenación HTML PUBUC > Yal final . cl rvídores del W3C. La línea suele empezar con <fDOCTYPE , exacta de los elementos en el orden estable- ... se ID uye el enlace al servidor del W3C. cido. (titulolautorleditorial) • Por último, pero no por ello menos importante debe ,. cl . . Partícula o: la barra vertical significa que el que se encuentra la DTD Puesto ,ra ID ~ entre comillas la ruta al archivo en I solamente se puede utilizar uno de los ele- llamente "tituloe.dtd" . que se encuentra en el mismo ordenador, escribiremos senc i- mentos oroouestos. (titulo,autor,editorial) Si no se incluye ninguna notación, el ele- Sin Si todo ha ido bien, al abrir el archivo en Internet Explorer debería ver esto: mento debe aoarecer una sola vez. El signo de suma indica que el elemento autor+ ~ C:kwesXKarsoxnllecciorl2titOOs.xmI - + aparece como mínimo una vez o varias ve- ces. <?xml version=lIl.O· encoding=IIISQ-8859-1· ?::. descripcion? <IDOCTYPE listatitulos (View Source for full docty ) El signo de interrogación indica que el ele- ? - -distatituíoso • pe ... > mento es opcional; no es necesario utilizarlo. - -ccuaderno» Si se utiliza, solamente puede emplearse una <titulo>Photoshop 5.5</titulo> vez. <autoDMict ••,el K••rbn-c/autoro Con el asterisco se indica que el elemento se claves o puede utilizar tantas veces como se desee, pero su uso no es obüoatorio. El navegador Indica que se ha reconocido la OTO dELEMENT autor (#PCOATA» #PCOATA Este código significa parsed character data, es decir que el elemento puede contener conjuntos de caracteres pero no contenido multimedia. ~.
    • Lección 4: comprobar la validez de un documento XML 29 Lección 3: crear una OTO para la lista de títulos28 Lección 4: comprobar la validez de un documento XMLConocimiento adicional: OTO internas Y externasSi ha leído alguno de mis cuadernos anteriores, sabrá que siempre suelo dar dos variantes posibles. En esta lección aprenderá lo siguiente: ¿Quién comprueba el código?En el caso de CSS o JavaScript, por ejemplo, suelo indicarle como guardar el código a nivel interno • Por qué una OTO tiene sentido Como acabamos de ver, utilizar una OTO (o un(es decir en el documento HTML). y lo solemos hacer por comodidad o por motivos pedagógicos. • Diferencia entre parsers validadores y no esquema) vale realmente la pena.Después le muestro la variante externa. validadores Utilicemos la OTO. Todos los datos que intro-En este cuaderno le he indicado que guardase directamente la OTO de forma externa. Las ventajas • Práctica: validación de un documento duzcamos deberán ajustarse a este conjunto dede hacerlo son claras: cuando haya creado una OTO, podrá utilizarla para tantos archivos XML como reglas. Pero ... ¿a qué nos referimos condesee. Es como utilizar un patrón para muchos archivos XML. Sentido y sinsentido de la OTO "ajustarse"? ¿Quién comprueba si toda la in- Hasta ahora hemos creado el documento XML formación se corresponde con el patrón de laSin embargo, para no dejamos nada también quiero enseñarle cómo escribir una OTO interna. Est u- la OTO correspondiente. ¿Pero por qué neces i-y OTO?diaremos la sintaxis basándonos en el ejemplo de la lista de títulos. tamos la OTO? ¿No podríamos obviarla? Vamos a verlo. Escriba otro conjunto de datos Naturalmente. De esta forma obtendríamos en e~?-~~nto titulos.xml, en el que la infor- Sintaxis para una OTO interna La sintaxis para crear la OTO interna es muy sencilla. En primer lugar, le mostraré el enlace a la OTO (siempre que no nos equivocáramos al escribir) macion sera Incorrecta a propósito. un documento bien formado. externa, de forma esquemática, para comparar: Guarde el archivo con otro nombre, por ejemplo <?xm1 version="l.O" encoding="ISO-8859-1"?> Sin embargo, debe intentar entender la OTO tituloscaos.xml, como.un plan que se prepara previamente, una <!DOCTYPEelementoraiz SYSTEM"nombre.dtd"> espeae de patrón. Y es importante actuar con- He aquí mi propuesta, que está bien formada <elementoraiz> forme al plan trazado. pero no es válida: Si desea incorporar la OTO (en el ejemplo, nombre.dtd) a nivel interno, deberá escribir: Tomemos por ejemplo la lista de títulos. Supon- <libro> <?xml version="l.O" encoding="ISO-8859-1"?> gam~s que v~as personas están trabajando en . . <titu1o>Imagen <!DOCTYPE elementoraiz [ .. ~ta lista y mas tarde reúnen los distintos con- dlglta1</titu1o> Instrucciones ¡untos de datos. <autores>Michae1 Karbo</autores> ]> • <~l)ad.mo> <e1ementoraiz> ctitulo::.EI <autcor>Oavid registro el. Wlndows</titulo> Bo~on</;aulor> <editoria1>PC ~::~,:~~~~=J <~itori~>PC Cu.odernosc/editorial:> p ••. e editor" •.•••• stro</d.scripcicJn> Cuadernos</editoria1> . _ <descripcion>Todo sobre </elementoraiz> </cuademo> -<libro> lmagenes y bits</descripcion> La parte inicial de la lista de títulos tendrá este aspecto. Encontrará el ejemplo titulosinterno.xml en la <titulo>l~dlgltol</tltulo> <auloros>MIcha.1 KerOo</..ulo,,,"s:> <precio>4</precio> carpeta leccion3. :;::~~~~::o:.I~nes som odltori~>PC Cuodemos<.ladltoriiJI:> V blts<.ldascripclQn:> </libro> <;1itoro> <?xml version="l.O" encoding="ISO-8859-1"?> </tlft~t;tulcs:> <IDOCTYPE listatitulos [ Abrir el documento <!ELEMENTlistatitulos (cuaderno+» Sin un concepto unitario, reinará el caos en Internet Explorer < !ELEMENT ,cuaderno .(ti tulo, aut.or+, edi torial, desc:r:ipc:lon? r preéio+ 1> Abra el documento en Internet Explorer. ¿Qué Pero una de esas personas, en lugar de escribir ocurre? No pasa ... absolutamente nada. El na- <!ELEMENTtitulo (#PCDATA» <autor></autor>, escribe «autoress-clautores», Y vegador comprueba si existe el vínculo a una <!ELEMENTautor (#PCDATA» en lugar de <cuaderno></cuaderno> los títulos OTO. <!ELEMENTeditorial (#PCDATA» se llaman «lihroz-cilibro>, <!ELEMENTdescripcion (#PCDATA» ~ero, por lo demás, a Internet Explorer le da Na~almente, podremos seguir visualizando el Igual lo que hayamos escrito en la OTO. No im- <!ELEMENTprecio (#PCDATA» archivo. Aparentemente todo está ordenado portan las etiquetas, el orden ... en general se ]> per~ sin un concepto unificador solamente r~i- Ignora. <listatitu1os> nara el caos. . <cuaderno> <titulo>Photoshop 5.5</titulo> ?Quién podrá saber después dónde encontrar la <autor>Michae1 Karbo</autor> información que busca en un mar lleno de eti- <autor>Peter G. Christiansen</autor> quetas distintas? Los parsers no validadores no comprueban na- <editorial>PC Cuadernos</editorial> da. <precio>4</precio> </cuaderno> Quizás este pensando otra vez que podría ha- berse ahorrado la molestia de crear la OTO. P e- </listatitu1os> ro ...
    • Lección 4: comprobar la validez de un documento XML Lección 4: comprobar la validez de un documento XML 3130 ¿Tiene errores el documento? Instalación del validador Validación con XMLlNTPensemos en el futuro Si el documento no tienen ningún problema, no ¿En qué carpeta ha guardado el archivo? Yo ¿Ya ha descomprimido los archivos, con Win-Con XML uno tiene que tener siempre la vista debería ocurrir nada. Pero nuestro documento siempre lo guardo todo en la carpeta download. dows XP por ejemplo? ¿Con WinZip? ¿O conpuesta en el futuro. Como ya hemos dicho, contiene errores. El uso de <libroz-cllibro» en lu- Haga doble clic en el archivo iexmltls.exe. Siga FreeZip, que es gratuito?nuestro "romance con Internet Explorer" es gar de <título> <ltitulo> no se corresponde con los pasos del "installation wizard".sencillamente una solución de emergencia para members.ozemail.com.au/-nulifetv /freezip las reglas de la DTD. Por defecto, se creará la carpeta iexmltls en eleste curso acelerado. En ese caso, dispondrá de varios archivos. El disco duro, directamente bajo C:.Los programas futuros podrán comprobar per- que más nos interesa es xmlint.exe. Se trata defectamente si el código es correcto. En realidad, un programa basado en comandos de DOS. Sigadeberán hacerla, porque la introducción de da- mis instrucciones para poder trabajar con el tos (por ejemplo en una base de datos) solamen- programa: te tendrá sentido si nos ajustamos al conjunto 1. Copie el archivo xm/int.exe y los que lo de reglas (creado por nosotros mismos). El parser encuentra el error acompañan en la misma carpeta en la que se encuentre el archivo XMLque desee Para cualquier problema que se encuentre apa- validar. rece un mensaje de error con una indicación del punto donde se ha encontrado el error. 2. Abra una ventana de DOS. Para ello, Tenga en cuenta que solamente se mostrará el seleccione Inicio/Ejecutar. Aparecerá el El programa de validación XMLlNT cuadro de diálogo Ejecutar en el que puede primer error encontrado. Si cambia Instale los dos archivos con la extensión Inf Entonces, ¿cómo podemos saber si nuestro có- <libro></libro> por <cuaderno></ cuaderno> Nos interesan los dos archivos con la extensión escribir comandos. Si utiliza Windows digo es correcto? Deberá utilizar programas de comprobará que XMLlNT se queja entonces de inf. Son: 95/9B/Me, escriba command. En Windows <autores></ autores>. validación, herramientas especializadas en 2000/XP, escriba crnd. Presione [ENTRAR]. • msxmlval.inf comprobar errores. y le aseguro que hay bas- • mxcmlvw.inf iVa tenemos una ventana de DOS! Validación en Internet Explorer tantes ... 3. Desplácese a la carpeta deseada utili- Si lo desea, también puede validar documentos Haga clic en ambos archivos con el botón dere- Para este cuaderno he elegido la herramienta zando comandos de DOS. Por seguridad, de una forma más cómoda, y directamente des- cho del ratón y, en el menú contextual, seleccio- xmlint.exe, que se caracteriza por ser muy senci- de Internet Explorer. Para ello, deberá descar- ne Instalar. Espere un momento. Para que los lla y ocupar muy poco. primero escriba gar el segundo programa que le propongo, las cambios tengan efecto, deberá cerrar y volver a _..~ ..~,!~.!!:!!~_Y!.~!I .. _ ~_~?~~,.g9!.~!.df.-:._~.!.~,::!!!_1.2_P.T!~: .. .___ o _.r~ cd Internet Explorer Tools far Validation XML and abrir Internet Explorer. viewing XSLT Output, Y presione [ENTRAR]. sto le llevará a la E Validación mediante el menú contex- La instalación es algo más complicada. Abra carpeta raíz. nuevamente la página tual 4. Utilizando el comando cd nombredecar- http://msdn.microsoft.com/ downloads A partir de ese momento, en el menú contextual peta podrá navegar hasta la carpeta de- de Internet Explorar encontrará dos nuevos y busque: comandos, aunque a nosotros solamente nos in- seada. Si ha seguido mis consejos, los ar- validation xm1 internet exp10rer teresa: chivos que queremos validar deberían en- tllI.WI...tWll",~ •. contrarse en C:cursoxml. Escriba: W.bp.",lgpro.ot •. ~ <¡; • Validate XML Internet Explorer Tools for Validating XML and cd cursoxml Viewing XSLT Output . Abra el archivo XML que desee validar con el Esta herramienta es gratuita y funcional C~mlntly, wllen bro,",siOQ XML files usí"iI Sb. (byte.):,, ,:nO,OOO navega dar. Haga clic con el botón derecho en el fhcrosoft8 Intem8t fxplorn, !:he XMI.. docomellts .". "."; 5. A continuación, escriba un comando ba- • ..,. not yolid.ted. Ir¡ "ddition, sourcoofthedocument,onlytheXMLisfllrtumed "fhe" "¡.";110 tIl. ~ Ulld.tlte,; fkippctrtecl! . 01/15/2001 .,e, documento y seleccione Validate XML. El programa XMLINT es de Microsoft. Visite sándose en xm/int nombredearchivo. Debe- andthereisoo"lIytoviewthlloutputfromttu, XSL01"XSlTstylesheCtthetme,hll .•• been e used é~ http://msdn.microsoft.com/ downloads y bus- rá sustituir nombredearchivo por el nombre to blInsfonn th.t XML documento ~ PlUM" lO NO."utoup. que xmlint. Descargue el archivo ZIP de tan del archivo XMLque desee comprobar Th.I~metbplo •.•rtoof$ for ••••id.tinQ XML..,o1 vÍ1lwin", XSlTOlItputwil."eble l IIsheH option solo 23 kB Y descomprímalo en su ordenador. (tituloscaos.xm~. Por lo tanto: ..n.nv¡ ••.• inqXMLfi/.sto s •• ouq:,l/t.ln&ddition.Jou...".lsov.~dmXML th. pl"OC8u.d XSL o.inrt en emb.dd,d set._me when load ••.• I XML 1 v¡.th.¡IIte",.tExpla.re •..MIMEvi ••••er.Thisl;.lnb. xmlint titu1oscaos.xml !k,f.M:~l·~:;¡~~"íi1~m y presione [Entrar]. Descargue el archivo lexmltls.exe a su ordenador El mismo error, pero esta vez como cuadro de diálogo ¿Lo ha encontrado? Haga clic en Download, confirme el contrato de licencia y descargue el archivo iexmltls.exe. .•.
    • , I32 Sección práctica B: primeros ejercicios con XML Lección 5: definir las etiquetas con atributos 33 Lección 5: definir las etiquetas con atributosA estas alturas ya sabrá cómo: En esta lección aprenderá a:• Crear documentos XML bien formados Elementos XML y nombres de cam- • Planificar la estructura con un esquema• Crear el prólogo, las etiquetas y el elemento raíz pos • Crear subnodos• Escribir una DTD y crear XML válido • Definir mejor las etiquetas con la ayuda de Lo sabía. Ya ha aparecido por primera vez la• Validar archivos XML atributos palabra nombre de campo. • Incluir atributos en la DTD y el documento Esto le demuestra la estrecha relación que existe XML e~tr~ la planificación de estructuras XML y elEn estos ejercicios, repasaremos y reforzaremos los conocimientos de las primeras cuatro lecciones. diseno de bases de datos. Porque precisamenteEncontrará todas las respuestas en el suplemento online de PC Cuadernos. En esta lección practicaremos con un segundo al definir una base de datos es necesario esta- proyecto. Esta vez, la estructura tendrá aún más blecer previamente los campos que se utiliza-Ejercicio 81: cuestionario: crear un documento XML sencillo ramificaciones. rán. Y ~n ~os archivos XML es importante pen-Cree el siguiente documento sencillo en XML: el elemento raíz debe ser ~cuestiona~o>. Den~o de este También le mostraré lo útil que puede llegar a sar que etiquetas (o elementos) serán necesarios.elemento deberá incluir las etiquetas <pregunta> y <respuesta>. El conterudo es de libre elección. ser un esquema previo. ¿Cómo llamaremos a nuestros elementos?Guarde el documento como preguntas.xml. Planifiquemos un base de datos El elemento raíz se llamaráEjercicio 82: crear una OTO para una lista de direcciones de productos • productosPlanifique un proyecto extenso, una lista de direcciones. E~.IJ!~~e.~~_~_D2l?.:.... . _ Como hemos dicho, XML está especialmente Sin embargo, tenemos varias "partidas", es de-Cree primero la definición del tipo de documento indicado para datos bien estructurados. Esta cir varios productos. Por eso acotaremos cada(DTD) para una lista de direcciones en XML. El vez tomaremos como ejemplo una base de datos elemento conelemento raíz debe llamarse listadirecciones. de productos. Queremos incluir la siguiente in- • partidasLos conjuntos de datos correspondientes a una formación: <111ml vsrsion.·l.o- encoding-"ISO-9859-1" 7>dirección se incluirán dentro de <IDQCTVPE listadlreccionas (View Source for fuN doctype .. » • Nombre del producto Cada "partida" (cada producto) incluirá los si- - <listadirecClones><.direccion></direccion>. guientes campos: - cdiraccicro <nombra>Pedro<lnombre> • Referencia del producto ILa estructura tiene que tener este aspecto y seguir <.pe4~dO>PI~plltd,.a</apeMido> !, • Fabricante • nombre (el nombre del producto) <calls:>Avenlda Roa 7</calle>este orden: nombre - apellido - calle - CP - po- <CP:>12345</CP,. • Precio • num (la referencia del producto) <poblacion:>Rocadura</poblacicn>blacion - tel - fax - email - www <teb398409B3</teb • fabricante (el fabricante del producto) <teb649090934</tal> Además, queremos identificar al fabricante por:Guarde el documento como direcciones.dtd. Tenga </direccion> • precio (subdividido mediante atributos)en cuenta que el número de teléfono puede apa- - <diraccion> <nombr8:>Wllma</nombro> • Empresa <apollido>Plcapladra</apellido> • Localidad Dado que tenemos que subdividir el campo fa-recer varias veces. Tenga en cuenta, además, que <calle>Avenlda Rou 9</calle> bricante, también tendremos los subcampos:no todo el mundo tendrá fax, correo electrónico o <CP>204S0</CP> <poblacion>Ro~ura<lpoblacion> Sin embargo, no siempre conoceremos la locali-página Web. <tel>017017487623<)leb • empresa (nombre de la empresa) <email>wllmeeplcapledra.com</emaib dad del fabricante. No es obligatorio incluirla. <www>w" ••••. llmeplc.!lpledra.com</www> w • localidad (sede de la empresa, no siempre </direcclon> El precio también tiene una particularidad. Se disponible) ,u1t:tl , ;¡ "".] •.. J .~,~ ~.. rmlJll51!L~- (. trata de una etiqueta pero tiene dosEjercicio 83: crear un documento XML "vertientes". Queremos reflejar dos precios dis- Planificación previa de la OTO tintos:Escriba un documento XML en el que incluirá tres direcciones de prueba. Piense en las direcciones. Con todo esto ya casi podemos dedicamos aEscriba también números de fax, correo electrónico y sitio Web, por ejemplo. Una de las tres pers o- • Precio de venta al público (precio final) planificar la DTD. Esta vez lo haremos asínas debería tener dos números de teléfono. • Precio de venta al distribuidor (60% del pre- creando primero la DTD. Para que le resuÍte cio final) más fácil de entender, abajo he incluido un es-Guarde el documento como listadirecciones.xml, quema visuaLEstablezca un enlace a la DTD que ha creado en el ejercicio anterior. Para ello, disponemos de los atributos. A conti- nuación, pensaremos los nombres de los cam-Ejercicio 84: comprobar la validez de un documento pos.Compruebe la validez del documento listadireccionee.xml. --~--- -~-- ---------
    • Lección 5: definir las etiquetas con atributos 35 Lección 5: definir las etiquetas con atributos34 Definir atributos en la OTOVisión general mediante una representación gráfica ., . En él h clarificado visualmente la ordenaoon de los elementos. Ya hemos visto el aspecto que tienen las etiquetas con atributos, pero ¿cómo definimos estos atrib u-Observe atentamente nu esquema. e. dientes Los círculos simbolizan tos en la DTD? Deberá utilizar esta sintaxis :Además, he incluido (siempre que hagan falta) los SIgnOScorresponcieco=- . <!ATTLIST nombreetiqueta nombreatributo tipo #OPTION>las ramificaciones o nodos. La palabra ATTLIST es la abreviatura de Atribute list (lista de atributos). Detrás deberemos incluir los nombres de etiquetas y atributos, separados por un espacio en blanco. La palabra tipo indica el tipo del atributo. En el siguiente ejemplo, el atributo tiene que construirse conforme a este "patrón de ti- po": • (Valorl valor2 etc . ) ¿Qué quiero decir con "patrón de tipo"? Vamos a establecer los valores del atributo. Entre paréntesis deberá escribir una lista de los valores que desee asignar al atributo; no hay límite de número. Puede elegir dos, como en el ejemplo, o cientos. No utilice la coma como separador, sino la barra vertical. En este caso no depende de un orden concreto. precio+ (cllente= "final" o "distribuido"") ¿Pero qué significa #OPTION? La palabra es un comodín para una opción, por ejemplo #REQUIRED.Required significa "necesario", y quiere decir que el atributo es obligatorio; es decir: hay que utilizarlo. :sTer .~ Volvamos a nuestro ejemplo. La etiqueta precio tiene que contener el atributo cliente. Los valores po- La estructura del documento XM L se puede reconocer fácilmente en este esquema sibles son final y distribuidor. El atributo es obligatorio, es decir "required". Deberá escribirlo así: , d la Le siguen las pártidas. El signo de <!ATTLIST precio cliente (distribuidorfinal) #REQUIRED> El elemento raíz productos ~tá. en el nivlellmasaltto e ~:a;;pe~ y que debe aparecer como mín i- suma después de partidas indica que e e emen o se pu "tid Este es el aspecto de la OTO: mo una vez. Una base de datos con un solo producto no tendría ningún sen o. . .. 1 Hablaremos en detalle de otras opciones de los atributos en la siguiente lección. Ahora ya hemos ., . d interro ación: este indicador de frecuenoa SIgnificaque e Seguro que también le suena el SIgnO e ibl . duya la localidad pero no es obligatorio acumulado suficiente información para escribir correctamente la DTD. Copie las siguiente líneas y elemento es opcional. En otras palabras: es poSI e que se m . guárdelas como productos.dtd. He resaltado en gris la línea con la definición de atributos: hacerlo. 1 d lar 1 etos ., pod , adelante una DTD. Pero antes e esve e os secr <!ELEMENTproductos (partidas+» Con estos conOClIDlentos emos crear mas de los atributos. <!ELEMENTpartidas (nombre,num,fabricante,precio+» <!ELEMENTnombre (#PCDATA» Definir más detalladamente las etiquetas con atributos .., <!ELEMENTnum (#PCDATA» . . tas Se o que ya conoce el prmoplO de HfML . Los atributos sirven para definir mejor las etíque . gur <!ELEMENTfabricante (empresa,localidad?» árraf HfML Un párrafo normal comienza con la etiqueta <!ELEMENTempresa (#PCDATA» Supongamos que d~ea em~ un ~~er= escribiremos <p align= "right ">, mientras que para <!ELEMENTlocalidad (#PCDATA» <p>. Si deseamos ~ear el párrafo a a l _ "1 "» Hemos definido más detalladamente la etiqueta <!ELEMENTprecio (#PCDATA» alinearlo a la izquierda ~ndremos <p a Ign- eft. ht left ( ,·ustify). En este ejemplo el uso del atribu- <: !ATTLIST precío _cl.i.ente· (dis~ribui~or If í.ria.L) #REQUlRED> con ayuda del atributo allgn, cuyos valores son ng o o to es opcional, no obligatorio. . ., sible definir eti uetas utilizando atributos. Siguiendo el ejemplo que no~ ocu- Visión general de las instrucciones de la OTO En XML también es ~ drá d 1-bl" ertientes" Para representarlo he inventado el atributo Quizás vale la pena que repasemos una vez más las distintas instrucciones de la DTD. De esta forma pa, la etiqueta «precio> ten os poSl es v. . reforzará los conocimientos adquiridos hasta ahora. cliente, que podrá tener uno de estos dos valores. • final 1. La primera Hnea define el elemento rafz, en nuestro caso productos. Este elemento contiene • distribuidor , di varias partidas, y lo indicamos mediante el operador de suma, que en este caso también po- . . . es se escribirá así: <precio cliente= "final ">. Si el producto se envía a un s- drfamos colocar después del paréntesis de cierre. El preoo para clientes final . l t "d triúuidor"> Además nos interesa vemos forzados tribuidor, lo definiremos como: «precto e ¡en e= IS • r <IELEMENTproductos (partidas+» a utilizar este atributo.
    • • I36 Lección 5: definir las etiquetas con atributos Lección 5: definir las etiquetas con atributos 37 2. Las partidas contienen las etiquetas nombre, num, fabricante y precio. El precio tiene que Visión general del documento XML aparecer como mínimo dos veces. Todas las demás etiquetas aparecerán solamente una vez en ~blaaDTDel código fuente y guárdelo con el nombre productos.xml. No se olvide de incl . e relación con partidas. La coma indica el orden exacto y la secuencialidad de los elementos. era a que hemos creado antes (resaltada en gris). uir una rereren-<!ELEMENT partidas (nombre,num,fabricante,precio+» <?xml version="l.O" encoding="ISO-8859_1"?> 3. Los dos elementos aseguran que las etiquetas pueden contener caracteres -de ello se ocupa -;:·.IPOCTIPEproductos SYSTEM "prodüétos",dtd,"; _: .:, .. , ;~~./""""""- la instrucción #PCDATA. <productos>· . -<!ELEMENT nombre (#PCDATA» <partidas><!ELEMENT num (#PCDATA» <nombre>Muñeca de trapo</nombre> <num>32945-38</num> 4. Una fila más abajo se establece la jerarquía de anidación: la etiqueta fabricante debe incluir <fabricante> la etiqueta empresa y posiblemente también localidad.<!ELEMENT fabricante (empresa,localidad?» <empresa>Juegolandia SA</empresa><!ELEMENT empresa (#PCDATA» <localidad>Valladolid</localidad> </fabricante><!ELEMENT localidad (#PCDATA» <precio cliente="final">60</precio> 5. Las dos líneas siguientes se ocupan de definir los atributos para la etiqueta precio. En primer <precio cliente="distribuidor">40</precio> lugar asignaremos al elemento la clave #PCDA TA. </partidas><!ELEMENT precio (#PCDATA» <partidas> <nombre>Caballito de madera</nombre> 6. En la fila siguiente definiremos el atributo. El atributo cliente puede tener los valores distribUir <num>32945-41</num> doro final. Mediante la clave #REQUlRED indicamos que los atributos son obligatorios. <fabricante><!ATTLIST precio cliente (distribuidor I final) #REQUIRED> <empresa>Juegolandia SA</empresa> <localidad>Valladolid</localidad>El documento XML </fabricante>La DTO está terminada, y ahora solo nos falta el archivo XML. En la página siguiente le mostraré t o- <precio cliente="final">18</precio>do el documento. <pre.cio cliente=" distribuidor" >12</precio>Después de copiar el código, no se olvide de valídarlo, ya que es la única forma en que podrá estar </partl.das>seguro de no haber cometido ningún error. <partidas> <nombre>Tren madera básico</nombre> <num>32945-41</num> <fabricante> <empresa>Natura SL</empresa> </fabricante> <?xml version="l,O· encoding="Iso-88S9-1· ?-:> <precio cliente="final">80</precio> <!DOCTYPE productos (View soorc .1<>,,_.6.1I1.""""tu."" .b . .__ <precio cliente="distribuidor">60</precio> - <productos> </partidas> - <partidas> </productos> <nombre>Muñec~ de trepo-e/ <num>32945-38</num> Retornaremos este ejemplo más adelante. A artir de la . , , - <fabricante> ::::f: archivo XML utilizando CSS y 1 P . pagma 56 le mostrare como dar formato a un cempresac-jueqotendíe SA ::~ . veremos as ventajas de XSL a partir de la pág ina 61. <localidad>Valladolid</loca :-;;, c/fabricanteo .~.; ,, <precio cliente=-.=inal">60</precio> ~.-< <precio cliente=distribuldor>4tl</precio> !.; </partidas> ~: _._._:::_5P~i!.a..s.::_" . .. __ .__ .. .__._. .__._~---.. ---~_.--c----------------.------- __ _ Compruebe la validez del documento. En este caso, hemos utilizado el comando Valfdate XML en Internet Explorer
    • Lección 6: más información sobre los atributos 39 Lección 6: más información sobre los atributos38 Ventajas e inconvenientes de COATA 2. #IMPLIED: el atributo es opcio-Lección 6: Más sobre los atributos Hablemos un poco de la instrucción CDATA nal La hemos utilizado para crear un atributo queEn esta lección aprenderá a: puede tomar cualquier valor. Esto supone una Ampliemos un poco nuestra DTD. Incluiré otro• 1. Definir atributos sin preestablecer valores <?xml verstcn=r r.n" encoding="iso-8859-1" <IOOCTYPE 1> qrañco (View Source for fui! doctype . .» ventaja. a~buto ll~.do lzw (es un proceso de compre- sion para gráficos TIF). El atributo podrá acep-• 2. Definir atributos con valor opcional _ cqrafico> También podemos rellenarlo con espacios en <imagen anchura="100· tar los valores yes o no, en función de si el gráfi-• 3. Predeterminar el valor del atributo altura="60">rosa.ttf<!imagen> blanco o caracteres especiales. </grafica> co está comprimido o no.• 4. Fijar el valor preestablecido -En este punto ya tendrá cierto dominio de los La etiqueta contiene los atributos altura y anchura </~~~~~~: <qrañco> altura="60· anchura=-.; Ü·>ros4I.tlf<jlmagen> Con este ejemplo le mostraré cómo conseguir por medio de la clave #IMPLIED, que el atrib~-atributos. A continuación, veremos más opcio- 1 Si lo desea, puede copiar el ejemplo y guardarlo to sea opcional. He marcado la línea afectada denes. Vaya tontaría -pero es válido color gris. con el nombre grafico.xml. Establezca además un Los archivos de ejemplo de esta lección se en- enlace (en gris) a la DTD que todavía no hemos Como puede ver, este valor inútil del atributo <!ELEMENT grafico (imagen» cuentran en la carpeta leccion6: www.pc- creado, llamada grafico.dtd: se acepta sin rechistar, e incluso pasa la valida- <!ELEMENT imagen (#PCDATA» cuadernos.com / suplementos. <?xml version="l.O" encoding= ción. <!ATTLIST imagen "iso-8859-1"?> anchura CDATA #REQUlRED <!DOCTYPEgrafico SYSTEM"grafico:dtd"> Clave NMTOKEN altura CDATA #REQUlRED 1. CDATA: no preestablecer nin- Si desea excluir los espacios en blanco y los ca- l~w (YE!sJÍlO} #lMPL1ED>; gún valor <grafico> racteres especiales, deberá recurrir a la clave ¿Qué ha aprendido hasta ahora sobre los atribu- <imagen anchura="lOO" altu- NMTOKEN. En lugar de La práctica hace al maestro tos? Es posible establecer previamente los valo- ra="60">rosa.tif</imagen> anchura CDATA #REQUlRED res. Asegúrese de que sean obligatorios (#REQUIRED) o se puedan emplear de forma opcional (#IMPLIED). El truco: hasta ahora </grafico> La OTO para definir los atributos ( escriba: anchura NMTOKEN#REQUlRED P:egunta: ~El ar~vo XML actual (véase la pá- gma anterior) slgue correspondiéndose con el "patrón" de la DTD? Si es así, ¿por qué? Valide siempre hemos indicado solo un atributo y en Observemos la OTD correspondiente. Escriba el De esta forma, estarán permitidos únicamente el archivo. segundo lugar hemos predefinido el valor o ejemplo y guárdelo como grafico.dld. los siguientes caracteres: P~egunta: Pero ¿qué ocurre si en la etiqueta valores del atributo. <!ELEMENT grafico (imagen» • Letras <Imagen> yo pongo el par atributo-valor <!ELEMENT imagen (#PCDATA» Ejemplo: etiqueta para "describir • Cifras lzw=" sin "? Pruébelo. Valide el archivo. <!ATTLIST imagen • Punto (), dos puntos (:) imágenes" anchura CDATA #REQUlRED ¿Por qué aparece un mensaje de error? • Guión (-), guión bajo U Tomemos un ejemplo del ámbito gráfico. Su- altura CDATA #REQUIRED> :~ c:I,btoMXM.1,o.noxrQ.IIKx2~.~ pongamos que para una determinada aplicación Por desgracia, no existe ninguna forma <?:lCmlversion="1.0" encoding=iso-8859-¡ 1> XML necesitará una etiqueta que almacene el Nos interesan especialmente las tres últimas lí- "elegante" de limítarlo únicamente a letras o <!OOCTIPE grafico (Vi6w soorce fbr fun doctyp8 .. .» - <grafico> nombre de una imagen. En nuestro ejemplo se neas, ya que en realidad son una sola fila. números entre 10 y 260, por ejemplo. En ese ca- <I~j~~~~: anchura=100 altura="60 12 .•••. ·sln·>rosa.tlf<!imagan> = trata de la imagen (imaginaria) rosatii. Dicha • Por motivos de visibilidad he forzado los so debería indicar todos los valores aceptados etiqueta debe contener atributos que indiquen saltos de línea: por lo tanto, la definición de entre paréntesis. la anchura y la altura de la imagen. atributos se realiza en una sola línea. • Después de !ATTUST se escribe el nombre Uegados a este punto, podemos ver los incon- Este es el aspecto de la supuesta etiqueta: venientes del uso del concepto de DTD como <imagen anchura="lOO" altura="60"> de la etiqueta, en este caso imagen. "plantilla de muestra". Porque las DTD todavía rosa.tif</bild> • En lugar de los paréntesis que utilizábamos en valores predefinidos escribiremos única- provienen de los "viejos tiempos de SGML" . Tenga en cuenta que el nombre del atributo no Por ese motivo, en el año 2001 se introdujo un El atributo es opcional, pero el valor no mente CDATA, la abreviatura de character puede contener caracteres especiales. nuevo principio más complejo llamado schema Respuestas: en el primer caso, el archivo XML data. (esquema). Hablaremos de ello a partir de la • Indicamos dos atributos, que en el ejemplo todavía se corresponde con el "patrón" de la página 69. son anchura y altura. :0DAi~SifihifiCá:ql.l~etÍ¡áíbt pUeoi:l" DTD. El atributo solo era "implied", opcional. • No preestablecemos ningún valor. ~~,i;¿;,¿jg(~~,/(J~liª;~~;~~r~&~I:~SPL!W~il· Mientras tanto, nos dedicaremos un rato más a E.n- segundo caso, el archivo XML ya no se el las DTD, ya que siguen siendo la opción más ajusta a la DTD porque el atributo contiene un Piense en el tamaño de los gráficos; tienen una Elimine un atributo de la etiqueta <imagen> e habitual. valor erróneo. anchura y una altura determinada. Pero no tie- jntente validar el documento. Puesto que ambos ne sentido indicar todos los valores posibles, ya atributos son "required", aparecerá un mensaje que podría haber valores desde 1 píxel hasta de error. 600, 800 o incluso 1.024.
    • Lección 7: entidades como "comodines 41 Lección 6: más información sobre los atributos403. Predefinir un valor 4. FIXED: fijar el valor preestable- Lección 7: utilizar entidades como "comodines"Volvamos a los atributos. Ya sabe cómo hacer cido En esta lección aprenderá lo siguiente: Crear la OTO para la cartaque los atributos sean obligatorios u optativos, Sin embargo, es posible "fijar" el valor preesta- • Utilizar entidades como comodines internos A continuación, crearemos la OTO carla.dtd. In-cómo establecer los valores deseados o dejarlo blecido. Para ello, deberá escribir después del • Incorporar archivos externos a través de en- tente hacerlo usted mismo y después compare:"todo abierto" con CDATA. valor o valores del atributo la clave tidades <!ELEMENT carta (para,asunto,texto»Sin embargo, todavía no sabe cómo predefinir • "Parameter-Entities" para la OTO <!ELEMENT para (#PCDATA» • #FIXEDun atributo con un valor. A continuación, que- <!ELEMENT asunto (#PCDATA»remos cambiar el ejemplo del gráfico para pre- y detrás de ella el valor predefinido entre-comi- ¿Se acuerda de nuestra disertación sobre las en- tidades? En la página 21 le he presentado las en- <!ELEMENT texto (#PCDATA»establecer el par atributo-valor lzw= "yes ", llas. Aplicándolo a nuestro ejemplo, esta sería la modificación necesaria: tidades como una especie de "comodines" para ¿Dónde está la entidad? Enseguida la inserta-Para ello, modifique la línea caracteres especiales. remos. lzw (yeslno) #FlXED "yes">lzw (yeslno) #IMPLIED> Pero deténgase un momento a pensar. ¿Tiene A continuación, le mostraré cómo se pueden Insertar una entidadde la siguiente forma: utilizar estas "entities" como comodines para sentido poner yes y no como elección y después En el ejemplo trabajaremos con una entidadlzw (yeslno) "yes"> asignar como valor "fijo" yes solamente? texto. En primer lugar hablaremos de llamada &nombre; . En los puntos en los queEscriba el valor predefinido (preestablecido) en "entidades internas", que actúan dentro del ar- Aún es más clara la siguiente línea. deseamos insertar el nombre Pedro colocaremoslugar de #IMPLIEO o #REQUIREO. Si trabaja chivo XML. Después hablaremos de las entida- lzw CDATA#FIXED "yes"> la entidad &nombre; . Esta es la única maneracon un valor predefinido, no podrá utilizar más des que solamente se utilizan en la OTO. de que el archivo XML actúe como plantilla pa-estas claves. La OTO completa de nuestro ejemplo tendrá es- 1. Más comodidad: entidades in- ra miles de cartas dirigidas a miles de destinat a- te aspecto: rios. ternas ¿Qué ocurre? iPruébelo! Borre el atributo lzw en <!ELEMENTgrafico (imagen» <!ELEMENT imagen (#PCDATA» ( ¿Con qué podríamos comparar las entidades? <!ATTLIST imagen Quizás con el principio de la impresión en serie el archivo XML. anchura CDATA#REQUlRED (en Word se llama "combinar corresponden- <7)(111I version::l.O· encoding=iso-88S9-1 1> ~ altura CDATA#REQUlRED cia"). Disponemos de una "plantilla de carta" Cuando haya modificado el archivo XML, so- <!OQCTVPE grafico (View Source for tu. doctyfJ6 ... » ;:~" válida para cientos de destinatarios. Los ea m- lzw CDATA#FIXED "yes"> lamente obtendrá un mensaje de error. Internet - <g~:~::n anch •.•. =·lÓO· a Oiltura="fjO IlW=·YBs·>rosa.tJf~gen> ~:. pos de combinar correspondencia sirven para Explorer se quejará de una "referencia a la enti- </9.<0> l ~ Compruebe nuevamente que la validación sea correcta. insertar, por ejemplo, los nombres de cada uno dad no definida nombre:". de los destinatarios. El navegador establece el atributo y el valor automática- Definir una entidad mente Los programadores conocen un concepto simi- Las entidades se deben definir en la OTO. Esta Internet Explorer inserta el atributo junto con el lar llamado variable. Una variable es una espe- cie de comodín para una determinada cadena es la sintaxis correspondiente: valor predefinido de forma automática. <!ENTITY nombreentidad "contenido"> de caracteres. Las variables solamente se decl a- ¿Pero qué ocurre cuando, en lugar de yes, le in- ran una vez, y su contenido puede cambiar. El comodín nombreeniidad se debe sustituir por terese que sea el valor no? Escriba sencillamente Tranquilizador: Valldatlon Successful el nombre de la entidad en cuestión. Pero aquí Izw="no". Archivo XML para una carta no debe incluir & Y i Como ejemplo, escribiremos un archivo XML para una carta. La llamaremos caria.xml y des- pués crearemos la OTO correspondiente car- ta.dtd. Escriba esta línea al final de la OTO: <?xml version="l.O" encoding= <!ENTITY nombre "Pedro"> "iso-8859-1"?> <!DOCTYPE carta SYSTEM "carta.dtd"> <carta> <?)(ml versicneü.ü encoding="iso-8859-1" 1> <para>Pedro</para> <!OOCTYPE carta (View Source for fuJ/ ooctvpe. .. )> - <carta> <asunto>Concierto</asunto> <para>Pedro<!para> <:asunto>Condelto</asunto> <texto>Hola Pedro, ¿cuándo nos de)(to>Hola Pedro, Lcuo1§ndo nos vemos?</texto> vemos?</texto> </carta> </carta> Abracadabra: en lugar del comodín aparece el texto Con este ejemplo vamos a hacer que el destina- tario Pedro se repita continuamente.
    • 42 Lección 7: entidades como "cornodines" Lección 7: entidades como "comodines" 43Los trucos de la práctica: ¿acentos? carta.dtd La lista del inventario en XML ~ Archiva OTONo está nada mal, este concepto de las entida- ~ WlI 1 K8 En primer lugar le mostraré el inventario en XML. Como puede ver, la lista es muy sencilla:des. Pero, en la práctica, el navegador tiene al- <?xml version="l.O" encoding="iso-8859-1"?>gunos problemas. Si intenta incluir acentos o ca-racteres especiales en el contenido de una enti-dad, las cosas se torcerán. I <!DOCTYPE inventario <inventario> SYSTEM "inventario.dtd"> <mesa marca="Desktop">2</mesa>En pocas palabras: un nombre como González no <silla marca="Orco">3</silla>se podría mostrar. Aparecería un mensaje de <armario marca="Troll">l</armario>error. <armario marca="Orco">l</armario> Guarde el nombre en un archivo de texto externo <estanteria marca="Ikea">3</estanteria> Este es el código fuente de la DTD: </inventario> <!ELEMENT carta (para,asunto,texto» La DTD se vuelve realmente interesante. En ella establezco que las cuatro etiquetas se pueden util i- <!ELEMENTpara (#PCDATA» zar en cualquier orden (opción). Pueden aparecer tantas veces como se desee (quién sabe cuántos <!ELEMENTasunto (#PCDATA» armarios hay en su oficina), pero no deben aparecer obligatoriamente. Para ello, deberá utilizar un Se enc:entr6 un c.r4cter no .¡lid. en e conlenl". del text.. EfTGr el pNCI!I" <!ELEMENT texto (#PCDATA» asterisco. Observe la DTD de abajo, en la segunda línea: he utilizado el asterisco fuera de los parént e- flle:/IIC:/kw/e./XMljcursolCmIJlecclon7/1_enttUe._lnttlm •• /problemeen, -c!ENTITY nombze SYSTEM~IIÍlombre_txt-; sis para que actúe sobre todo el grupo. . ., ¡~." Un •• 6, Po.ld"" ZZ " ct !:NTITY nombre "Conz: Compárelo con los archivos de las carpetas que Sintaxis de las entidades parámetro Adiós a la "discriminación de los acentos" encontrará en leccion7. (www.pc- Utilicemos finalmente las ventajas de las entidades parámetro. Antes deberemos hablar de la si ntaxis. cuadernos.com)La solución: al principio de la DTD Yde forma Volverá a tener el problema con los acentos, pe- éritiaád deti9, ~Una eii!i!lad páráiñ~ro no se rQde~ coij:loscara~eres ~.; si(1oconc°;¡-:;.:A<jemásfeStaexcepcional, escriba un prólogo XML estable- ro este tipo de "entidades externas" también . u . al.~[lCip.lo~e tooq de la DJ!i~:,. 1 ~:f:1.: •. ;~;:-~fi.i .~ ~~)im!!!:~E!rciendo el conjunto de caracteres Latin-l con pueden plantear otros problemas. Una entidad parámetro debe utilizar la siguiente sintaxis: < !ENTITY % nombreentidadencoding=" iso-8859-1". "contenido" >. Observe que hay un espacio en blanco entre el signo de porcentaje, el nombre de la 3. Entidades parámetro en la OTO2. Otra opción: archivos externos entidad y el contenido propiamente dicho. Puede acceder al contenido de la entidad mediante Finalmente le mostraré la tercera forma que %nombreentidad; en este caso el signo de porcentaje y el punto y coma del final se deben juntar alCon estas fantásticas entidades también es posi- pueden adquirir las entidades. También se pue- nombre sin espacios en blanco.ble vincular archivos (XML) externos. Esta sería de trabajar con comodines dentro de una DTD.la sintaxis: La OTO del ejemplo<!ENTITY nombreentidad SYSTEM Las llamadas "parameter-entities" o entidades"archivo.end > ll parámetro son adecuadas cuando se trabaja con En nuestro ejemplo, la entidad se va a llamar atributo. El contenido consta del nombre de atributonombreentidad se sustituirá por el nombre de la DTD muy largas y se desea ahorrar tener que marca con los valores Desktop, Orco, Troll, Ikea. Todos tienen que ser "required". Por lo tanto, comoentidad. Después deberemos escribir un espacio volver a escribir párrafos repetitivos. contenido escribo esta línea: marca (Deskiop IOrko I Trolll Ikea) #REQUIRED. Tenga en cuenta que elen blanco y la clave SYSTEM.A continuación, contenido tiene que estar escrito siempre entre comillas.otro espacio en blanco y el nombre con la exten- Ejemplo con un inventario A continuación le muestro la secuencia de comandos del archivo inueniario.dtd. He resaltado en grissión (y si hace falta,la ruta de acceso) del archi- Para darle un ejemplo he pensado en crear un la línea con la definición de la entidad, y las entidades aparecen en negrita:vo en cuestión, siempre entre comillas. inventario. En un documento vamos a mostrar la cantidad de distintos muebles de oficina. Para <!ENTITY % atributo "marca (DesktoplOrcolTrollI Ikea) #REQUlRED">Puede tratarse de un archivo XML o de un a r- ello utilizaré los elementos <!ELEMENT inventario (mesalsillalarmariolestanterial*>chivo de texto. <!ELEMENTmesa (#PCDATA» • mesa <!ATTLIST mesa %atributo;>Visión general de la OTO • silla • armario, etc. <!ELEMENT silla (#PCDATA»Vamos a probarlo. En este ejemplo trabajaremos <!ATTLIST silla %atributo;>con un archivo de texto. Cada etiqueta deberá tener el atributo marca, <!ELEMENTarmario (#PCDATA»• El archivo XML no se modificará que asignará diversas marcas predefinidas co- <!ATTLIST armario %atributo;>• El nombre se almacenará en el archivo de mo valor. Y he aquí cómo se simplifican las co- <!ELEMENTestanteria (#PCDATA» texto nombre.txt sas ... <!ATTLIST estanteria %atributo;>Para ello deberemos modificar únicamente la Este ejemplo muestra que con las entidades parámetro es posible ahorrarse trabajo de escritura rep e-DTD. titiva. Compárelo con los archivos de la subcarpeta leccion7 del suplemento.
    • 44 Sección práctica C: atributos, OTO y entidades Lección 8: anidación y uso del paréntesis en la OTO 45 Lección 8: anidación y juegos con paréntesis en la OTOAhora ya sabe cómo: En esta lección aprenderá a: Grupos y operadores• Utilizar Ydefinir atributos en la OTO • Utilizar correctamente los indicadores de Cuando valide el documento comprobará que• Predefinir y fijar valores de atributos frecuencia todo está perfecto. El documento XML es válido• Utilizar entidades como comodines • Comprender la relación entre el orden de los y el orden es el correcto; ahora compárelo con elementos y la agrupación este fragmento: En primer lugar, nos ocuparemos de aclarar y (titulol,titulo2,parrafo,marco)¿Qué le parecería hacer un poco de gimnasia cerebral? Vamos a intentarlo con un poco de XML. consolidar los conocimientos adquiridos. Este Tenemos un elemento llamado titulol, otro ti- capítulo tiene nuevamente carácter de taller tu102, parrafo y marco. Se ha mantenido el ordenEjercicio C1: documento XML con atributos práctico: ¡participe! establecido. Recuerde: se trata de una unión deCopie el siguiente código XML y guárdelo en un archivo con el nombre ooras.xml. tipo consecutiva (y).<?xml version="l.O" encoding="ISO-8859-1"?> Elaborar la estructura de un do-<obras> cumento Indicador de opción <obra estilo="Gotico">Catedral de Burgos</obra> Vamos a hacer un experimento. Copie el ejem- ¿Qué ocurre si desea dejar libre el orden de las <obra estilo="Romanico">Iglesia de Santa María de Taüll</obra> plo que le presento y guárdelo como documen- etiquetas del documento XML? No hay proble- <obra estilo="Plateresco">Universidad de Salamanca<lobra> to.xml. Se trata de la estructura básica de un d o- ma. Sustituya la coma por una barra vertical. <obra>Monasterio del Escorial<lobra> cumento, por ejemplo de un sitio Web. Dividi- Este signo indica que se trata de una opción (o). <obra estilo="Modernismo">Sagrada Familia<lobra> remos el texto en dos títulos, un párrafo Y un Pruebe esto:<Iobras> marco. (titulol Ititulo2 Iparrafo Imarco)Ejercicio C2: escribir la definición del tipo de documento Una unión de tipo opcional significa que sePara este documento XML, cree su definición de tipo de documento, y llámela obras.dtd. Tenga en <1xml versioneu.ü" encoding="¡so-8859-1" 1> puede utilizar un valor o bien el otro.cuenta los atributos; el orden no importa. Piense si estos atributos son siempre obligatorios y téngalo <!OOCTYPE documento (VWJw Source for fuI! doctype .•. )> - <documento> Hasta ahora, la lectura de la instrucción sería es-en cuenta en la DTO. No se olvide de incluir el vytculo a la OTO. - <fragmento> <titulol>Tftulo Inferior</tituIOl> ta: ctitulozo Tftulo principal</titulo2>Ejercicio C3: predefinir valores de atributos cparrafo» rextoc/parrafoo • Elige el elemento titulolCree la lista de teléfonos que puede ver a la : ~:Il!lc,I<w"~""""",,,_lstateW"""."derecha y llámela listatelefonos.xml. Cree la r <1xml verslcneü.ü encoding="ISO-8859-rOTO correspondiente, que deberá tener e s- <IOOCTYPE ñstatelefonos (View Source for 1> (un doctype .. .» I .-1 . <marco> Texto con marco</marco> c/rreqmentcc- </documento> ~---~-._----~-_._~----- . .. 11. - . • o tituloz o parrafo o marco El truco: de esta forma solamente se puede uti- lizar un único elemento. Si validamos el docu-tas características: - cllstetelefonos> I _ - <entrada> mento XML con la OTO modificada, obtendre-La etiqueta nombre puede aparecer una o No se olvide de enlazar a la OTO <nombre <nombre tipcetnemb •.•·luGn</nombr.> tipo="lIpellldos""C8rdo50<!nombre> mos un mensaje de error.varias veces, pero la etiqueta telefono solo ctelefono tipo=trGbGjo"931234567</telefono, Escriba también un enlace a la OTO documen-aparecerá una vez. </entrada, ....: to.did que todavía no hemos creado. Indicador de frecuencia (+) - <entrada>La etiqueta nombre tiene que tener obligato- <nombre tipo=·nomb •.•·M.rf.</nombr.> Observe el indicador de frecuencia colocado <nombre tipo="epellldos">Rem(rez</nombre> • La OTOdocumento.dtd fuera del paréntesis de cierre.riamente el atributo tipo= "apellidos" o ti- ctelefono tipo=·priv.do·,93-7654321</telefono, ,-~po= "nombre ". La etiqueta telefono tiene que e/entrada> ¡ Copie la OTO; en este ejemplo vamos a experi- (titulolltitulo2Iparrafolmarco)+tener el atributo tipo= "trabajo" o ti- c/listetelefonoso iil I mentar. Este signo está actuando sobre todo el grupo. Elpo= "privado : El valor tipo="trabajo" será el, i""~l~~¡;¡;~~~-.~-~"~~~~~~;;1~~1lI~, ~.""~f!!llf·!I~~~~~~:.t~ <!ELEMENT documento (parrafo+)> signo de suma significa que el elemento debepredeterminado, pero se podrá sobreescri- <!ELEMENT fragmento aparecer (como mínimo) una vez o varias veces.bir. (titulól, titÍllo2,parrafo, maxco)-» dELEMIDIT titulol .(#PCDATA) ~ ..... y con elemento me refiero en este caso a todo el grupo.Ejercicio C4: insertar entidades <!ELEMENT titulo2 (#PCDATA» <!ELEMENT parrafo (#PCDATA» • Uno de los cuatro elementos tiene que apa- Cree el siguiente archivo entidad.xml junto <?xml version=-1.0- encoding=-iso-8859-1· 1> <!ELEMENT marco (#PCDATA» recer, sin importar cuál. a la OTO entidad.dtd. La entidad <!OOCTYPE entidad {View Source for full doctype ... }> • Puede aparecer un número ilimitado de - <entidad> &comentario; se ocupará del contenido de Observe con detenimiento la zona que he mar- la etiqueta comentario. Defina la entidad otros elementos. ccomentanoc-comenteríc de pruebl!</comentario:> cado en gris (una línea). Entre los paréntesis se </entidad> en la OTO e insértela en el archivo XML. define, en primer lugar, un grupo, y en segundo ~.="="~~" •. .,-.~~~_ 7 _ ~.~=~~.~.~~ .•~~~==,~~~~,j lugar, el orden exacto.
    • Lección 9: sobre espacios de nombres e islas de datos 4746 Lección 8: anidación y uso del paréntesisAhora ya podría incluir en el documento XML Lección 9: sobre espacios de nombres e islas de datosun parraio, después un titultü, un titulol, etc. Y En esta lección aprenderá a: Los espacios de nombres comopuede hacerlo en el orden y con la frecuenciaque desee. Compárelo con el ejemplo documen- • Comprender los espacios de nombres, defi- "espacio para nombres"t02.xml y su respectiva DTO documenial.did, cvxrnt versic nirlos y declararlos El equipo del World Wide Web Consortium se <IDOCTYPEdonde he hecho exactamente eso. - <documento • Incluir etiquetas HfML en XML dio cuenta del problema rápidamente y en 1999 - cfraqmentSin embargo, también podría renunciar a todos <titulo 1>Tltulo Inferlor</titula 1> • Islas de datos XML en HTML propuso como solución los espacios de nom- ctítutozo TItulo prlndpal</titulo2>los elementos excepto uno. Como mínimo uno bres. cparrefoo TeKt:o<!parrafo> El concepto de espacios de nombres es funda- <marco> Texto con merece/maree>tiene que aparecer. <:titulol>Tftulo Infarlor</titulol> mental para comprender muchos de los len- <titulo2>Tftulo prlndpak/titulo2> cparrefoo TeKt:o<!parrafo> guajes basados en XML.El asterisco (*) cmercooraxtc con merece/marco>¿Desea tener realmente vía libre? ¿Quiere poder </fragmento> Espacio para las etiquetas: Los espacios de nombres son, tal como su no m- </documento>utilizar sin limitación alguna las distintas eti- bre indica, "espacios para nombres". Debere- name spacesquetas, e incluso poder no utilizar ninguna de mos asignar a cada uno de los documentos ¿Qué le he dicho al principio del cuaderno? En XML un espacio propio, y utilizar un "Enrique"ellas? En ese caso, utilice el asterisco: XML es posible inventarse sus propias etique- en el "contexto" de ventas, y el otro para refe- (titulolltitul02 Iparrafolmarco) * El indicador de unión consecutiva fija el orden tas. Y así es, en efecto. rimos a contabilidad. Para este contexto ten-Encontrará este ejemplo en la carpeta como do- dremos que pensar en una "abreviatura". Al de El ejemplo se llama document04.xml. Problema del doble sentidocumenioá.xml, ventas lo describiremos así: ¿Pero qué ocurrirá si desea juntar dos doc u- Crear subgrupos <venta:nombre>Enrique</venta:nombre> mentos XML de dos autores distintos? ¿Y si e s- Podemos seguir adelante con el juego. Es posi- Mientras que al compañero de contabilidad le ctxrnl version=-1.0· encoding=-iso-8859-1- 1> tos autores no se han puesto de acuerdo? <!OOCTYPE documento (View ecarce for tull doctype .. » ble incluso crear subgrupos. Estudie esta op- describiremos así: - <documento> Supongamos que un fabricante utiliza una eti- <fragmento ció~ <contab:nombre>Enrique</contab:nombre> </documento:> queta <producto></producto> y con ella se refiere (titulol, (titulo2Iparrafo) ,marco) + a la cantidad del producto. Sin embargo, el dis- De la misma forma podemos distinguir la eti- ¿Qué conseguiremos con eso? Después de titu- tribuidor utiliza la misma etiqueta y la entiende queta <producto> utilizando distintos espacios /01 tiene que aparecer titulo2 o parrafo. Y des- como la descripción del producto. de nombres. Una etiqueta: pués debe aparecer obligatoriamente marco. y <fab:producto>2</fab:producto> este orden preciso se puede repetir tantas veces y la segunda: como se desee. La validación es positiva aunque hemos omitido todas las <dist:producto>Stuhl</dist:producto> etiquetas Arreglar los dobles sentidos El prefijo del espacio de nombres: la En la vida real es posible reparar fácilmente es- sintaxis de las etiquetas tas "ambigüedades". Tomemos como ejemplo dos personas con el mismo nombre. Seguro que Acaba de aprender la sencilla sintaxis para de- <1)1 distingue perfectamente entre Enrique del de- finir espacios de nombres. Indicador de unión consecutiva y <ID - <da - <fragmento> partamento de ventas y el pesado de Enrique de grupos <titulol:>Tftulo Inferlor</titulal> contabilidad. <parrafo>TeKto</parrafo> Sigamos experimentando. ¿Qué conseguiríamos <marca> Texto con merec-e/merco> Pues algo parecido podemos hacer con los pro- escribiendo esta instrucción? </fragmento> cydocumento> ductos. El lector entenderá, por el contenido de Puede definir el prefijo con total libertad, siem- (titulol,titulo2,parrafo,marco) + la etiqueta <producto>, que en unos casos se re- pre que no utilice espacios en blanco ni caracte- ¿Podría ordenar las etiquetas a su gusto? ¡No! fiere a la cantidad y en otros a la descripción. res especiales y no empiece con una cifra. Tienen que aparecer necesariamente en este or- Opte por tltulo2 o por parrafo Sin embargo, XML es un lenguaje que leen prin- En el ejemplo de Enrique, los dos espacios de den: El ejemplo se llama documentoS.xml con su OTO cipalmente las máquinas, y las máquinas no son nombres se llaman venta y contab, mientras que • titulol - titul02 - parrafo - marco correspondiente. tan inteligentes. en el ejemplo del producto los hemos llamado Puede repetirlo tantas veces como desee, pero fab y disto El truco está en abrevíar los prefijos, Hay que aclarar las cosas. siempre en este orden. de esta manera nos ahorraremos tiempo escri- biendo. Después del prefijo vienen los dos puntos Yla etiqueta. Y ahora que ya sabemos esto, ¿cómo se declara un espacio de nombres?
    • 48 Lección 9: sobre espacios den nombres e islas de datos Lección 9: sobre espacios den nombres e islas de datos 49 Declaración de un espacio de nombres Incrustar un archivo HTML en XML Ya sabe qué son los espacios de nombres y cómo "poner en su sitio" a las etiquetas mediante prefijos Vamos a hablar de un ejemplo de espacios de nombres predefinidos: incluya un archivo H1ML den- y dos puntos. ¿Pero cómo se crean los espacios? tro de XML. ¿Cómo? Con un name space, un "espacio propio" para las etiquetas ajenas de H1ML. <?xml version=·1.0· encoding=-iso-8859-!1f 7> ~. :,. ~ - <empresa xmlns: venta=.http://www.pc-cuadernos.com/venta. xmlns: contab=.http://www.pc-cuadernos.com/contab.:> La etiqueta con la definición del espacio de nombres (suele ser el elemento raíz) tiene que tener este - <personas:> aspecto: <venta: nombre:>Enrique</venta: nombre:> <Tag xmlns:html=http://www.w3.org/TR/REC-htm140> ccontab: nombre:>Enrlque<lcontab: nombre:> e/personas» La indicación de la dirección Web tiene que hacerse entre comillas. Puesto que el "espacio" fue defi- c/empreseo nido por el W3C, solamente funcionará si utiliza exactamente esta dirección. He aquí un ejemplo se n- cillo: " <?xml version="l.O" encoding="iso-8859-l"?> Enrlques por todas partes: hay distintas personas en "distlntOSJlspeclos" "<pagina xmf ns ;html~!http: l/www.w3 .. org/TR/REC-htm14.o":> <xmltag>Todavia no estoy asignado a ningún espacio de nombres.</xmltag> Lo haremos utilizando una "etiqueta madre"; tornemos el elemento raíz. Cree una declaración en el <html:hl>iAhoi HTML!</html:hl> elemento raíz en el que se declaren los prefijos del espacio de nombres. En el ejemplo de los dos E n- <html:h2>iUn verdadero titulo 21</html:h2> riques, declararemos dos espacios de nombres de una sola vez: <html:marquee>i1ncreible, incluso texto movedizo!</html:marquee> <?xml version="l.O" encoding="iso-8859-l"?> <html:p>Soy una frase en un párrafo HTML.</html:p> <empresa xmlns:venta="http://www.pc-cuade=os.com/venta •• <html:hr/> xnÍlns:cont.ab« ••ttp://www.pc-cuade=os.com/contab h •• > </pagina> <personas> <venta:nombre>Hans</venta:nombre> Corno puede ver, de esta manera es posible mezclar XML con HfML. Utilice todas las etiquetas de <contab:nombre>Hans</contab:nombre> HfML. Incluso la conocida etiqueta <marqueez-clmarquee» se muestra correctamente, por lo menos en Internet Explorer. Sin embargo, deberá atenerse a las estrictas reglas de XML. Todas las etiquetas n e- </personas> cesitan una etiqueta de cierre. </empresa> Encontrará el ejemplo en la carpeta leccion9, archivo espacionombres.xml. Cerrar la línea internamente ¿Se está preguntando por la línea horizontal? ¿Por El atributo xmlns y el URI qué escribo «htmlhr]» en lugar de <himlthr»? Por- Observe la línea resaltada del ejemplo de arriba: en ella se declara el espacio de nombres. El atributo que en XML no se pueden poner etiquetas vacías. xmlns se ocupa de la referencia al espacio de nombres. En el ejemplo, el atributo aparece dos veces Sin embargo, en H1ML sí que existen =piense en ¡AhoiHTML! porque tenemos dos espacios de nombres. (En la práctica suele haber solo uno). <hr>, <img>, <input>, etc. Para que no haya pro-I xrn1ns es la abreviatura de XML name space. blemas, es necesario cerrar estas etiquetas a nivel interno. Para hacerlo, se coloca una barra diagonal ¡Un verdadero título 2! IIncreíble. incluso texto movedizol En el ejemplo, se hace "referencia" al verdadero espacio de nombres a través de una dirección Web. (/) al final de la etiqueta. ¿Pero qué significa esta dirección? Qué significa esta URI, tal corno se suele llamar en la jerga infor- Soy una frase en un párrafo BTML. mática, el Uniform Ressource Identifier? Vista previa en el navegador Abra el documento en Netscape u Opera. Verá la ~ La misteriosa dirección Web estructura H1ML. Aparece todo, incluso la etiqu e- ¡jr~-;:;;-;-:{ --~¡i¿i~r:ríl~".i~--~;;~,-;-~e~.~ Detengámonos un momento. No tiene que escribir la dirección en el navegador porque no encontrará ta XML de encima de la "sección HTML" -aunque nada. Y no se preocupe, si abre el archivo tampoco se conectará automáticamente a Internet. Esta d i- sin formato alguno. Solamente Internet Explorer muestra la marquesina rección Web o URI sirve simplemente como identificador único mundial. Puesto que una dirección Web solamente puede existir una vez, utilizamos una dirección Web. En este ejemplo, puede inven- Hablemos de Internet Explorer. ¿Solamente puede ver la estructura de árbol del documento? La úni- tarse usted mismo el URI y ser consecuente con la denominación. ca forma de "engañar" a Internet Explorer para que muestre el documento HfML es con un pequeño truco. Deberá insertar un enlace a un archivo de diseño, por ejemplo un archivo CSS. Coloque esta En el caso de los espacios de nombres ya definidos (por ejemplo, para representar etiquetas HfML línea en segunda posición, debajo del prólogo y encima del elemento raíz: en XML), esta dirección ya viene preestablecida. Entonces deberá utilizar la URI predef inida. <?xml-stylesheet href="durruny.css" type="text/css"?> No sufra, no vamos a reunir más.documentos XML. Los ejemplos nos han servido corno muestra p a- La clave es que, en realidad, el archivo de diseño ni siquiera tiene que existir. Observe el archivo ra la declaración de espacios de nombres y corno aprendizaje para comprender los espacios de no m- htmlincss.xml de la carpeta leccion9. A partir de la página 56 hablaremos de cómo crear documentos bres ya definidos. Y son precisamente éstos los que nos interesarán a partir de ahora. XML haciendo uso de CSS.
    • 50 Lección 9: sobre espacios den nombres e islas de datos Lección 10: XHTML como "aplicación HTML" 51Demos la vuelta a la tortilla: islas de datos en HTML Lección 10: HTML vive: XHTML como nueva versión de HTMLPara que mi explicación sea lo más completa posible, a continuación le mostraré el camino inverso: es En esta lección, podrá aprender: <p>Esto es un párrafo</p>posible incluir código XML dentro de documentos HTML. Y para ello se utilizan las llamadas islas • Las características de XHTML Cerrar a nivel interno etiquetas sin eti-de datos. • Cómo se crea un documento XHTML queta final • DTD de XHTML En XML se cierran todas las etiquetas. Cuando • XHTML en la práctica una etiqueta se deja en blanco, es necesario ce-El atributo id significa identifier, y nos permite dar una identificación unívoca. En el ejemplo he utili- rrarla internamente, por ejemplo: XHTML como nueva versión dezado el id islaxml. <dirección/> HTML Hasta ahora hemos podido comprobar que ac- Esto es automático. Pruébelo: abra un documen- tualmente XML no está indicado para el Web. to XML y borre el contenido de una etiqueta. El estándar prevaleciente sigue siendo HTML. Visualice el resultado en Internet Explorer. El navegador mostrará una etiqueta cerrada inter- namente. Volvamos a XHTML: es necesario cerrar todas:Insertar un documento XML en HTML Puesto que XML existe desde 1998, el World las etiquetas, aunque no tengan una etiqueta de Web Consortium decidió "reformular" también cierre. Antes, una línea se dibujaba así: <HR>., PC Cuadernos 4 HTML 4 (presentado en 1997). Y la palabra En el caso de XHTML, es necesario escribirlo "reformular" da en el clavo, ya que se trata así: -ehr />I IDe vuelta a HTMLI principalmente de algo "formal". Para cerrar la etiqueta, se debe dejar un espacioits:m.~. HTML ha sido modificado para adaptarse a las en blanco y después una barra (/). ¿Por qué un estrictas reglas XML, y como resultado hemos espacio en blanco? El espacio en blanco es nece- obtenido XHTML. XHTML 1.0 "salió a la luz" sario para que los navegadores antiguos (porHe aquí un ejemplo: en el año 2000. ejemplo Netscape 4.x) no se "extrañen" al ver la<html> barra.<head> <title>Isla de datos</title></head> Las estrictas reglas de XML<body> ¿Tiene experiencia con el lenguaje HTML clási- <hl>Insertar un documento XML en HTML</hl> co? En ese caso, entender las novedades no le Sin embargo, conforme a XHTML sería más co- <xml id="islaxml"> costará demasiado. Lo único que tiene que ha- rrecto escribir una línea así, por ejemplo: -eh.r/ > <partida> cer es tener en cuenta las siguientes "reglas <nombre>PC Cuadernos</nombre> XML": Valores de atributos entre comillas <precio>4</precio> Si en XML es algo que se da por supuesto, lo </partida> Utilice siempre minúsculas mismo ocurre en XHTML. Todos los valores de </xml> En HTML no importaba si se utilizaban mayús- atributos se deben escribir entre comillas, por <p>iDe vuelta a HTMLl</p> culas o minúsculas. In XHTML, las etiquetas y ejemplo: -et ab l,e border=" 1" ></body> los nombres de atributos (no los valores) sola- mente se pueden escribir en minúsculas. Esta Anidación correcta</html> Puesto que utilizar correctamente la anidación regla va más allá de XML, ya que XML tambiénNetscape 7 es capaz de mostrar los datos XML sin necesidad de recibir instrucciones sobre el diseño permite utilizar las mayúsculas para las etique- ya era obligatorio en HTML 4, así lo sigue sien-(archivo CSS). Si abre este ejemplo en Internet Explorer, la parte XML quedará oculta, aunque en el tas. do en X(HT)ML: una etiqueta subordinadafondo está ahí. ¡Pruébelo! siempre debe colocarse correctamente.Mi documento de muestra se llama islasdatos.html y se encuentra en la carpeta 1eccion9. Todas las etiquetas necesitan una eti- queta de cierre Mientras que en HTML se podía ser bastante Incorrecto: <p><i></p></ i> chapucero, en XHTML todas las etiquetas nece- sitan una etiqueta de cierre. Está totalmente Correcto: <p><i></i></p> prohibido dejarse «lp» o «lli», etc. Deberá es- cribir:
    • Lección 10: XHTML como "aplicación HTML" Lección 10: XHTML como "aplicación HTML" 5352Evite las abreviaturas de atributos La causa de este cambio es que los caracteres Las tres OTO para XHTML especiales, como & o », podrían confundir a los El vínculo a la "strict OTO", la variante estricta, para XHTML tiene este aspecto:En muchas etiquetas de HTML, en lugar del navegadores compatibles con XML. <!DOCTYPE htrnl PUBLIC "-//W3C//DTD XHTML1.0 Strict//EN"valor completo del atributo se utilizaba una Sin embargo, en la práctica no se lo recomiendo, http://www.w3.org/TR/xhtrnl1/DTD/xhtrnl1-strict.dtd>forma abreviada. ya que por lo que he podido comprobar nohay Esta OTO incluye restricciones muy duras: por ejemplo, ya no es posible colocar texto suelto, sinoCon dable border» se determinaban líneas de ningún navegador que realmente se confunda.borde, con «hr noshade» se podía evitar el som- que siempre debe estar dentro de elementos llamados de bloque, como párrafos o etiquetas «dio».breado de una línea y Si opta por la OTO moderada, deberá escribir la siguiente declaración de tipo de documento:<option value="pagina1.htrn" <!DOCTYPE htrnl PUBLIC "-//W3C//DTD XHTML1.0 Transitional//EN"selected>Página l</option> http://www.w3.org/TR/xhtrnl1/DTD/xhtrnl1-transitional.dtd>se ocupaba de que se seleccionase un campo de También existe una OTO para framesets (las reglas para dividir páginas en marcos). Para susopción. "definiciones de marcos XHTML" utilice la siguiente declaración de tipo de documento:Las formas abreviadas están prohibidas: a partir <!DOCTYPE htrnl PUBLIC "-//W3C//DTD XHTML1.0 Frarneset//EN"de ahora deberá escribir el valor completo del http://www.w3.org/TR/xhtrnl1/DTD/xhtrnl1-frarneset.dtd>atributo. En nuestros ejemplos anteriores, debe- La OTO de transiciónríamos poner: <table border=" 1" > o Hemos visto las distintas declaraciones de ti-<hr noshade="noshade"> o po de documento. ¿Pero dónde están real-<option value="paginal.htm" mente las OTO, las definiciones propiamenteselected="selected">página l</option> dichas? ¿Oónde está, por ejemplo, "la versión <!--El atributo name se sustituye por id de transición"? I!:xl:l!lUIlble Tb1:J la tb.e lIT1IL vec,lon s_ a.s 1.D Tranalt.loftal lJT1lL "1 T.r;ansltton.l DTD eeceee tal: chaDge:l!I due 1:0 tbl!: d.1Uereaecll J:M:t.-.eea nn. aod. SGIIL.¿Conoce el atributo name en HTML? Sirve para Abra la página Na.e:Jp-=e •• bttp:// •.••• .-l.or::g/l999/xhe..ldar nombre a anclas, formularios, etc. Ahora ha http://WUlW.w3.org{fR/rhtml1/DTD/rhtmll- Tor:: :fur::tb.er:: 1I11o~t1oll, .e.: tlttp:/I __ .103 .or::g/T1Vxhta.ll El W3C ha estandarizado tanto la normativa de Cop.,-r::igbt (el 1998-2002 V3C ¡UT, DrRIJ., !teiol,sido sustituido por el atributo id (identifier). transitional.dtd". Escriba esta dirección en el aeeeevee . HTML como la de XHTML en tres definiciones .111 Rigbt:l Thu. DTD lIIOduie 1:1 1deotl:tled by tbe PUel.le aQ.d. :5T3nll !deotl:fler:l: de tipo de documento. La OTO define (como ya navegador y podrá ver el código SGML de la PUlILIC "-I/W3CI/DTD nrnn. 1.0 Tran:Jltlonall/DI"Oesgraciadamente, los navegadores antiguos no ha comprobado) las instrucciones sobre la es- OTO. :5T5Tl:lI "b.ttp:// . .-l.or::O/TJVxb.tlaU/DTD/xb.ea11-tr::an:Jlt!ooe.1.dtd-comprenden id. Por ello, lo mejor es poner am- UI.evi:lion: 1.2 4bos atributos y asignarles el mismo valor (u tructura del documento. Una OTO se crea en el El navegador puede deducir a partir de este fDate: 2002108/01 18:37:55 , ¡ -->omitir id). lenguaje SGML. documento las etiquetas y atributos admiti- dos y el orden en que éstos deben aparecer.Supongamos que desea dar nombre a un for- Las tres versiones de la OTO Pero nosotros vamos a renunciar a ello. La OTO de la ·versión moderada" de XTHMLmulario. Lo haría de esta manera: XHTML no permite que el usuario cree OTO. El modo de compatibilidad (modo quirks)<forro narne="pregunta" id="pregunta"> La gente del W3C ya se han ocupado de alma- ... Contenido del forroulario</form> Hasta hace poco, se podía afirmar que el navegador "veía" el enlace a la OTO pero lo ignoraba. To- cenar una gran cantidad de trabajo en sus pro- davía no se preocupa de validar el documento. Al igual que en XML, al navegador le daba/le da "Envolver" scripts y CSS en SGML pias y monstruosas OTO. igual lo que haya escrito en la OTO, a menos que se valide el documento a mano. Otra novedad es que todas las secuencias de Existen tres versiones admitidas para XHTML Sin embargo, los últimos navegadores (versiones 6 y 7) reconocen las instrucciones de la declaración comandos (scripts) y CSS tienen que quedar (y también para HTML). De un lado, tenemos del tipo de documento y en parte se rigen por ella. (Todavía) no validan el documento basándose en "envueltos" en instrucciones CSS, por ejemplo: una versión estricta, y del otro una versión la OTO correspondiente, pero si se infringen las reglas pueden aparecer mensajes de error, especia 1- "moderada". La versión estricta (strict DTD) de- <script language="JavaScript" mente con el estricto navegador Netscape 6/7. Estoy pensando, por ejemplo, en las instrucciones de type="text/j avascript "> fine solamente los elementos que actualmente altura y anchura en CSS. El navegador sabe internamente que el usuario utiliza la versión estricta de <! [CDATA[ son válidos y no anticuados. XHIML, y por lo tanto no le va a dejar pasar ni un solo error. aquí está el verdadero script La OTO moderada o de transición ( transitional Si no incluye el enlace al DOCTYPE, el navegador pasará a un modo. de "compatibilidad" llamado ll> DTD) acepta los comandos XHTML (o HTML) "quírks mode". En ese caso, el navegador simula el "comportamiento tolerante con los errores" de </script> que se utilizan más comúnmente. los navegadores antiguos e intenta mostrarle lo que es posible. Además, existe también una OTO para fram e- sets. Si es suficientemente aventurero, puede agrupar las primeras líneas dentro de la etiqueta «html», No es un procedimiento estándar, pero si tiene diseños complejos podría ayudarle a obtener un result a- do correcto. Naturalmente, también puede comprobar el documento XHTML para evitar errores desde buen principio o simplemente para poder detectarlos. Valide el XHTML. Existen varios métodos para h a- cerlo.
    • " Sección práctica D: paréntesis, espacios de nombres y XHTML 5554 Lección 10: XHTML como .aplicaciL HTML"Validación: W3C-Validation Service y TIOYAcceda al estricto HfML Validation Service de validator.w3.org. Aquí puede indicar una dirección Ahora ya sabe cómo:Web o cargar un archivo HfML/XML para su validación. Otra herramienta muy adecuada para • Agrupar elementos correctamente en la DTDcomprobar documentos es HfML-Kit. En este editor HfML se ha incluido el progra.ma de va1!d~~ón • Colocar espacios de nombres e islas de datosTIDY del W3C. El programa gratuito HfML-Kit se puede descargar de www.chanu.com/htm1-kit. • Redactar archivos XHfMLUn documento de muestra en XHTMLA continuación le muestro un "documento HfML" sencillo en la versión XHfML "moderada": Ejercicio 01: agrupación e indicadores de frecuencia<?xml version="l.O" encoding="iso-8859-l"?> Vuelva a nuestra práctica de la página 45. Copie los archivos documento.xml y documento.dtd en la<: lÓOCTYPE.htmlPUBLIC ".-I/W3C//DTIÍ ~ ,1: o,;T:r::anfiit:ional/!EN,~ carpeta ejercicios y modifique la segunda línea de la DTD de esta manera::"~ht;:tp:/ {wyvw ,·w3. l;9/TR/x,html1}IlTDí~tmli,7traD.:sit;:ibnál o ::dtd"> <!ELEMENT fragmento (titulol?,titul02, (parrafolmarco)*)+><html xmlns="http://www.w3,org/1999/xhtml> ¿Sigue siendo válida la versión original de documento.xml? Encuentre otras variantes para el XML.<head> <title>Títulos de PC Cuadernos</title> Ejercicio 02: crear un espacio de nombres para HTML en XML </head> Incruste el siguiente fragmento de código HTML como espacio de nombres en un documento XML <body> llamado londres.xml. Llame al elemento raíz texto e inserte en él la declaración del espacio de nom- <h2>Imagen Digital</h2> bres. ¡No utilice etiquetas vacías! <ul> <li>Autor: Michael Karbo</li> <hl>Londres y Berlín frente a frente</hl> <li>Editorial: PC Cuadernos</li> <h2>La evolución de la ciudad de Berlín</h2> <li>Descripción: teoría y práctica sobre las imágenes digitales</li> <p>Cuando se pretende abarcar la evolución de la ciudad de Berlín, uno se enfrenta al problema de los bloques de pisos. Estos temas son de interés:</p> <li>Precio 4,50 euros</li> <01> </ul> <li>Estructura social</li> -chz 1>. <li>Arquitectura</li> <img src="imagendigital, jpg" width="205" ,height="275" ",all;.=" 11IIagén digi tal" /> , ! <li>Gobierno</li> </01> </body> <hr> </html> Explicación del código fuente Ejercicio 03: crear una isla de datos XML en HTML El documento empieza con la línea «Lxml ver- Imagen Digital Cree un documento HfML sencillo con el siguiente "Hl": Obras de Gaudí y guárdelo con el nombre sion="1.0" encoding="ISO-8859-1 "?», Se trata del pró- gaudi.html. Incruste la siguiente estructura XML como isla de datos y asígnele el id isla. • Autor: Micbael Katbo logo XML. En el caso de XHfML no es obligatorio, • Editorial: PC Cuadernos <gaudi> • Descr1pci6n" teoría y práctica sobre las imágenes digjtal.es pero es muy recomendable. • Precio 4,50 euros <obra>Park Güell</obra> La segunda línea (resaltada en gris) enlaza con la defi- <obra>Sagrada Família</obra> nición de tipo de documento (DTD). En este caso le <obra>Casa Batlló</obra> recomiendo la versión "de transición". En la tercera </gaudi> línea forzamos la inclusión de la etiqueta «himl> me- diante el "atributo de espacio de nombres" xmlns, Ejercicio 04: transformar un documento HTML a XHTML consulte la página 47, Transforme este documento HfML a XHfML. Utilice la "DTD moderada" y guarde el resultado co- La línea xmlns» http://www.w3.org/1999/xhtml indica mo formulario.html. Tenga en cuenta que es necesario cerrar la etiqueta <input>. que este documento HfML se rige por la especifica- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ción XHfML (normalmente, aquí no se suele incluir <html> un prefijo). <head><title>Un formulario</title></head> Por lo demás, he incluido un título, una lista sin orde- <body> nar, una línea y una imagen. <hl>Indique su nombre</hl> <form><input type="text"><input type="submit"></form> No se olvide la barra diagonal de cierre interno de la <hr> línea y la imagen. He resaltado las etiquetas afectadas La presentación en el navegador no cambia </body> con un fondo gris. </html>
    • / Lección 11: introducción a CSS Lección 11: introducción a CSS 5756 Establecer un enlace al archivo CSSLección 11: dar formato a archivos XML: introducción a CSS Vamos a enlazar el archivo CSS. Puede deducir la sintaxis del ejemplo: le muestro el código de todoEn esta lección le mostraré: Crear un archivo CSS el documento resaltando el enlace al archivo css:• Introducción rápida a los fundamentos de Las instrucciones sobre el formato se almacena- <?xml version="l.O" encoding="iso-8859-1"?> rán en un archivo CSS. Ya habrá sospechado :<?xml::"stylespéet ;href="hóLi.-cssnv, type=lrtext./css?> css -cdocumerrt.o» . .• Establecer un enlace a un archivo CSS que no es otra cosa que un archivo de texto e x- temo con la extensión css. <pregunta>Hola XML, ¿estás aquí?</pregunta>• Visión general de los principales atributos y <respuesta>XML es el formato de archivo del futuro!</respuesta> valores de CSS </documento>llegados a este punto, ya tendrá muy claro que: Queremos asignar al documento la letra Arial y Guarde el documento XML y actualice la vista en el navegador.XML asegura la estructura lógica. La informa-ción está ordenada jerárquicamente en forma de como alternativa Helvetica.árbol. Internet Explorer muestra esta estructura 1. Escriba primero el nombre del elemen-arbórea. to, en nuestro caso documento. A esto sePero antes de que "deje de ver el bosque por le llama selector. Después escriba un parhaber demasiados árboles", tendrá que apren- de llaves, entre las que escribiremos las der a dar formato a los archivos XML; es decir, caracterlsticas. Tipo de fuente Arlal: este es el aspecto del archivo visto en Internet Explorer adaptarlos para su visualización en el navega- doro Y para ello deberemos utilizar un lenguaje documento especial de formato y diseño, y el más conocido El de más abajo gana: el principio de la cascada Hemos asignado el tipo de fuente al elemento raíz, que es el elemento más alto de la jerarquía. Por de ellos es CSS. eso, todos los elementos contenidos dentro de la raíz heredan el mismo formato. En esta lección le haré una introducción rápida a CSS y le mostraré lo sencillo que es dar form a- 2. Para asignar un tipo de fuente, escriba A este principio se le llama (el nombre de hojas de estilo en cascada ya lo dice) el principio de la ea s- to a documentos XML. la clave font-family y después dos puntos. cada. Como si de una cascada se tratase, las características del elemento más alto de la jerarquía se documento { transmiten a los elementos inferiores. Sin embargo, es posible asignar otras características a eleme n- Mini-taller de introducción font-family: tos inferiores, que sobrescribirán las características que se hereden "de arriba". Volvamos a nuestro primerísimo documento, } hola.xml, Si no lo tiene a mano, vuélvalo a co- Pruébelo: vamos a asignar al elemento respuesta el tipo de letra Courier New o monotype (donde mono- 3. A continuación, escriba el nombre de la type es un tipo de letra general). Además, el contenido de la etiqueta tiene que aparecer en negrita piar: fuente, en nuestro caso Aria/. Como puede gracias a fvnt-weight: boldo Por lo tanto, copie las siguientes reglas en el archivo hola.css. ver, las verdaderas instrucciones se en- respuesta { <?xml versian=-l.O· encoding=·iso-8S59-1· 1> cuentran dentro de las llaves. font-family: Courier New, monotype; - <documento> font-weight: bold; <pregunta>Hollt XML, aestés aquf7 documento { </pregunta> } <respuesta>XML es el fonnllto de llrchivo del font-family: Arial futurol </respuesta> Guarde nuevamente el archivo ho/a.css y actualice la vista del archivo XML en el navegador. </documento> C:kwesXM.arsoxrnllecdonll)lola,xm1 4. Puesto que no sabe con seguridad si el Este documento solamente tiene tres etiquetas sistema del usuario tendrá la fuente Arial, 111-Iola)<(ML_,¿estásaqu¡?XKL es el foraato de archivo del futuro I escribiremos después de una coma una El documento tiene tres etiquetas: el elemento raíz documento es el que está más alto en la je- fuente alternativa; el tipo más común es rarquía, y contiene pregunta y respuesta. sans-serif. Las cualidades Cour/er New y bold son más fuertes que las del elemento raíz documento { Para este pequeño taller práctico, le recomiendo que cree una carpeta adicional en cursoxmllla- font-family: Arial, sans-serif; ¿~or q~é. he escri~o el tipo de letra Courier New entre comillas? En realidad, normalmente está prohi- bído utilizar comillas en CSS. El motivo es que necesitamos las comillas porque el nombre de la fue n- mada css. Copie el archivo hola.xml a dicha car- te está compuesto por dos palabras separadas por un espacio en blanco, y si no lo hiciéramos no se peta. Pero encontrará mis ejemplos en leccionll. Cierre esta "línea" con un punto y coma. Acaba interpretaría correctamente. de terminar su primera regla CSS.
    • 58 Lección 11: introducción a CSS Lección 12: crear una lista de productos con CSS 59Fundamentos de CSS Lección 12: crear una lista de productos con CSS.Con CSSes posible asignar el tipo y el tamaño de la fuente, activar negrita o cursiva, asignar coloresde primer plano o de fondo y definir bordes y marcos. En esta lección aprenderá a:La sintaxis de las hojas de estilo procede de lenguajes de programación como C, C++, Java y [ava- • Asignar formatos complejos con CSSScript. Al igual que en estos lenguajes, en CSS todas las instrucciones relacionadas se colocan entre • Controlar la disposición con display: blockun par de llaves, creando así un bloque. Además, en CSSlas líneas se cierran con un punto y coma(;). Organización atractiva con CSS A continuación, veremos un ejemplo complejo.Selectores Queremos dar un poco de atractivo visual a la li s-Las etiquetas a las que se asigna un formato se lla- documento { ta de productos de la lección 5. Le recomiendo font-family: Arial,man "selectores". Todos los atributos y valores (porejemplo font-family: Aria/) forman parte del par de }olo", blue; -s-, q~e vuelva a ~aspáginas 34 Y 37, para recordar respuesta { como construimos el ejemplo.llaves. Si desea asignar el color azul a la fuente, de- font-family: Cour;er New, monotype;berá utilizar el atributo color y asignarle uno de los font-weight: bold; Observe la imagen de la derecha: este es el aspec- ¡} to que queremos conseguir. Internet Explorer 6 ynombres de color permitidos en inglés, como red,blue, yeIlow etc. iPruébelo! Ponga el elemento raíz de Netscape 6/7 nos dan el mismo resultado en este color: blue vuelve todo eltexlo de color azul caso.color azul: color: blue; Esta instrucción afectaráa todos los elementos. ¡Participe! Copie primero el archivo productos.xml en su carpeta separada css.Si desea asignar la misma instrucción a dos etiquetas simultáneamente, colóquelas juntas separadaspor una coma, por ejemplo: pregunta, respuesta { instrucciones; } El atractivo se consigue con cOfores, bordes y sombread08Los principales atributos y características de CSS (Supongo que habrá creado esta carpeta dentro de la carpeta del proyecto cursoxml.iEl orden de los atributos es irrelevante. Es posible indicar primero el color y después la fuente. Acontinuación se indican los principales atributos de CSS: Crear el archivo CSSAtributo Responsable de Valores posibles (selección) Ejemplo de código ~rt: :q~~;~e :~~v~ produclt0nls.css que todavía no hemos creado. Si el documento ya tiene unalont·family Nombre de la fuente Nombre de la fuente foot-Iamily: Arial, sans-serif; , ra co ocar e e ace a CSS debajo del enlace a la DTOfont-size Tamaño de la fuente Puntos (pt), pixeles (px) foot-size: 14pt; <?xml version="l.O" encoding="ISO-8859_1"?> .color Color Nombre del color en inglés o valor hexa- color: red; oder color: #ffOOOO; < !DOCTYPE productos SYSTEM"productos odtd: > decimal <?xml-:.~tyl~s~~é.t href:."p.:roducto~¡~ c:.ss" type="text/css"?>background-color Color de foodo Nombre del color en inglés o valor hexa- background-color: silll8f; <productos> o decimal <partidas>foot-weight ·Peso de la fuente", boId, light, normal, etc. foot-weight: boId; como negrita <nombre>Muñeca de trapo</nombre>font-variant Variación de la fuente small-caps font-variant: small-caps; (versales) </partidas>font-slyle Estilo de la fuente itaJic foot-slyle: itaJic; </productos> (p.ej. cursiva)line-height Altura de la Ifnea 1 61.2 (uno punto dos) line-height: 1.2; Crearemos el archivo CSS de forma compactamargin Margen (espacio exte- Píxeles (px), centrmetros (cm) margin: 10px; ~r~ el archivo productos.css. En primer lugar le mostraré el código fu ti"paddingwidth rior) Margen lnterior Anchura Píxeles (px), centímetros (cm) Píxeles (px), centímetros (cm) padding: 20px; width: 400px; ~=:..: 1 d ~~~~~o: { ~:~~:::~oc::e~~e~:lp~:;:t~~::!u:: lín~e;~r~o:~i:~~k:a~ ea. :~border-slyle Estilo del borde p.ej. solid border-slyle: salid; iI~e~~~~:ht~o~~;~a}ilY: Verdana, sans-serif; font-size: 12pt;border-width Anchura del borde Píxeles (px), centímetros (cm) border-width: 120px; 2 pp:~~~das 8{ disp~ay: block; ba~kground-color: sil ver marginoSi desea entrar a fondo en el tema del lenguaje CSS,le recomiendo el cuaderno "CSS:Webs con esti- 1ng: pX; w1dth: 400px; } o lOpx;lo" de [ohn Maxwell, publicado también en PC Cuadernos. Es una introducción al tema muy compl e- 3 nombre {,display: block; background-color: white, b d d border-style: solid;ta que le permitirá dominar CSSal máximo. or ~r-w1 th: lpx; width: 300px; } 4 fabr1cante { display: block; font-style: italic; }Referencia sobre HTML y CSS: en las hojas centrales de mi cuaderno "Cree su página Web (ID" en- 5 num, precio { color: red; }contrará una lista detallada con las principales etiquetas y atributos de HfML y CSS. Consejo: esta vez he escrito el archivo CSSd f otro, los bloques entre llaves están 1 d e orma c~mpacta. En I~gar de colocarlos uno debajo de co oca os secuencíalmenrs, en línea. Así ahorramos espacio.
    • Lección 12: crear una lista de productos con CSS Lección 13: más posibilidades con XSLT 6160 2. iVamos a por la segunda IInea! Cada. Lección 13: más posibilidades con XSL o XSLTEl archivo CSS paso a paso "partida" tiene que tener solamente un blo-Analicemos cada una de las líneas, paso a paso. que. Estableceremos como color d~ fondo En esta lección aprenderá lo siguiente: si/ver (gris claro). El margen (margm) ten- • Fundamentos de XSL o XSLT 1. Copie la primera IInea. En ella ~ defi- nen las cualidades del elemento raíz pro- drá 10 píxeles, y el margen interior " • Transformar XML con XSLT a HTML ductos. Le hemos asignado la fuente ~er- (padding) 8 píxeles. Toda la estructu~a ten- Ene esta lección pretendo hacer una primera introducci6n al complicado lenguaje de estilo XSL. Si tra- dana junto a un tipo de fuente alternativa drá una longitud de 400 píxeles. Copie la baja con Internet Explorer, le recomiendo que utilice la versión 6, o que instale MSXML 4 (consulte la estándar, con un tamaño de 12 puntos y un IInea y observe el resultado en el navega- página 72). Los ejemplos también funcionan con Netscape 7. interlineado de 1,2. Todas las etiquetas su- doro bordinadas heredarán estas características. Introducción a XSL y XSL T Guarde el documento Y observe la vista Ahora ya conoce CSS y sabe cómo dar un bonito aspecto a sus archivos XML. Pero incluso CSS no da la talla debido a sus posibilidades limitadas. No estoy hablando solamente del problema del salto de previa en el navegador. línea que hemos resuelto chapuceramente con display: block. Hay otras "carencias" más graves: ¿cómo ¿Y bien? El texto aparece todo seguido; sola- podemos crear tablas? ¿Cómo se insertan hipervínculos en el documento? ¿Y qué ocurre con los gr á- mente se produce un salto de línea en el margen ficos y archivos de medios? derecho de la ventana del navegador. 3. La siguiente IInea es la más larga: el elemento nombre también tiene que con- Se le exige demasiado a CSS en este caso. El formato por excelencia de los navegadores es, y seguirá vertirse en un bloque. Esta vez, el color de siendo, HTML. Porque solamente con las etiquetas HTML es posible organizar los documentos para fondo será blanco. Además, con border- que se vean en el navegador como uno quiere. Por eso, el lenguaje CSS se considera un refuerzo: el "dreamteam" compuesto por CSS y HTML rompe barreras. eC8 d; ;apo~2;M5-~ )uegolandla SA Valladolid 60 40 style: solid; crearemos un borde al 1,caballlto de madera 32945-41 Juegolandla SA vallado. lid 18 que asignaremos un grosor de un píxel con !12 Tren madera básíco 32945-41 Natura SL,!? Q .6?, . XSL T como transformación "91!l - ~ .,..~., .... . border-width: lpx;. Con una anchura Para poder enlazar CSS y HTML, necesitamos el nuevo estándar XSL (Extensible Style Sheet Langua- de 300 píxeles, este bloque será 100 píxa- El texto aparece todo seguido sin saltos de línea ge, lenguaje de hojas de estilo extensibles). XSL es desde octubre de 2001 la recomendación oficial del les más corto que el bloque gris. World Wide Web Consortiums. Existen varias versiones o vertientes de XSL. A continuación, habl a- Este es uno de los principales estorbos de XML: remos de la subespecificación XSLT, ya que es la que más nos interesa. no existe una etiqueta con la que se p~edan . crear párrafos o saltos de línea. No existen et 1- La T significa Transformations. Este conjunto de reglas se encarga de transformar XML en HTML, en quetas "al nivel de los bloques.", c~mo en WML (el lenguaje para móviles con WAP), en SVG (Scalable Vector Graphics) y, gracias al HTML. No hay <p>, ni <lJT>ID <dIV>. "subestándar" XSL-FO, también en RTF y PDF. :".(¡iu~~~m~~l1:U.~~gU>.(t¡[iIüCQ::S~ Que no cunda el pánico, no llegaremos tan lejos. Daremos nuestros primeros pasos convirtiendo XMLenHTML. Salto de línea con display: block 4. La cuarta IInea no necesita explicación: Paso a paso: primer ejemplo Vamos a crear un salto de línea con CSS. De ello se ocupa la instrucción display. Puede ac~ptar asignamos cursiva al "fabricante" y lo con- ¿Se acuerda del primer documento XML de la lección 1? Vamos a transformarlo en una estructura los atributos inline y block. Inline es el atribut~ vertimos en bloque. HrML. Primero trabajaremos con los títulos, después con tablas e imágenes. predeterminado, de forma que no es necesarIO 5. ¿Qué ocurre en la IInea 5? Aquí asigno Copie el documento en una carpeta separada llamada xslt para no confundirse. escribirlo. Con a las etiquetas num Y precio slmu~~ Este es el aspecto del archivo modificado hola.xml. He insertado el enlace al archivo de hoja de estilo display: block; neamente el color rojo. Para ello utilizo XSL hola.xsl (resaltado en gris). . nos aseguraremos de que el fragmento de texto una coma como separación. <?xml version;"l.O" encoding;"iso-8859-l"?> realmente se muestre como un bloque, como un <?Xmi-stYleáheettyp~;I¡text/xsl"firef; .. hóla,:xsl"?> " . "párrafo". .Por qué no he utilizado aquí display: block;? <documento> ~¿Aún así, num se muestra como un bloque?! De El elemento se convierte en un "elemento de , <pregunta>Hola XML, ¿estás aqui?</pregunta> ello se ocupan las etiquetas adyacentes que han bloque". Antes y después se crea un salto de 11- <respuesta>XML es el formato de archivo del futuro!</respuesta> sido formateadas como bloque. Además, los nea. dos precios (precio) no tienen que aparecer uno </documento> debajo de otro, sino uno junto a otro. Vamos a crear juntos nuestro primer archivo XSL para crear un completo entramado HTML a partir de XML. La etiqueta <pregunta> se mostrará como H1 y la etiqueta <respuesta> como H2. XML-ES
    • Lección 13: más posibilidades con XSL T 63 Lección 13: más posibilidades con XSL T62 El elemento xsl:template y sintaxis de X-PathEste es el aspecto de XSL: hola.xslEl primero contacto con XSLle parecerá cualquier cosa Hola XML, ¿estás aqui? 3. A continuación aparece el elemento xs/:temp/ate. La palabra template significa plantilla. Enmenos lógico y comprensible. La clave es que los documen- XML es el formato d. archivo del futurol este punto, en realidad se crea una plantilla para la transformación. Para nosotros no es impor-tos XML también se escriben en lenguaje XML. tante, porque hacemos referencia con el par atributo-valor rnatche?" al elemento raíz de nuestroEn primer lugar le mostraré el archivo XSLcompleto. archivo XML. Esta es, en realidad, nuestra plantilla, y así es como la enlazamos. El efecto final es el de un archivo KTML<?xml version="l.O" encoding="iso-8859-1"?> <xsl:template match="/"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsL/Transform"version="l.O"> Detrás de esta indicación de ruta se esconde otro lenguaje llamado X-Path. La barra (f) hace referen-<xsl:template match="/"> . cia al elemento raíz. Tenga en cuenta que es necesario cerrar el elemento templa te al final. <html><head><title>Hola XML</title></head> 4. Las siguientes líneas son especialmente interesantes. En primer lugar se crea el esqueleto <body> HTML con el típico encabezado HTML. Con <h1><lh1> establecemos que el elemento XML,;/~:~~:xf¡t:value-ó~; docuníentoli>r.t;¡91ID~an:?~¡T;¡>~::· s:e1ect:d,;· ;~f~,}H:;t~::~:YJ~(¡J~~::f;:~~~iDíi;~3;;;(:E::!fi~~~ pregunta debe ser un título de primer orden. [Este elemento se encuentra entre <h1><lh1>! </hl> <hl> <~~~s1 :value.:-Of si:lrect;"docuníeri~p{rE!sp1;1esta~I>*;,; ..;);:;;:;~:·:j.;;;1;;i;1~1.1~¡n~:;:;·~7:~!5j;{.i.kj¡1 <xsl:value-of select="documento/pregunta"/> </hl> </h2> </body> Sintaxis de X-Path: con <xsl:value-of seleci» "documento/pregunta "]> ponemos el "foco" en documen- </html> to/pregunta. Por lo tanto, indicamos la ruta al elemento pregunta. Empezamos con la etiqueta superior</xsl:template> documento y llegamos hasta pregunta. Cierre la etiqueta internamente con una barra.</xsl:stylesheet> 5. !~~========:::::lli~1 <?xml versioneu.ü" encoding="iso-B8S9-1" 1> De la misma forma "lIegamos2 al elemento filas. Con documento/respuesta respuesta. De ello se ocupan las siguientes tres ponemos el foco a la etiqueta en cuestión: _ <)(51: stylesheet xmlns: xsl="http://www.W3.org/1999/XSL/Transform" version="l.O"> <h2> - <)(51: tamplate match=" r> <xsl:value-of select="documento/respuesta"/> - ehtml> _ cheedc- </h2> <title>Hola XML<ltitle> </head> - -ctrcdv> 6. No olvide cerrar la "etiqueta template" y el elemento raíz al final del documento. - ch io <)(51: value-of select="documento/pregunta" /> </xsl:template> </h1> - c:h2> </xsl:stylesheet> ¿Qué hemos aprendido en este ejemplo? Que XSLTes bastante complicado. Pero eso solo ha sido el El archivo XSL también es un documento XML comienzo. Copie el documento y visualice el resultado en el navegador. A continuación le explicaré el significa- Establecer una estructura de tablas do del código. Antes he mencionado que XML se transforma con El código fuente, paso a paso XSL y se transforma en HTML: vamos a crear un T, documento HfML completo con tablas y gráficos al- 1. La primera línea alberga el prólogo obligatorio de XML. rededor de los elementos. ¿Ya sabe HTML? <?xml version="l.O" encoding="iso-8859-1"?> ¡Perfecto! Para este ejemplo, he renombrado todos los archivos de hola a holla. Este es el código fuente 2. La línea siguiente empieza con <?xs/:sty/esheet ... Es el elemento raíz de este archivo. Ob- del archivo XSLholla.xsl: serve que en la línea se vuelve a cerrar con <lxs/:sty/esheet>. Com~ atributo en el elemento raíz sigue xmlns:xsl. La clave xm/ns hace ref~rencia a ~no d~ los e~aclos de ."~mbr~s ~e los qu~ ya hemos hablado. El prefijo xs/ es obligatono. A contínuacíón, se Incluye la dirección establecida del espacio de nombre y la identificación de la versión de XSL. Esto es obligatorio y es necesa- rio aprendérselo (o copiarlo). ¿Estructura de tablas o Imágenes? Sí <xsl:stylesheet xmlns:xsl="http://www.w3.or~/1999/xsL/Transforrn" version="l.O"> rd
    • Lección 14: organizar y clasificar 65 Lección 13: más posibilidades con XSLT64 Lección 14: XSLT para profesionales: organizar y clasificar<?xml version="l.O" encoding="iso-8859-1"?> "<~sl:stylesheet xmlns:xsl="http://www.W3.org/1999/XSL/Transform En esta lección aprenderá a: Con esto conseguimos que todos los elementosversion="l.O"> • Crear plantillas XSTL complejas de esta ruta estén afectados. Se repetirá el pro-<xsl:template match="/"> • Ordenar documentos XML con XSLT cesamiento hasta haber terminado todos los da- <html><head><title>Tabla</title></head> tos del archivo XML. Nuestro ejemplo de XSLT de la lección anterior ¡El bucle termina en la fila 30! <body> tiene un problema: es demasiado sencillo. Cada <table border="l"> / <tr><th><xsl:value-of select="dOcumento/pregunta"/></th>< tr> elemento solamente puede aparecer una sola Incluir elementos <tr><td><xsl:value-of sele~:="doc:um;Ilt:~~~e~~~;sta"/></td></tr> vez. Si aparece más veces, value-of select no nos A continuación se incluyen los elementos titulo, ?,;:S ",l!ghthouse .gif" !~,<jtd.><l;tr>:· ~,>;,,~,;,.)::;: <tr><td><:itng::flI::C;; servirá. autor, editorial, descripcion y precio, utilizando la clave value-of selecto </table> Ejemplo de la lista de títulos </body></html> Puesto que ya estamos en la "ruta" correcta (titulos.xml) (listatitulos/cuademo) solamente tenemos que in- </xsl:template> Tomemos un ejemplo práctico. ¿Se acuerda de dicar el nombre de la etiqueta. Queda muy cla- </xsl:stylesheet> la lista de títulos del principio del cuaderno? ro, por ejemplo, para el título en la línea 13, al Compárela con el capítulo 2 y 3 a partir de la que hemos "rodeado" con la etiqueta de título Incluso •• posible Incluir un vinculo página 22: Estamos hablando del archivo titu- HTML <h3></h3>. Cierre la etiqueta interna- . ivel i t porque XML exige que se cierren los.xml, que se puede utilizar junto con el archi- mente. Asegúrese de cerrar las "etiquetas vacías" como Img a rove ID erno, vo DTD correspondiente titulos.dtd. Copie am- las etiquetas. bos archivos en una carpeta separada llamada El elemento aparece varias veces . . .imero ilimiitado de elementos HIML. Haga que se pueda hacer xslt. En titulos.xml, inserte debajo del enlace a la ¿Se acuerda todavía de lo que le explicaba al E¡eraclO. XSLT pernute insertar un numero II · ". , la ázi de PC Cuadernos y guarde el doc u- DTD un enlace al archivo XSL que crearemos a principio? El elemento autor puede aparecer una clic en la imagen: cree un vmculo HIML que eve a p gma . o varias veces. mento XML y XSL como he/lo. Encontrará todos los ejemplos en la carpeta /ecclOn13. continuación, titulos.xsl. <?xml-stylesheet href="titulos.xsl" Para "acceder" al autor/autores se utiliza nue- type="text/xsl"?> vamente un bucle for-each, que empieza en la lí- nea 15 y se cierra en la 20. Formato con CSS Para el formato recurriremos a un archivo CSS La lectura del contenido de la etiqueta (línea 17) externo llamado tiiulos.css, al que haremos refe- se realiza a través de otro elemento de la sint a- rencia en la estructura HTML de titulos.xsl, con- xis de X-Path, el punto (.). Este punto actúa co- sulte la línea 8. mo comodín de un número ilimitado de ele- mentos. Si ya tiene experiencia con HTML y CSS, esta sintaxis no le resultará difícil de comprender. ¡Sin este bucle solamente se mostraría una ocu- . rrencia de autor! Bucle for-each Analicemos la estructura HTML. Ordenar datos La cosa se pone interesante a partir de la línea Para terminar, le mostraré cómo ordenar los da- 10. Nos centraremos en listatitulos/cuademo y tos. En nuestro ejemplo, queremos ordenar los trabajaremos todas las etiquetas de esta cuadernos por el título. Utilice la instrucción "subrama". ¿Pero cómo? Al fin Yal cabo tene- xsl:sorl. Escriba además la siguiente línea adi- mos que tener en cuenta que los elementos se cional después del primer bucle xsl:for-each - repiten. Atención programadores: utilizaremos observe la línea 11: un bucle. <xsl:sort select="titulo"/> La clave xsl:for-each indica que se trata de un El orden de clasificación predeterminado es as- bucle. Detrás del atributo select se incluye la ru- cending, es decir ascendente. Para ordenar los ta X-Path listatituloslcuaderno. datos de forma descendente, deberá indicar or- der= "descending": <xsl:sort select="titulo" order="descending"/>
    • Lección 14: organizar y clasificar 67 Lección 14: organizar y clasificar66 Código fuente del archivo titulos.css :" .J j :-1;::~Código fuente del archivo titulo.xsl d lt d d dI la n negrita y en un fon o eco or gns s A continuación muestro el breve código fuente del archivo CSS externo titulos.css. Puede ampliar lasHe intentado facilitar la comprensión del co 19O resa an o e instrucciones sobre el formato si lo desea, para darle un toque más atractivo. ,., ..•partes más importantes. body { font-family: Aria1, Helvetica; } . "1 O" encoding="iso-8859-1"?>1 ,,?xm1 .vers~on= . //WWW w3 org/1999/XSL/Transform" h3 { font-size: 14pt; color: blue; }2 "xs1:stylesheet xm1ns:xs1="http: . version="l. O" > Aquí termina nuestra corta introducción a XSLT.Este lenguaje es tan amplio y potente que se podría3 "xs1:template match="/"> escribir todo un cuaderno dedicado a XSLT.Muchas de sus características están enfocadas al ámbito4 "html> de la programación. Pero por experiencia, diría que la gente no está interesada en estos temas, ¿o me 5 "head> equivoco? En ese caso, no dude en hacer llegar su propuesta a info@pc-cuadernos.com y lo tendr e- 6 "title>Títulos de PC Cuadernos,,/title> mos en cuenta para dedicar un futuro cuaderno a este tema. 7 ,,/head> .... n" . / " href=lf"t1t:ulciS.CsS,u!p; <T~llkrel=" stylesheet" type= text ess 8 9 "body> " 1.for-each select="listatitulos/cuaderno > 10 <xs . . "ti "xá;L:s6:í:t select="titulo"/> 12 "h3> 13 <xs1:value-of se1ect="titulo"/> 14 ,,/h3> 15 <xs1:for-each se1ect="autor"> 16 <i> Cree su página Web (1) 17 <xs1:va1ue-of se1ect="."!> 18 ,,/i> Johann-Chrlstian Hanke PCCuademos 19 "br/> Introducción a HTML 20 </xsl:for-each> 4 21 "div> 22 exsl:value-of select="editorial"/> El registro de Windows 23 ,,/div> 24 <i> Oavid Bosrnan <xsl:value-of select="descripcion"/> PC Cuadernos 25 Trucos para editar el registro 26 ,,/i> "4 27 "div> t, 28 <xsl:value-of select=,lprecio /> Photoshop 5.5 29 ,,/div> Michael Karoo 30 </xsl:for-each> Peter G. Chrlstiansen 31 ,,/body> PC Cuademos 32 ,,/htm1> 4 33 ,,/xs1:temp1ate> 34 ,,/xs1:sty1esheet> Clasificación alfabétlca gracias a xsl:sort
    • 68 Sección práctica E: ejercicios sobre CSS y XSLT Lección 15: introducción al concepto de esquema XML 69 Lección 15: Introducción al concepto de esquema XMLAhora ya sabe cómo: En esta lección aprenderá lo siguiente:• Dar forma a archivos con CSS A modo de r~~rdatorio, le recomiendo que • ¿Por qué un esquema en lugar de una DTO? vuelva a la pagina 22. Aquí reproduzco un• Crear saltos de línea en CSS • Crear una referencia al archivo del esquema fragmento del archivo XML:• Transformar archivos XML con XSTLa HTML • Crear un esquema sencillo <?xml version;"1,O" encoding; • Validar el esquema "180-8859-1"?> <listatitulos> A continuación, vamos a adentrarnos en un te-Ejercicio E1: dar formato a un documento XML con CSS ma (demasiado?) nuevo. <cuaderno> Copie el siguiente documento y guárdelo <titulo>Photoshop 5.5</titulo> <?xml version::;·1.0· encoding::;-iso-8859-1· 7> con el nombre city.xml. Cree un archivo ¿Por qué un esquema en lugar de <autor>Michael Karbo</autor> <!OOCTYPE city (View Source for fu/l doctype . .» CSS llamado city.css. una OTO? <autor>Peter G. - <citv> <ciudadl>8arcelona</ciudadl> Christiansen</autor> Todas las ciudades tienen que aparecer Seguro que estará pensando que ahora que ya <ciudad2>Yalladolld</ciudad2> <editorial>pc <ciudad3>Madrid</ciudad3> con la fuente Arial, a un tamaño de 14 había aprendido cómo crear una DTO tid ti que se n- Cuadernos</editorial> <ciudad4>Ztlrl!lgoz~</ciudad4> puntos, y de color gris (gray). Piense o ene ponerse ahora con los esquemas. No </cilv> <precio>4</precio> también en incluir un tipo de fuente ge- se pr~pe, ~o es tan terrible como parece. Las </cuaderno> neral alternativa. DTO siguen SIendo el estándar del sector. El Un documento XML sencillo concepto de esquema ha sido muy criticado, y </listatitulos> a~aImente se está trabajando en una versiónEjercicio E2: colocar las ciudades una debajo de la otra mejorada que elimine los errores conocidos la Para el siguiente ejemplo, deberá crear dentroColoque las ciudades de modo que aparezcan una debajo de la otra, y no una junto a la otra. Inserte versión 1.1. de la carpeta del proyecto cursoxml una subcar-además un margen de 10 píxeles entre cada ciudad. .f::í!~rénítasque rasDTD~~":"".. "..~~ ••:¡ ., ~ : • peta. llamada esquema. Copie la versión original .0 . ., ~1~~Y¡:l ,;,~aua~que E de litulos.xml en dicha carpeta.Ejercicio E3: vincular el enlace al archivo CSS con el enlace a la OTO .. , f3l!!m~!1l;" eLIi1§QY.fIDiIª§e,(;l!;ll§8ht~:ef!..gºQ:1~.~JCree una DTO para el archivo city.xm/ y nómbrela city.dtd. Enlace esta DTO con un vínculo y tenga El trabajo que hemos hecho en el capítulo 3 con ¿Pero para qué necesitamos algo nuevo? Preci- la DTO lo trasladaremos al esquema.en cuenta el orden de los enlaces. samente por las limitaciones de las DTO:Ejercicio E4: Incluir comentarios: comprobar la validez del documento Cu~do se e~be una DTO no es posible de- Incluir una referencia al archivo del te~ar que tipo de datos serán los caracteres. esquemaCompruebe la validez del documento. ¿Aparece el mensaje de error Not XML Document? En ese casodeberá "comentar" el enlace al archivo CSS. Utilice para ello la misma sintaxis de comentario que ya A la ~trucción #PCDATA "no le importa" si Vamos a crear el archivo del esquema.conoce de HTML, de forma abreviada: ~~aJa con letras o con números. No es posible<!-Coloque aquí los fragmentos comentados --> ~tarlo a los números, al formato de moneda o , ºRªf~!Y.9~.(I~~~9.é/:l)"ª-J:elJéiosreX!~n§}~ji(f.~ incluso a números enteros (ínteger).Cuando termine, vuelva a eliminar el comentario. Llamaremos al archivo del esquema titulos.xsd. Los ~dic~dores de frecuencia +, • o ? tienen una Pero. antes deberá incluir en titulos.xml una refe-Ejercicio ES: dar formato a un documento con XSL T fun~onalidad limitada. ¿Qué pasa si el elemen- rencia a este archivo que todavía no hemos to ti~ne que aparecer solamente tres veces o en- creado. Por 10 tanto, modifique el archivo titu-Cree una copia del documento a la que deberá llamar city2.xml. Formatee el documento utilizando tre anca y diez veces?XSLT.Para ello, cree un archivo XSLllamado city.xs/: Las ciudades deberán estar resaltadas únic a- los.xml.mente mediante un párrafo propio, no deberá darle más formato. Además, sería deseable que las "plantillas" para XMLtambién se creen en XML, y no en SGML ¿Qu~ ocurría en el caso de las DTO? Se colocabaEjercicio E6: abordar varias etiquetas con el mismo nombre mediante un como es el caso de las DTO. se~cillamente, un enlace a la DTO debajo del pr~logo. Aquí esto no funciona. Deberemos in-bucle El ejemplo de la lista de títulos cluír una referencia al archivo del esquema di-- ccitv» Modifique el archivo XML. Primero deberá guardar el archivo or i- Com~ ya es habitual, retornaremos un ejemplo rectamente en el elemento raíz. <ciudad>Bercelom.</ciudad> ginal city.xm/ con el nombre citynuevo.xml. A continuación, modifi- cciudadc-vlene-c/ciudad» antenor. Para que pueda comparar utilizare- que las etiquetas ciudadl , ciudad2 y ciudadJ por ciudad. Cree un ar- ~os ~ lista de título de las leccion~s 2 y 3. Pero La re~~rencia "o~cial~ es complicada. En lugar <ciudad>Pañs</ciudad> chivo XSLllamado citynuevo.xsl. ¿Cómo puede conseguir que todas e adVIerto,desde e~principio que un esquema ~e utilizar una sintaxis sencilla, se ha inventado </city> las etiquetas XM!-aparezcan en un párrafo separado? ~ es mas complicado y requiere más expli- todo un lenguaje" para referenciar al esquema caCIonesque una DTO clásica. donde todos los pares atributo-valor se presen-Ejercicio E7: vincular la OTO citynuevo.dtd tan y se identifican. Para que no cunda el páni-¿Cómo tiene que ser la DTO correspondiente al archivo citynuevo.xm/? Cree el archivo citynuevo.dtd y co, tomaremos un atajo. ¡Pase la página!enlácelo.
    • Lección 15: introducción al concepto de esquema XML 71 Lección 15: introducción al concepto de esquema XML70 Definición de etiquetas con Definir el tipo de datosLa variante sencilla xsd:element En la línea 7 y 8 volvemos a bajar un nivel mEsto es lo que tiene que escribir para "referenciar" el archivo del esquema en XML: A e n, la JerarqUIa. quí es donde fijamos los de-as En la línea siguiente se define el primer elemen-<?xm1 version="1.0" encoding="ISO-8859-1"?> to del archivo XML. Se trata del elemento listati- mas elementos.~Hstaf;~iilós;Xrnli1sX:~í; http://www .:w3 ..ofg/20·011XMLsch~ma~ i n iiHit,¡incé; tulos, el elemento raíz del archivo XML. Estas definiciones se cierran a nivel interno, de~ift~xáij#o~~m~a;¡p~cé.scheÍrtaLi?ciit:ién:;lti~U10E!"X!ld",>..: ->, , modo que no olvide la barra al final. ¿Por qué? <cuaderno> El atributo name hace referencia al elemento Porque nos encontramos "al final del túnel" de que se define. En este punto (todavía) no son la jerarquía y no hay más subelementos que necesarios más atributos. Se volverá más intere- tengan que ser abarcados. </cuaderno> sante en los elementos subordinados,</listatitu1os> ¿Pero qué significa el atributo type? Nos permite¿Qué es lo que ocurre exactamente en la "línea de referencia" que he marcado en gris? En primer lu- El elemento listatitulos se vuelve a cerrar en la definir el tipo de documento. Congar, creo el espacio de nombres predefinido para un prefijo llamado xsi. xsi es la abreviatura de XML línea 19. Todo lo que está en medio está type="xsd:string" vamos a lo seguro y permiti-schema ínstance. Dentro se incluye un atributo, cuyo nombre no debería preocuparle demasiado, Lo "contenido" en esta etiqueta. Para facilitarle la mos una secuencia i1irnitada de "caracteresimportante es que escribamos siempre entre comillas el nombre (y eventualmente) la ruta de acceso comprensión del código, he resaltado esta eti- aceptables en XML".al archivo del esquema, En nuestro caso es uuüoe.xsá. queta con el fondo en gris. Además, e~ten innumerables tipos de datos, desde xsd.integer hasta xsd:boolean. Los lectores El archivo del esquema titulos.xsd Bajar un nivel que "hablen" un "lenguaje de programación en Antes de nada le mostraré una visión general del archivo. El código fuente parece complicado a pr i- A continuación, observe la línea 4 y la línea 5. toda regla" como C ó C+ reconocerán con ale- mer vista, Cópielo y lea a continuación mis explicaciones, <xsd:complexType> ~a todos estos "tipos", mientras que un usua- <xsd:sequence> no novel se asustará. Además de xsd:integer te- 1 <?xm1 version=11.0" encoding="iso-8859-1"?> 2 <xsd: schema xm1ns :XSd="http://www . w3. org/2001/XMLSchema" > ¿Qué significan estas etiquetas tan extrañas? nemos, por ejemplo: 3 :.<xá·~:éíel!Jent;paffie;II.1¡i!3taHtúl0S">. Recuerde esto: con <xsd:complexType> descen- • xsd:decimal (números enteros o decimales derá un nivel en la jerarquía. Por el contrario, como -1, 2,5 o 22) 4 <xsd:comp1exType> con «xsdisequence» se introduce la "secuencia" • xsd:integer (números enteros positivos o ne- 5 <xsd:sequence> 6 ,úad; e1e¡n~IÚ:,iiame,:,~,cuaderno" ~occurs= "uriboUnded" > de las definiciones de elementos de ese nivel. gativos, como -225 o 7) • xsd:date (fechas como 2002--09-10, es decir 7 <xsd:comp1exType> llf~~:"~~~~imPf.l.tQm§T~l!~l~íii año-mes-día) . 8 <xsd:sequence> 9 <xsd:e1ement name=ltitu1o" type="xsd:string"/> Las etiquetas se cierran en las líneas 17 y 18. • xsd:boolean (valor de veracidad, como true o 10 <xsd:e1ement name="autor" type="xsd:string" maxOccurs="2"/> false,lóO) 11 <xsd:e1ement name=leditoria1" type="xsd:string"/> Frecuencia de aparición 12 <xsd:e1ement name="descripcion" type="xsd:string" minOccurs="O"/> y lleg~os a la línea 6, donde por primera vez Repetitio est mater studiorum 13 <xsd:e1ement name="precio" type="xsd:decimal"/> ~ define .el elemento cuaderno. ¿Pero qué signi- Sí, sí, el latín. ,. Hasta ahora, todo concuerda fica el atributo adicional maxüccure con el valor con la DTD de la página 25. Ya nos encontra- 14 </xsd:sequence> unbounded? Con él podemos fijar el numero má- mos en la línea 10 del esquema XML. 15 </xsd:comp1exType> XImOde ocurrencias permitidas de cuaderno un- 16 ,</xsd: ~!em~nt>" En ~s~~punto superaremos con el esquema las bounded significa i1irnitado. Bueno, finalmente 17 </xsd: sequence> posíbílidades de una DTD. La línea 10 determi- podremos hacer que aparezcan tantos cuader- na que el autor debe aparecer como mínimo una 18 </xsd:comp1exType> nos como deseemos en nuestra lista de títulos. vez, pero no más de dos veces: todavía no hay 19 </xsd::element> , -~ . También es posible especificar un número: ma- cuadernos de PC Cuadernos con más de dos a u- 20 </xsd: schema> xOccuTs="10" permitiría solamente 10 aparícío-: tores. Con una DTD no podríamos hacer esto. XSD es XML: prólogo y espacio de nombres n~ de cuaderno. El contrario de maxOCCUTSes maxOccurs y minOccurs Bien, vamos a examinarlo en detalle. En la línea 1 se alegrará de volver a encontrar un elemento e o- mmOccurs. nocido: el prólogo. Esta quizás sea la mejor prueba de que el archivo XSD es un verdadero archivo Para definir las ocurrencias tenemos el atributo También es necesario cerrar el elemento cuader- maxOccurs, al que he asignado el valor 2.. Pero XML. no, lo que se produce en la línea 16. Este ele- , . por que me Jacto de haber usado el atributo en Abra el archivo en Internet Exploren enseguida verá la estructura XML (si no puede abrirlo haciendo mento abarca también subelementos, por eso lo este punto? doble clic, arrastre el archivo manteniendo pulsada l~ tecla izquierda en Internet Explorer), he resaltado visualmente en gris. Si omite maxOccurs o minOccurs, se aplicará el La línea 2 establece el espacio de nombres de nuestro esquema. Éste tiene exactamente este aspecto ~~é~e y compare el archivo con la DTD de valor predeterminado 1. Si el elemento sola- (para la variante del esquema actual) y no se puede modificar. Es el elemento raíz del archivo del e s- b pa~ 25. Pa;a lo que en la página 25 ocupa- mente tiene que aparecer una vez, puede olvi- quema XML, y se vuelve a cerrar en la línea 20. a una simple línea, aquí necesitamos seis. darse del atributo . ... ,.=----------~ ---.
    • Lección 16: hipervínculos con XUnk 73 Lección 15: introducción al concepto de esquema XML72 • Instale Schematron, una herramienta capaz Lección 16: hipervínculos con XLinkSabiendo esto, podemos llegar a int~resantes de validar conjuntamente con MSXML unconclusiones: si solamente indica miniJc- , . En esta lección aprenderá a: archivo contra un esquema:curs=íI) ", maxOccurs se establecerá automatica- • Crear hipervínculos sencillos con XLink www.topologi.com .mente en 1. y esto se corresponde ~xact~entecon nuestro indicador de frecuenaa, el signo de C onectese a http://msdn.microsoft.com/xm1 y y en último lugar, pero no por ello menos im- , al Inf") portante, vamos a estudiar cómo insertar vín-interrogación de la DTO. ha ga dic en el enlace (sección Essenti., 4 la a XML . . ? MSXML 4.0. Descargue MS verslOn . culos en XML. No nos importa que esta funcio- Compare la línea 12 y el elemento descnpclOn. última versión es la que viene con el "~rvlce nalidad solamente sea operativa en Netscape de la DTO de la página 25. Pack 1". Esta versión requiere tener ~l instala- 6.x/7.type="xsd:decimal" dor 2.0, que se incluye a partir de Wmdows XP. Si al instalar aparecer un mensaje de error, de- ~lliJ)s;¡¡í~~til~@lUJg~sf~.l¡¡ií!QTdl~P.:fi~ La siguiente pequeña "mejora2 de l~ ~TO se oculta en la línea 13. Con la instrucaon. . berá descargar la última versió~ del instalador Solamente Netscape 6.x17 Interpreta el enlace type= "xsd:decimal" establezco q~e el preao tiene de Microsoft, el archivo Instmsl.exe. Puede bus- Hipervínculos en HTML y XML Sobre el código fuente: como puede ver, se trata que ser un número entero o deamal. carlo en http://msdn.microsoft.com. En el ejemplo de abajo aparece un hipervínculo de un archivo XML muy, pero que muy senci- Descargue de www.topologi.com la herr~en- sencillo. ¿Le suena la muestra en HTML? llo. Solamente he tenido que dar nombre a las ¡NO se olvide de validar! ta Schematron, que se puede descargar ~atui- <a href="http://www.pc- etiquetas link (elemento raíz) y vinculo (para un Después de crear su primer esquema, seguro tamente después de registrarse. ~l archivo qu: cuadernos.com" title="Editorial FC vínculo de prueba). que querrá comprobar si lo ha hecho todo e o- descargue se llamará TSV USW.ZI~. Descompn.- Cuadernos" target=" blank">FC malo y haga doble clic en el archivo Exe o MSi Cuadernos</a> - Definir espacios de nombres rrectamente. Dicho y hecho: hago dic con el botón der~o para instalarlo. El enlace nos lleva a la página de PC Cuader- En el elemento link defino el espacio de nom- en el archivo, comando Validate XML - Valida- nos, en los navegadores más modernos está de- bres. El prefijo obligatorio del espacio de nom- Inicie el programa median~e Inicio/Programas/ corado con el título Editorial PC Cuadernos y se tion successful. Dios mío, qué bueno ~~e soy. bres se llama xlink. Esta línea es obligatoria, y el Topologi/Schematron Vahdator abre en una ventana nueva del navegador. Aho- espacio de nombres está predefinido. Ahora introduzco algún error a proposito en el esquema y ... Validation successful. Algo no va ra vamos a convertido a XLink. Consejo: encontrará más información sobre los bien. espacios de nombres a partir de la página 47. El ejemplo en XLink Copie las siguientes líneas y guarde el docu- Atributo xlink:type mento con el nombre hyper.xml. El atributo x/ink:type describe el tipo de híper- <?xml version="1.0" encoding= vínculo. Con el valor simple definimos un enlace "IS0-8859-1"?> sencillo. <link xmlns:xlink= "http://www.w3.org/1999/xlink> Atributos xlink:href y xlink:title <vinculo xlink:type="simple" El atributo xlink:href es muy explicativo. En él ITodo es mentlral El esquema XML no se valida xlink:href=http://www.pc- incluimos (al igual que hacíamos en HTML) la cuadernOB.com" Ahora resulta que ni XMLINT ni Internet Ex- ruta de acceso a la página Web a la que quere- xlink:title="Editorial PC mos enlazar. plorer 6 son capaces de validar por sí solos un Cuadernos 11 Al hacer cllc en Run se Inicia la validación archivo XML contra el esquema XML. (A se p- xlink:show="new"> Seguro que tampoco tiene problemas para en- tiembre de 2002). En la parte izquierda deberá indicar el archivo PC Cuadernos tender el significado de xlink:title. Este atributo XML, y en el panel derecho el esquema. </vinculo> nos permite incluir el "título" del que hablába- Pero sí que se puede ... El hecho de que el fabricante de Schematron en , </link> mos arriba al hipervínculo. Netscape muestra Siga mis instrucciones: . realidad "propague" una variante dis~ta del un pequeño bocadillo amarillo informativo (vea Tenga en cuenta que el salto de línea lo ha iot- la imagen de arriba). • Descargue la herramienta MSXML Version esquema llamada Schematron se menaona so- zado el tamaño de la columna del cuaderno. 4.0 (actual). Es una herramienta que lamente de pasada. Cuando hablamos de es- Puede copiarla tal cual, sin estropear nada. Atributo xlink:show "moderniza" las capacidades XML de Inter- quemas, lo más común es que reinen el descon- El atributo xlink:show puede aceptar los valores net Explorer. cierto y el caos. Sin embargo, el hecho de que los atributos del new y replace. Con new nos aseguramos de que el elemento vinculo aparezcan uno debajo del otro "resultado del vínculo" se abra en una nueva es intencionado. ventana del navegador. Con replace, se reempla- ¿Quiere probar el ejemplo? Si enlaza a un archi- zará el contenido de la página que se esté mos- Vo CSS externo tampoco obtendrá ningún resul- trando. tado en Internet Explorer. j
    • 3 ) Sección práctica F: ejercicios sobre el esquema Y los hlpervfnculos 75 Informarse. aprender. consultar: recursos sobre XML74Informarse aprender, consultar: recursos sobre XML , , a- TeJlga en cuenta que siempre encontrar!" muchaPrácticamente hemos llegado al final del ~ más información en inglés que en espanoL , Ahora ya sabe cómo:d erno. Y digo del cuaderno porque todavta . • Escribir archivos de esquema XMLqueda mucho por decir sobre XML., .Pero, ante todo, le recomiendo que mv~~gue aen Internet. Encontrará mucha informaaon gr - r ~...,_W ••••••••••• lUt""""l • • • Incluir una referencia al esquema en el documento XML Validar archivos XML contra un esquema Incluir hipervínculos en XMLtuita. =.::::t~=~:=:::::=~"~~...=:"- __ •••••••• _ ••••••••••••• _IofI_Informarse: páginas del W3C ny-It-V """"" Ejercicio F1: crear un archivo XML para un artículo de periódico Si busca información de primera mano Y ~tar a ••••• _ ~ ••• find-...~ ••••. -...- ••~· al día sobre los últimos avances de los estánd a- .•...•... .¡,¡, __ ••• om-. ••••• ".. __ .t... ••••••••• -.-- •.••• "-" Supongamos que una revista se pasa a XML, y todos los redactores deben escr i- e i es (y tiene buenos conocimientos de mg 1) , le . <?xml version="1.0" encoding=iso-8859-¡" ?> bir sus artículos en el nuevo formato. El ~:omiendo que visite las páginas del W3C. Son Introducción paso a paso - <papel"> redactor jefe pone a su disposición esta un punto de partida perfecto. e gustan mucho los tutoriales Perso na1men t e, m 1 . - carticleo "plantilla de artículo". Copie el documen- T••••••.•.••••••• ~·~ lín d W3Schools entre otros los re atívos eneae , -chead» T1tull,r<!head> to y guárdelo con el nombre paper.xml. a OTD, OOM, WAP, X-Path o el es~dar para <lead>lntroducdón<!lead> •• N."espaces 1.1 Last Can Publlsllod <paragraph>Párrafo de texto</paragraph> Atención: la etiqueta article puede apare- formularios X-FormoNuevament~, pl~nse que ~~~~N-:-;::X;II. estas páginas están solamente en ínglés: -c/articlec- cer un número ilimitado de veces. Los WIoIIiWta,II.I~·~.""""~ ••••••• _;.JtWL~.V~1.1~ </paper> elementos head y /ead solamente pueden ;:.~.:=--::;;= ..... ~ ~~ .. •• XKfML 1.0 iD XML Scbema Nol.8 www.w3schools.com Consultar: Usegroups sobre XML aparecer una vez, y el elemento paragraph diez veces (los autores no pueden escribir Publlshed más párrafos). El orden es head - /ead - pa- Si lo que desea es una buena introduc~~n al Este es el aspecto de la estructura del artículo Js.-w1OOl:ThoHNL Workiac<hoop .•• .--d ragraph. tema le recomiendo los grupos de notícías. En , rá toda la Información posible eobre los ellos los interesados en XML se ayudan mu- Ejercicio F2: crear una OTO AqUI encontra nuevOS Ienguates tua~ente y se resuelven dudas. Es especialmen- ¿Ha creado el archivo paper.xm/? Guarde una copia del archivo con el nombre paperl.xml. Intente te interesante el grupo plasmar los requisitos mencionados arriba en una OTO clásica (paper.dtd). ¿Qué no será posible? Va- Acceda a www.w3.org y haga clic en el tema lide el documento. quemas· le mteresa La calidad de los documen- , • c otrrp , text .xml . tos oscila entre complicada y totalmente m~?m- Acceda a www.google.com. haga clic en la pes- Ejercicio F3: fijar una referencia al archivo del esquema prensible. Si tiene suerte y pacie~cia, tamble~ _ taña Groups y escriba el nombre del ~po de- encontrará traducciones al espanol d~ las pnn Cree una segunda versión del archivo original y guárdela como paper2.xmI. Inserte una referencia al seado. Desde aquí podrá leer y publicar men- cipales especificacione: de los lenguajes. ¡No archivo del esquema (que todavía no ha creado) paper.xsd. sajes cómodamente. tenga miedo, adelante. . . gularmente en Si está interesado en partícípar re ,. Ejercicio F4: escribir el esquema Aprender: W3Schools y cía. . . un grupo, sería recomendable que utilizase un Cree el archivo del esquema paper.xsd. Intente transformar los requisitos del ejercicio Fl. . 1 d información técnica prefiere reci- lector de noticias, como Outlook Express, SI en ugar e tilizar bir instrucciones paso a paso, puede u . Otra opción son los .~pos de ~~oo.com, cuya Ejercicio F5: validar un archivo XML contra el esquema te un buscador como Google e indi- Valide el archivo XML contra el esquema que ha creado usted mismo. sen cillamen 1 . t interfaz existe tamblen en espanol. tilizar 1 car las palabras clave sobre el tema que e m e- http://es.groups.yahoo.com/ . Se p~ede u resa, por ejemplo: del Web o bien puede recibir los men- . Ejercicio F6: insertar hipervíncuLos internos a tr aves ,. habl xml-schema tutorial sajes en su programa de correo electromco - :r Cree dos archivos XML sencillos (~1> misma carpeta), El primero si lo que desea es encontrar información sobre tual. : deberá llamarse paginal.xmI, yel segundo pagina2.xml. Cree en cada i &- aquí se ya a la ~ 1~ página un hipervínculo que lleve a la otra página. La descripción del esquemas XML. .WIFHm-•• . . lA . ,.. .c •• enlace (el texto legible) tiene que ser Página 1 y Página 2. Como "título" escriba, por ejemplo, Por aqui se va a la página 1, etc. Asegúrese de que no se abra una ventana nueva del navegador, sino que el contenido aparezca en la Ventanaactual. Compruebe los vínculos en Netscape (si es posible). ~~-,~---~,---------
    • 76 Los manuales de PC Cuadernos Venta al número n Los manuales de PC Cuadernos Venta al número Titu!o Publicado en Tipo Referencia Precio ¿ Quiere conseguir un En numero atrasado, o que ya no está a la venta? 457 4.5ÓÉUR ese caso, podemos mandárseIo por correo. . Loúnico que tiene que hacer es diri . .. Allí guse a nuestro sitio web en www d encontrará una lista completa di . ·pc-cua emos.com. contenidos, suplementos gratuitos yer:::::t~ pU,blicados, demás de un breve resumen de los a fecha de publicación, etc. e mteres sobre los autores, comentarios de los lectores, Desde el sitio web podrá enviamos su solici .. , forma sencillay rápida. tud para recibir numeros atrasados por correo, de una I1, !I, , ,Iil" 4408 4.50EUR 111 1 1 /1: ir I I ;1"I1, 1 I CM
    • índice de palabras clave 79 índice de palabras clave78 Netscape 19 Sección práctica C, con XMLINT 30 entorno de desarrollo 18 NMTOKEN39 atributos, DTD instalar un validador 31 estándar basado en texto Nodos23 entidades 44 W3C-Validator 54 9índice de palabras clave - Nombres de campo 33 Sección práctica D, XML contra el esquema guardar documentos a OpenOffice 9 72 largo plazo 10 Entidades predefuúdas 21 HTTP5 paréntesis, espacios de MSXML72 válido 16; 23 incluir en archivo H1MLAplicación práctica de id 52 OpenOffice, soporte de nombres y XHfML 55 programas de validación ENTITY41 value-of seiect 63 50 XMLll 1EXMLTLS, instalar 31 XML12 Sección práctica E, paraXML30 Espacio de nombres Virus 12 inconvenientes 13ASCll5 declarar 48 IMPLIED 35; 39 Opera 5 ejercicios sobre CSS y insertar comentarios 68 Schematron 72 Virus por e-mai112Asterisco 26 Dibujar la estructura de explicación 47 Inconvenientes ordenar con XSLT 65 XSLT68 insertar imagen 63 de HfML 7 parser Sección práctica F, W3C6;9 introducción 7Atributos árbol 34 Espacios de nombres deXML 13 ¿qué es? 23 W3Schools 74 lenguajes basados en definir en OTO 35 display 60 definir 47 ejercicios sobre el definir mejor las etiquetas indicador de opción (O) Internet Explorer como WAPll XMLI0 DOCTYPE 27; 53 Esquema 69 esquema y los 34 como aplicación XML 70 25 parser23 hipervínculos 75 Webpublishing lo que no es 7 definir propios con XML DTD como conjunto de reglas indicador de no validador 29 problemas 14 posibilidades de ¿por qué es importante? Selector58 16 secuencialidad (Y) 25 validador 29 soluciones 14 disposicion 13 16 Separación de estructura 29 PCDATA26 wel-formed 16; 23 presentación en el Web 13 en HfML 34 como conjunto de reglas como nuevo estándar 69 Indicadores de frecuencia Y diseño 16 fijar valor 40 definir etiquetas 71 Planificación Windows Scripting Host prólogo 19 16 26 SGML representación gráfica 34 implied versus required frecuencia de aparición 71 estructura en XML 8 12 crear 24 Integer71 etiquetas 6 resultado en Internet 35 insertar referencia al planificar WML 10;61 no definir ningún valor 38 definir atributos 35 Internet Explorer SGML Explorer 18 archivo del esquema documento XML 22 World Wide Web DTD externa 24 domina XML 14 características 4 rsultado en el navegador predefinir un valor 40 69 la DTD24 establecer un enlace 27 muestra la estructura de como base para H1ML 5 Consortium Véase Netscape 19 son opcionales 39 tipos de datos 71 planificar una estructura explicación paso a paso árbol 23 inicio 4 W3C transformar 15 ATILIST35 Esquema de la estructura 22 25 representar XML 18 se convierte en estándar WSF12 transformar a (X)H1ML Base de datos de incluir 27 de árbol 34 Introducción 3 Prefacio 3 JS04 XHfMLll 15 productos 33 inconvenientes del Etiquetas Prefijo para espacios de Islas de datos 50 Signo de interrogación 26 ¿qué es? 51 transformar con XSL 15 bien formado 16; 23 concepto 39 definir propias con XML nombres 47 tutoriaIes 74 iso-8859-1 20 Signo de suma 26 diferencias con H1ML 51 Boolean71 interna 28 16 Principio de as variables reglas estrictas 51 validar 29 en SGML 6 Latin-120 Sintaxis de X-Path 63 Caracteres especiales 20 planificar 24 XUnk 10; 73 válido 16; 23 Lee, Tim-Berners 5 en las entidades 41 SMIL 10 Carrito de la compra 14 pública 27 Europa suroriental20 XML Schema Véase Lenguaje base XML 8 Probar 54 StarOffice 9 XML referencia en XHTML 52 FileMaker 11 CDATA38 Lista de direcciones 32 Problemas con los ¿dinecto en el navegador? Schema validar 29 FIXED40 StarOffice, soporte de CDATA y NMfOKEN 39 acentos y as entidades 14 XMUNT30 versión de transición 53 fQr-each 65 Lista de teléfonos 44 XML12 CDF12 versus esquema 39; 69 42 ¿por qué XML? 7 xmIns48 formas abreviadas de Lista de títulos 22 String 71 Atributos 34 cirí1ico 20 Editor 18 Problemas con sitios Web XPointer 10 atributos 52 MathML 10 SVG61 bien formado 16; 23 Comentarios para XML conXML 14 xsd 70; 71 Ejemplo Formato binario 9 maxOccurs 71 Tablas en XML 63 características principales 68 artículo de periódico 75 Mensaje de error Prólogo 19 9; 16 XSL Formato con CSS 56 template63 Compresión de XML 13 base de datos de con acentos 20; 42 PUBUC2.7 como base de datos 33 como lenguaje de diseño Formato de texto versus TIDY54 13 Comprobar 29 productos 33 entidad no definida 41 referencia a la DTD 27 como lenguaje modular con parsers validadores formato binario 9 Tim Berners-Lee 5 para transformar XML 15 carta 41 evitar con comentario 68 REQUIRED35 10 29 enXHfML54 Formato de texto, Tipo de datos para el XSLyXSLT61 valor no válido de Schema69 como lenguaje para Conjunto de caracteres inventario 42 inconvenientes 10 atributo 39 esquema 71 estructuras 8 XSL-FO 61 lista de direcciones 32 Schematron 72 Transformar XML 15 incorrecto 20 FormatoZIP versión antigua del crear el primer documento XSLT iso-8859-1 20 lista de productos con en staIOffice 12 Script-Host 12 Tutoriales sobre XML 74 bucle 65 instalador 72 18 visión general 20 CSS59 para comprimir XML 13 Sección práctica A, URI48 definir etiquetas propias ejemplo 66 Metalenguaje 10 Crear archivo del lista de teléfonos 44 Funcionamiento modular preguntas generales 17 valid 16; 23 16 introducción 61 Microsoft Office lista de títulos 22 Sección práctica B, descripción porOTO 16 ordenar 65 esquema 70 deXML 10 formato binario 9 Validar obras 44 formato binario versus primeros ejercicios en elemento raíz 19 sintaxis 62 CSS GML4 código XML 29 como archivo externo 56 Elemento raíz 19 formato de texto 9 XML32 con TIDY 54 en la práctica 11 Gráficos en XML 63 como lenguaje de diseño Encontrar errores con formato XML 11 en StarOffice 12 Guardar documentos, 13 Schematron 72 Microsoft, Channels 12 largo plazo 10 diseño atractivo 59 Encontrar errores minOccurs 71 escritura compacta 59 mediante la validación Gusanos 12 Hipervínculos con XLink Modo quirks 53 forzar salto de línea 60 31 73 Mozi1a5 fundamentos 56; 58 Entidades MSXML72 principales atributos y homepage5 como comodines 41 características 58 HTML narne52 entidades predefinidas 21 referencia 58 etiquetas 6 name space 47 escribir acentos 20 selectores 58 explicación 21 inconvenientes 7; 8 navegador5 Date 71 inicio 5 como parser 23 extemas42 Declaración del tipo de se populariza 6 Internet Explorer 18 internas 41 documento 27 para caracteres especiales transformar de XML a modo quirk 53 HfML62 Netscape 19 Descarga 20 representación de XML 14 breve referencia de CSS 58 parameter-<!rttities 42 versus XHTML 51 de los ejemplos 3 Entidades parámetro 42 HTML-Kit54