XML. Introducción. Introducción. Introducción. La web semántica: tecnologías y aplicaciones



Documentos relacionados
Validación de un XML

Sistemas de Información 12/13 XML (extensible Mark-up Language)

Fundamentos de las tecnologías de la información

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect

XML: extensible Markup Language (Parte I) Ingeniería de la Información

M. Carmen Fernández Panadero

XML-Schema. XML-Schema. Espacios de Nombre. W3C XML Schema intenta superar las limitaciones de las DTDs con respecto a ellos

XML. Introducción. Cómo se usa? XML Tree. Sintaxis XML

XML Schema. Sergio Luján Mora.

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

extensible Markup Language (XML)

Visualización y Transformaciones en XML

Transformación de documentos XML con

Desarrollo de software para navegación web desde terminales celulares de 3ª generación

XIII Reunión de Usuarios Aleph México. MarcXML. Egar Arturo Garcia Cárdenas

UNIVERSIDAD DE EL SALVADOR FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE TEMA: XHTML CATEDRA: INTRODUCCION A LA PROGRAMACION EN INTERNET

XML Namespaces. Sergio Luján Mora.

Ejercicios del bloque de Web de Sistemas de Información:

2 Estructura de un Documento XML

1 Introducción a XML

Tecnologías XML y Web Semántica. Departamento de Informática Universidad de Oviedo

Documentación Electrónica

Depto de Cs e Ing. de la Computación Universidad Nacional del Sur

Primeros pasos con XML y XSL Ricardo Borillo Domenech

TEMA 35: Estándares SGML y XML. Entornos de aplicación.

XML, parte 3. M. en C. Erika Vilches

XML. María Consuelo Franky. Universidad Javeriana 2009

XSL. Introducción. Introducción. Introducción

XML para FP : Introducción

Datos Estadísticos y el Lenguaje XML

5.1 Introducción a XSL

Estándares SGML y XML. Entornos de aplicación

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

Creación de documentos XML

qué es XML? por qué es necesario XML? XML vs. SGML y HTML Hacía la estandarización de los datos

DAW LENGUAJES DE MARCAS. Tema 1: Reconocimiento de las características de los Lenguajes de Marcas

XML (Extensible Markup Language)

HTML. HTML (HyperText Markup Language) Creado en 1989 por el físico nuclear TIM BERNERS- LEE

Unidad 6: DTD. JJ Taboada León IES San Sebastián, Departamento de Informática LENGUAJE DE MARCAS Y SGI Curso 2011 / 2012

ESQUEMAS INTRODUCCION A LA VALIDACIÓN DE DOCUMENTOS MEDIANTE ESQUEMAS. 7.3 Partes importantes de los esquemas Repeticiones de elementos

Introducción a XML. Simon Pickin Ingeniería Telemática. Basado en una presentación de M. Carmen Fernández Panadero <mcfp@it.uc3m.

Creación de una página web accesible sencilla

XML. Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos. Marzo de gsyc-profes (arroba) gsyc.urjc.

Tema 3.1: Principios de diseño web accesibles

Tabla de Contenidos. xii

Práctica de introducción a

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy

XML Schema. Definición y validación

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Tecnología Multimedia

Práctica 4 Manejo avanzado de Bison

EXTENSIÓN DE UML PARA APLICACIONES WEB

Presentacion de Declaraciones Juradas de Retenciones de Sellos. <Cuit> </Cuit> Etiqueta de Apertura

CÓMO CREAR UNA PÁGINA WEB v.1

PREGUNTAS TIPO (EXAMEN DE OFIMÁTICA AVANZADA)

Análisis y Diseño de Sistemas de

Formularios HTML. Elementos de Programación y Lógica

Generación de DTD para archivos XML utilizando una gramática visual relacional

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

MATERIAL 2 EXCEL 2007

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B)

IES Pablo Serrano-ASIR1D/DAM1D-B.Soler XML

extensible Markup Language

Transformación de documentos : XSLT

Requisitos para la generación de Xml válido

Definición de XQuery.

XHTML. Sergio Luján Mora.

Qué es XML? XML (extensible Markup Language) Lenguaje de tags (similar en sintaxis a HTML) Estandarizado por el W3C (

XML. Necesitamos un formato de datos: Posibles usos. Estandard Robusto Extensible

Tablas en HTML. Tipos de celdas. Ing. Tomás Urbina Programación Web y Desarrollo de la Plataforma Web

Imágenes y objetos IMÁGENES

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

XSL: extensible Style Language. Anabel Fraga

1º ADMINISTRACIÓN DE SISTEMAS INFORMÁTICOS EN RED

Cursito 28: Curso de HTML Parte 4

Práctica 2: Diseño Web inicial. XHTML avanzado.

UTILIZACION DE ESQUEMAS XML DE LA AGENCIA TRIBUTARIA PARA CALCULO RETENCIONES

TRABAJO PRACTICO Nº 1 Formateador de contenidos CSV

Análisis de esquemas XML [1]

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA

Tema 4 Metadatos. Eduardo Martínez Graciá Humberto Martínez Barberá

UF2217 Lenguaje XML (Online)

Tema IV. XML V. APIs (DOM & SAX)

RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B)

BASE DE DATOS RELACIONALES

ANEXO 1 INFORMACIÓN SOBRE XML ENLACES SITIOS DE INTERES HERRAMIENTAS EDITORES, ETC

INYECCIóN DE CóDIGO EN APLICACIONES PHP. Autor: Iñaki Rodriguez (2005)

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 7

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Capítulo 1 Documentos HTML5

Trabajo Practico Tema: XML

PASOS PARA CREAR UNA PÁGINA WEB

Lenguajes de Marcas y Sistemas Gestores de Información

Estructuras de Datos y Algoritmos. Árboles de Expresión

Introducción a Visual Studio.Net

Los requisitos de accesibilidad en un proyecto software. Implicaciones de usuarios discapacitados en el proceso software

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

Transcripción:

La web semántica: tecnologías y aplicaciones XML Introducción Referencias:» E.R. Harold, W.S. Means: XML in a nutshell, a desktop quick reference. Ed. O reilly, 2001.» M. Morrison, et.al. XML. Al descubierto. Prentice-Hall, 2000.» D. Martin et. al.: Professional XML. Ed. Wrox Press, 2000.» A. Navarro, C. White, L. Burman: Mastering XML. Ed. BYBEX, 2000.» M. Kay: XSLT, 2nd edition. Ed. Wrox Press, 2001.» Charles F. Goldbarg, Paul Prescod. The XML handbook. Ed. Prentice Hall PTR, 2000.» Elliotte Rusty Harold. XML Bible. Ed. Hungry Minds, Inc, 1999. 1 2 Introducción Links interesantes: SGML:» Extract from the Information Interchange Technology Handbook: What is SGML?: http://www.techapps.co.uk/iihb_sgml.html Sitios genéricos:» Extensible Markup Language (XML): http://www.w3.org/xml/» IBM alphaworks: http://www.alphaworks.ibm.com/» Cafe con Leche XML News, and Resources: http://metalab.unc.edu/xml/» SUN: http://java.sun.com/xml/» XML.com: http://www.xml.com» Webreference:http://www.webreference.com/authori ng/languages/xml/» DataChannel XML Resources, XML = Revolution: http://www.datachannel.com/xml_resources/» POET XML Resource Library: http://www.poet.com/xml/xml_lib.html Introducción Links interesantes: Ejemplos:» Examples from XML: Extensible Markup Language: http://metalab.unc.edu/xml/books/xml/examples/» Heart of Darkness: http://home.sprynet.com/~dmeggins/texts/darkness/i ndex.html Tutoriales:» IBM XML Web Site, Education - XML Tutorials for Programmers: http://www.software.ibm.com/xml/education/tutorialprog/overview.html» DEVELOPERLIFE.COM brought to you by The Bean Factory: http://developerlife.com/xmljavatutorial1/default.htm» Introduction to XML (Webmonkey): http://metalab.unc.edu/xml/books/xml/examples/ 3 4 1

Links interesantes: Software: Introducción» IBM: http://www.software.ibm.com/xml/ Ayudas/Foros:» IBM alphaworks: http://www.alphaworks.ibm.com/discussion» DejaNews Search Results: http://www.dejanews.com/=netcenter/dnquery.xp?qu ery=jvm&vw=&maxhits=25&format=terse&showsort =score&st=qs&ln G=ALL DOM:» XML.COM - DOM: http://www.xml.com/xml/pub/dom» Document Object Model (DOM): http://www.w3.org/dom/ 5 Introducción Links interesantes: XML/EDI:» EDItEUR: http://www.editeur.org» Guidelines for using XML for Electronic Data Interchange: http://www.geocities.com/wallstreet/floor/5815/guid e.htm Varios:» Soporte XML en IE5.0: http://www.xml.com/xml/pub/1999/03/ie5/first-x.html» XML in Mozilla: http://www.mozilla.org/rdf/doc/xml.html» XML: It's Not Your Father's HTML:http://www.webreference.com/authoring/langu ages/xml/intro/browser.html» XML: http://www.harvardcomputing.com/resources/repor ts/xml/xml.html» XML.COM - What's the Big Deal With XSL?: http://www.xml.com/xml/pub/1999/04/holman/xsl.html 6 Introducción XML ( the extensible Markup Language ).» Estándar apoyado por W3C» Formato para documentos digitales Formato flexible. Posible uso:» En la Web, intercambio electrónico de datos, gráficos vectoriales, serialización de objetos, etc. XML es un lenguaje de meta-marcado (no hay un conjunto finito de etiquetas permitidas)»química»música» Propiedades inmobiliarias» Matemáticas» OTROS? 7 Introducción Carácterísticas básicas de XML» Pueden definirse tantas etiquetas como sea necesario» Es posible anidar estructuras hasta cualquier profundidad» Un documento XML puede contener, opcionalmente, una descripción de su gramática» XML no proporciona información de presentación 8 2

Introducción Documentos bien formados Sensible a las mayúsculas Un documento XML tiene» Una estructura (árbol)» Una semántica Datos Documentos El marcado permitido en una aplicación se documenta en un DTD ( Document Type Definition )» Un documento válido es aquél que responde a un DTD» Diferencia entre un documento: Bien formado Válido Ejemplo: Introducción <?xml version="1.0"?> <product barcode="2394287410"> <manufacturer>verbatim</manufacturer> <name>datalife MF 2HD</name> <quantity>10</quantity> <size>3.5"</size> <color>black</color> <description>floppy disks</description> </product> Datos portables:» Independientes de la plataforma» Java da código portable. XML proporciona datos portables 9 10 Introducción La sintaxis del DTD es limitada» No se puede decir, por ejemplo este elemento contiene un número o la longitud del string tiene que estar entre 1974 y 2032 Los parsers comprueban:» Documentos bien formados» Documentos válidos (DTD) Un documento puede contener un DTD o un puntero a una URL donde se encuentra el DTD Introducción La aplicación que recibe datos del parser puede ser:» Un navegador Web» Un procesador de textos (como StarOffice Writer, que carga el documento XML para su edición)» Un servidor de bases de datos, como Oracle, que guarda los datos en una bd» Un programa de dibujo, como Corel Draw, que interpreta XML como coordenadas 2D para una imagen» Una hoja de cálculo, como Gnumeric» Un programa financiero, como Microsoft Money, que toma datos bancarios» etc... 11 12 3

Introducción XML desciende de SGML ( Standard Generalized Markup Language ) GML (IBM, años 60) SGML (IBM, años 80: IS0 8879) HTML es una aplicación SGML» HTML no es apropiado para intercambio de datos o para su uso en bases de datos Introducción SGML es demasiado complejo (150 páginas para su especificación) 1996: versión más sencilla de SGML 1998: XML 1.0 XSL ( extensible Stylesheet Language )» aplicación XML que transforma documentos XML en otros para mostrar en páginas Web y otros propósitos. 13 14 Introducción XSL se dividió en XSL Transformations (XSLT) y XSL Formatting Objects (XSL- FO) XSLT se ha convertido en un lenguaje (api) de propósito general para transformaciones XSL XSL-FO es una aplicación XML que describe el formato de páginas a imprimir o páginas Web. Un rival de XSL-FO es Postscript Otra opción de estilo para documentos XML es CSS ( Cascading StyleSheet language ). CSS ya se usaba en HTML antes de aplicarse a XML 15 Introducción XLL ( extensible Linking Language ) sirvió para conectar documentos XML en una red de hipertexto. Se dividió en dos estándares separados:» XLink: describe conexiones entre documentos» XPointer: partes individuales de un documento XPath: surgió al haber partes en común de XPointer y XSLT que resultaban ser algo incompatibles» Surgieron algunas otras incompatibilidades, entre por ejemplo XML 1.0, XSLT, XML Schemas, DOM. Por ejemplo en XML 1.0 se considera la raíz de un documento como su raíz, mientras que en XSLT se usa otra raíz más abstracta. 16 4

Introducción Una interfaz común para acceder a los contenidos de un documento XML desde un programa Java, C++,...:» DOM (Document Object Model) Fuera del W3C, otros autores desarrollaron el Simple API for XML (SAX). SAX2 se presentó en 2000 Otras direcciones en la especificación XML son:» XFragment: dar sentido a trozos de XML que aisladamente no son documentos bien formados.» XML Schemas: una aplicación XML que describe los contenidos permitidos de un documento XML (alternativa a los DTDs).» XHTML. Reformulación de HTML como un bien formado documento XML. 17 Introducción» XML Query Language. Para encontrar elementos en un documento XML que cumplan un cierto criterio» Canonical XML. Algoritmo estándar para determinar si dos documentos XML son los mismos salvo cambios insignificantes (simples o dobles comillas,...)» XML Signatures. Autentificación de documentos XML Usos de XML otras áreas, aparte de la Web:» OMG (Object Management Group): DTD para describir diagramas UML en XML» American Institute of Certified Public Accountants: DTD para XFRML (the Extensible Financial Reporting Markup Language)»... 18 Introducción Tecnologías XML SGML HTML XML XSL XSLT XSL-FO CSS XLL XLink XPointer XPath XFragment XML Schemas XHTML XML Query Language Canonical XML XML Signatures 19 Introducción Tecnologías relacionadas con XML DOM SAX Xerces Jena Jenoki etc Problemas con XML» Demasiadas tecnologías» Definición de estándares dependientes de intereses comerciales 20 5

Un documento XML:» Un prólogo. Información estructural (opcional). Partes: Declaración XML:Es una instrucción de procesamiento (IP) Declaración de tipos del documento (DTD)» Un elemento raíz» Un epílogo (opcional)» Puede contener intercalados: Comentarios Otras IP Elemento: Componente básico de un documento XML» Se define a través de dos etiquetas que encierran su contenido» El contenido puede ser texto, un nuevo elemento o una mezcla de ambos 21 Sensible a mayúsculas Etiquetas ( tags ):» Cualquier etiqueta es válida (por ejemplo, en HTML se pueden usar unos 100 tags).» <etiqueta>...</etiqueta>» Etiquetas vacías: <br></br> o bien <br/> Ej: <vacia></vacia> <vacia/> 22 Ejemplo: <person> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> Estructura de árbol Atributos: Propiedades asociadas a los elementos XML. Se definen a través de pares (nombre, valor) Ej.: <person name= Alan age= 42 email= agb@mail.com/> El valor de un atributo debe ser atómico name person profession Atributos (cada uno entre dos o entre dos ) first_name last_name 23 24 6

Otro ejemplo: <person> <name first="alan" last="turing"/> <profession value="computer scientist"/> <profession value="mathematician"/> <profession value="cryptographer"/> </person> Cuál de las dos versiones es más adecuada? Por tanto, cómo conviene representar los atributos: atributos XML o hijos XML?» Se suele decir que los metadatos van como atributos» Los datos como hijos XML 25 26 Nombres XML (tags y nombres de atributos):» Pueden contener cualquier carácter alfanumérico. Sin espacios en blanco.» Pueden contener: _ -» Deben empezar por letras o por _ ( guión abajo» Sin límite de cantidad de caracteres Si se tiene que poner < dentro de un texto (es decir que no es un nombre XML), utilizar < en su lugar.» Para poner &, utilizar & Entidades: Se emplean para representar caracteres especiales, para incluir ficheros externos y para referenciar porciones de texto Comienzan siempre por & y terminan con ; < < XML tiene 5 referencias de entidad ( entity reference ):» <, & >, " (doble comilla),&apos; (simple comilla) 27 28 7

En los DTD (Document Type Definitions) se pueden definir nuevas entidades Para evitar el uso de las referencias de entidad se puede utilizar CDATA. Lo que aparece entre <![CDATA[ y ]]> se interpreta como caracteres Comentarios:» <!-- esto es un comentario --> IP ( processing instructions ):» Medio alternativo para pasar información a una aplicación que lee el documento» <?...?>» Pueden informan a motores de búsqueda y otros robots Ejemplo: <?robots index= yes follow= no?> El robot de motor de búsqueda indexa la página pero no sigue los links detrás de ella 29 30 IP ( processing instructions ):» No son elementos XML. Por tanto, como los comentarios, pueden aparecer en cualquier sitio de un documento XML (incluyendo antes o después de la raíz)» Ejemplo: <?xml version="1.0" encoding="ascii" standalone="yes"?> <person> Alan Turing </person> La declaración XML:» Los documentos XML pueden empezar con la declaración XML» Si un documento comienza con esta declaración, no se pueden poner antes comentarios, espacios en blanco u otra IP» Atributos version, enconding y standalone Version: valor 1.0 Encoding: opcional (valor Unicode por defecto) Standalone: si vale no, se puede necesitar un DTD externo. Es opcional (valor por defecto: no) 31 32 8

Un documento XML está bien formado si toda etiqueta está correctamente cerrada y si los atributos son únicos dentro de un mismo elemento Dentro de un elemento, el orden de sus componentes importa No existen más restricciones para que un documento se considere expresado en XML 33 Documento bien formado XML:» Toda etiqueta debe empezar y acabar» Los elementos son independientes» Debe haber sólo un elemento raíz» Los valores de atributos van entre o.» Un elemento no puede tener dos atributos con el mismo nombre» Comentarios e IP no pueden ir dentro de etiquetas» No pueden aparecer cosas como < o & dentro de los caracteres de los elementos o del valor de atributos Ejemplo de parser que comprueba documentos bien formados:» Xerces-J de Apache XML Project Escrito en Java Incluido en Netbeans (haciendo check ) 34 DTDs Document Type Definitions» Constituye una gramática para documentos XML DTDs En un área, puede interesar que sólo determinados documentos bien formados se puedan utilizar» Forma parte del lenguaje XML» Conjunto de meta-información para aplicaciones externas que deben trabajar con documentos XML» Sirve como plantilla para los documentos XML a que hace referencia» Por ejemplo, En HTML, los elementos li deberían descender sólo de ul En un DTD se expresan los contenidos y atributos de las etiquetas 35 36 9

DTDs Un DTD puede decir, por ejemplo:» Un elemento ul sólo puede aparecer en un elemento li.» Todo empleado debe tener un atributo número de seguridad social Un parser de validación compara un documento con su DTD La validación es un paso opcional en el procesamiento de un documento XML DTDs Un documento válido tiene una declaración de tipos del documento que identifica el DTD que satisface el documento La validación utiliza:» Todo lo no referenciado está prohibido 37 38 DTDs Cualquier parte del documento XML debe estar permitida por el DTD El DTD no dice:» Cuál es el elemento raíz» La cantidad de veces que cada elemento aparece en el documento» Cómo son las datos tipo carácter que aparecen en los elementos» El contenido semántico de un elemento (si contiene una fecha o un nombre de persona) DTDs Un DTD no dice nada sobre la longitud, estructura, significado, valores permitidos, del contenido de texto de un elemento Validación es opcional:» Si estamos recibiendo datos de una BD, es importante tener todos los campos» Al presentar una página Web, puede no ser importante, por ejemplo, la falta de un elemento A todos los documentos XML se les exige que sean bien formados, pero la validación es opcional 39 40 10

DTDs Validación de documentos:» En general, los navegadores Web no validan y sí que comprueban los documentos bien formados.» Validadores: Online: Brown University Scholarly Technology Group Richard Tobin s Validador de Xerces-J (Apache) Incluido en Netbeans DTDs Ejemplo: <person> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> Su DTD (varias declaraciones de elementos): <!ELEMENT person (name, profession*)> <!ELEMENT name (first_name, last_name)> <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> <!ELEMENT profession (#PCDATA)> 41 Importa el orden! (nombre, apellido) 42 DTDs Existen 3 tipos de declaraciones válidas: DTDs 1. ELEMENT <!ELEMENT nombre contenido>» ELEMENT (elementos)» ATTLIST (listas de atributos de un elemento)» DOCUMENT TYPE DECLARATION (raíz del documento, no confundir con DTD) El contenido de un elemento puede ser:» (otros elementos)» ANY Cualquier combinación de elementos o datos» EMPTY No contiene datos ni otros elementos» (#PCDATA) Cualquier combinación de caracteres analizables 43 44 11

1. ELEMENT Estructura de un DTD Elementos 1. ELEMENT Estructura de un DTD Elementos Un elemento puede estar formado por dos o más elementos, que se indican a través de una lista de nombres de elementos separada por:», (coma) Cada elemento de la lista debe aparecer en el orden indicado» (pipe) Puede aparece un elemento u otro Es posible indicar la cardinalidad asociada a cada elemento:»? Elemento opcional, puede aparecer o no» + Una o más veces» * Cualquier número de apariciones o ninguna Si no se indica la cardinalidad, el elemento debe aparecer, y sólo puede aparecer una vez 45 46 Declaración de elementos Declaración de elementos Ejemplos: <!ELEMENT name (first_name, middle_name?, last_name?)> <!ELEMENT digito (cero uno dos)> - Otras posibilidades: <!ELEMENT circulo (centro, (radio diametro))> <!ELEMENT point ((x, y) (r, u))> - Una limitación es el orden. Se pondría <!ELEMENT point ((x, y) (y, x) (r, u))> 47 Contenido mixto:» Lo único permitido es, por ejemplo: <!ELEMENT definicion (#PCDATA abreviatura nombre_persona)*> PCDATA deber ser el primero en esta lista» No se puede, por ejemplo, decir que debe haber exactamente un término abreviatura y luego el parsed character data. Elementos vacíos:» <imagen fuente= bus.jpg anchura= 152 />» <!ELEMENT imagen EMPTY> ANY:» <!ELEMENT pagina ANY> Su contenido es cualquier cosa (uno o varios hijos) 48 12

2. ATTLIST Estructura de un DTD Atributos Estructura de un DTD Atributos 2.1 Tipos de atributos Permite definir los atributos de un elemento Existen 10 tipos diferentes (con schemas hay más posibilidades) <!ATTLIST nombre_elemento nombre_atributo tipo valor_defecto> donde:» nombre_elemento Nombre del elemento para el que se define el atributo» tipo Tipo del atributo» valor_defecto Indica el valor por defecto del atributo CDATA Cadena de caracteres ( No confundir con la sección CDATA!!) ENTITY - <movie source= X-Men-Trailer /> - El DTD declara una unparsed entity llamada X- Men-trailer (se verá luego) ENTITIES. Varias de tipo ENTITY 49 50 Declaración de atributos 2.1 Tipos de atributos ID» Un XML name único en el documento distinto de un XML name token. Un XML name, por ejemplo, no puede ser 123 Único: ningún otro atributo de tipo ID puede tener el mismo valor <!ATTLIST empleado numero_seg_social ID #REQUIRED>» Sería entonces:» <empleado numero_seg_social= _123 > IDREF. Su valor debe coincidir con el nombre de un elemento definido en el documento ( debe ser el mismo que el de un id ): Ejemplo: numero_seg_social (de tipo ID) definido en el elemento XML persona atributo persona definido en el elemento miembro_equipo Estructura de un DTD Atributos 2.1 Tipos de atributos NMTOKEN ( name token )» Cadenas de caracteres conteniendo una única palabra. Esencialmente que no contenga espacios en blanco NMTOKENS» Uno o varios NMTOKENs separados por espacios en blanco Enumeration» Posibles valores (son name token) <!ATTLIST fecha mes (Enero Febrero Marzo... Diciembre) #REQUIRED> IDREFS (varios IDs) 51 52 13

Estructura de un DTD Atributos 2.2 Valores por defecto #REQUIRED El atributo debe tener especificado un valor para cada ocurrencia del elemento #IMPLIED No es necesario suministrar un valor para el atributo y no se proporciona valor por defecto valor Valor por defecto. Cualquier valor permitido para el atributo. No es obligatorio indicar un valor #FIXED valor El atributo tiene un valor fijo. No es obligatorio indicar el atributo, pero si aparece debe tener ese valor» <!ATTLIST biografia xlink CDATA #FIXED http://www.23.ort/1999/xlink >» Único posible valor. Además su valor es éste aunque no exista Declaración de atributos Ejemplo: <!ATTLIST image source CDATA #REQUIRED width CDATA #REQUIRED height CDATA #REQUIRED alt CDATA #IMPLIED > 53 54 Estructura de un DTD Declaración de Tipo de Documento 3. DOCUMENT TYPE DECLARATION Identifica el elemento raíz de un documento y puede contener declaraciones adicionales (DOCTYPE) Todos los documentos XML deben contener un único elemento raíz que engloba al resto de elementos No confundir con Document Type Definition (DTD) Debe situarse siempre a continuación de la cabecera XML. El DTD puede incluirse en el propio documento XML o declararse como una referencia externa 55 Estructura de un DTD Declaración de Tipo de Documento Si se incluye con el propio documento: <?xml version= 1.0 standalone= yes > <!DOCTYPE elemento_raiz [ DTD ]> Si se incluye como referencia externa: <?xml version= 1.0 standalone= no > <!DOCTYPE elemento_raiz SYSTEM URL del DTD > o <!DOCTYPE elemento_raiz SYSTEM PUBLIC nombre DTD URL del DTD > 56 14

Ejemplo de DTD <?xml version= 1.0 standalone= yes > <!DOCTYPE biblioteca [ <!ELEMENT biblioteca (libro+)> <!ELEMENT libro (titulo, (autor editor)+,editorial,año)> <!ATTLIST libro isbn CDATA #REQUIRED> <!ELEMENT titulo (#PCDATA)> <!ELEMENT autor (nombre, apellido1, apellido2)> <!ELEMENT editor (nombre, apellido1, apellido2)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT apellido1 (#PCDATA)> <!ELEMENT apellido2 (#PCDATA)> <!ELEMENT editor (#PCDATA)> <!ELEMENT año (#PCDATA)> ]> 57 Ejemplo de DTD Por ejemplo:» <!DOCTYPE person SYSTEM http://ibiblio.org/xml/dtds/person.dtd >» El elemento raíz es person Después de la declaración XML, pero antes de el elemento raíz: <?xml version="1.0" standalone="no"?> <!DOCTYPE person SYSTEM "http://ibiblio.org/xml/dtds/person.dtd"> <person> <name> <first_name>alan</first_name> <last_name>turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> 58 DTDs Si está en el mismo directorio:» <!DOCTYPE person SYSTEM person.dtd > DTDs Se pueden mezclar (se utiliza un DTD interno): <!DOCTYPE person SYSTEM name.dtd [ <!ELEMENT profession (#PCDATA)> <!ELEMENT person (#PCDATA)> ]> SYSTEM: el archivo se encuentra en el sistema local de archivos o en una red PUBLIC: el archivo es un archivo de dominio público que se encuentra en lugar accesible ( sitios estándares ) Se están mezclando DTDs internos con externos» Deben ser compatibles Al usar un DTD externo, el atributo standalone debe valer no en la declaración XML 59 60 15

Entidades Hay 5 predefinidas:» < & > " &apos; En un DTD se pueden definir otras (útil en documentos válidos y otros que no se van a validar) <!ENTITY super unejemplo >» Y entonces se puede usar &super; Entidades El contenido puede incluir también etiquetas:» <!ENTITY footer <hr size= 1 />... >» El contenido debe estar bien formado: No se podría poner una etiqueta de inicio en una entidad y el la de finalización en otra» El contenido también puede incluir referencias de entidad, que se resuelven antes de que el texto se sustituya» Autoreferencias y referencias circulares prohibidas 61 62 Entidades Las entidades no pueden utilizar texto del mismo DTD. Por ejemplo, es ilegal:» <!ENTITY coordinate ((x, y) (y, x)) >» <!ELEMENT poligon (&coordinate;, &coordinate; &coordinate;+)» Las entidades parámetro servirán para esto Entidades Entidades de parámetro» Son analizadas sintácticamente» <!ENTITY % EntityName EntityDef>» <!ENTITY % dimen largo, ancho, alto? >» Puedes hacer referencia a la entidad dentro de la DTD %dimen; Ej: <!ELEMENT suelo (%dimen;)> <!ELEMENT pared (%dimen;)> 63 64 16

Entidades Entidades parámetro:» Se utilizan ya que muchos elementos comparten la misma lista de atributos y modelo de contenido» Se evitan errores y duplicaciones de información» Sólo se pueden usar en DTDs» Ejemplo: <!ENTITY % contenido_residencial direccion, habitaciones, baños > <!ENTITY % contenido_precios precio > <!ELEMENT apartamento (%contenido_residencial;, %contenido_precios;)> 65 Entidades Entidades externas analizadas ( external parsed general entity ):» <!ENTITY footer SYSTEM http://...xml >» No se permiten en valores de atributos» En la declaración XML de la entidad externa, se debe incluir obligatoriamente la declaración de codificación y opcionalmente la información de version: <?xml encoding="iso-8859-1"?> <hr size="1" noshade="true"/> <font CLASS="footer">... 66 Entidades Entidades externas no analizadas ( external unparsed entity ). Cualquier otro tipo de dato» Muchos autores no están de acuerdo en su inclusión dentro de la especificación de XML» <!ENTITY mi_foto SYSTEM http://...jpg NDATA jpeg>» NDATA indica que no son datos XML (normalmente código binario)» jpeg especifica el tipo del dato Entidades Entidades externas no analizadas» En otro sitio del DTD debe aparecer: <!NOTATION mi_foto SYSTEM image/jpeg > Se está identificando su MIME media type» No es posible hacer una llamada del estilo &mi_foto; Se utiliza en su lugar: <!ELEMENT image EMPTY> <!ATTLIST image source ENTITY #REQUIRED> <image source= mi_foto /> 67 68 17

DTDs En el mundo real, los DTDs pueden ser muy complejos»el de SVG (lenguaje para descripción de gráficos 2D) tiene más de 1000 líneas» El más sencillo de XHTML 1.0 tiene más de 1,500 líneas»el de DocBook (DTD creación documentación técnica) tiene más de 11.000 líneas» Lo que se hace es tenerlo en varios ficheros que utilizan referencias a entidades parámetro» Para hacer llamadas externas: <!ENTITY % names SYSTEM names.dtd > %names; DTDs Inclusión condicional:» Comentarios en un DTD (se ignora el código de una DTD): <![IGNORE[ <!ELEMENT production_note (#PCDATA)> ]]>» Algo permitido, es decir se incluye dentro del código de la DTD (igual que si no estuviera): <![INCLUDE[ <!ELEMENT production_note (#PCDATA)> ]]> 69 70 DTDs Inclusión condicional:» Se puede hacer equivalentemente con: <!ENTITY % notes_allowed INCLUDE > <![%notes_allowed;[ <!ELEMENT production_note (#PCDATA)> ]]>»Ej: Y entonces se puede hacer on y off para incluir o no incluir partes, cambiando el valor de notes_allowed <!ELEMENT % debug INCLUDE > <!ELEMENT % debug IGNORE > DTDs orientados a datos Suelen usar secuencias, y raramente contenido mixto <?xml version="1.0"?> <!DOCTYPE person [ <!ELEMENT person (name+, profession*)> <!ELEMENT name EMPTY> <!ATTLIST name first CDATA #REQUIRED last CDATA #REQUIRED> <!-- The first and last attributes are required to be present but they may be empty. For example, <name first="cher" last=""> --> <!ELEMENT profession EMPTY> <!ATTLIST profession value CDATA #REQUIRED> ]> <person> <name first="alan" last="turing"/> <profession value="computer scientist"/> <profession value="mathematician"/> <profession value="cryptographer"/> </person> 71 72 18

DTDs orientados a documentos DTDs orientados a documentos <!ATTLIST biography xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"> Más informales, suelen usar contenido mixto, tienden a usar entidades parámetro para agrupar modelo del contenido y listas de atributos Ejemplo: <!ELEMENT person (first_name, last_name)> <!-- Birth and death dates are given in the form yyyy/mm/dd --> <!ATTLIST person born CDATA #IMPLIED died CDATA #IMPLIED> <!ELEMENT date (month, day, year)> <!ELEMENT month (#PCDATA)> <!ELEMENT day (#PCDATA)> <!ELEMENT year (#PCDATA)> <!-- xlink:href must contain a URI. xlink:type must have the value simple if it's present at all. --> <!ATTLIST emphasize xlink:type NMTOKEN #IMPLIED xlink:href CDATA #IMPLIED> <!ELEMENT profession (#PCDATA)> <!ELEMENT footnote (#PCDATA)> <!-- The source is given according to the Chicago Manual of Style citation conventions --> <!ATTLIST footnote source CDATA #REQUIRED> 73 <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> 74 DTDs orientados a documentos DTDs orientados a documentos <biography xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"> <!ELEMENT image EMPTY> <!ATTLIST image source CDATA #REQUIRED width NMTOKEN #REQUIRED height NMTOKEN #REQUIRED ALT CDATA #IMPLIED > <!ENTITY % top_level "( #PCDATA image paragraph definition graph person profession emphasize last_name first_name footnote date )*"> <!ELEMENT paragraph %top_level; > <!ELEMENT definition %top_level; > <!ELEMENT emphasize %top_level; > <!ELEMENT biography %top_level; > <image source="http://www.turing.org.uk/turing/pi1/bus.jpg" width="152" height="345"/> <person born='1912/06/23' died='1954/06/07'><first_name>alan</first_name> <last_name>turing</last_name> </person> was one of the first people to truly deserve the name <emphasize>computer scientist</emphasize>. Although his contributions to the field were too numerous to list, his best-known are the eponymous <emphasize xlink:type="simple" xlink:href="http://cogsci.ucsd.edu/~asaygin/tt/ttest.html">turing Test</emphasize> and <emphasize xlink:type="simple" xlink:href="http://mathworld.wolfram.com/turingmachine.html">turing Machine</emphasize>. <last_name>turing</last_name> was also an accomplished <profession>mathematician</profession> and <profession>cryptographer</profession>. His assistance was crucial in helping the Allies decode the German Enigma machine.<footnote source="the Ultra Secret, F.W. Winterbotham, 1974">1</footnote> He committed suicide on <date><month>june</month> <day>7</day>, <year>1954</year></date> after being convicted of homosexuality and forced to take female hormone injections.<footnote source="alan Turing: the Enigma, Andrew Hodges, 1983">2</footnote> 75 </biography> 76 19

DTDs Localización de DTDs estándares:» Ejemplos: Esquemas XML Las restricciones permitidas en un DTD son limitadas http://www.xml.org/xml/registry.jsp W3C: http://www.w3.org/tr/ Mediante el uso de schemas se pueden usar:» Tipos de datos» Herencia Un DTD es un también un schema» Un DTD se convierte a un schema definiendo en etiquetas sus parámetros 77 78 Esquemas XML Comparación con DTD:» Se puede definir cualquier clase de restricción (más general que un DTD)» Los schemas son más difíciles de implementar y más costosos de aprender En un schema se definen:» Relaciones de estructura» Tipos de datos Esquemas XML El Lenguaje de definición de Esquemas XML es un lenguaje XML empleado para definir y restringir el contenido de documentos XML Inconvenientes de los DTD:» La notación empleada no es XML» No pueden indicarse tipos de datos ni formatos para los datos» No soportan espacios de nombres (namespaces) Esquemas XML = DTD + tipos de datos + espacios de nombres 79 80 20

Estructura de un Esquema 1. Cabecera Un esquema XML debe contener siempre la definición del elemento esquema. <?xml version= 1.0 encoding= UTF-8?> <xsd:schema xmlns:xsd= http://www.w3.org/2001/xmls chema > </xs:schema> Estructura de un Esquema 2. Elementos - Equivalentes a los elementos definidos para los DTD - Existen dos tipos de elementos:» Simples: Únicamente contienen valores <xsd:element name= nombre type= xs:string />» Compuestos: Formados por otros elementos o atributos <xsd:element name= NombreCompleto > <xsd:sequence> <xsd:element name= nombre type= xsd:string /> <xsd:element name= apellidos type= xsd:string /> <xsd:sequence> </xsd:element> 81 82 Estructura de un Esquema 3. Tipos de elementos 3.1 Los tipos simples predefinidos son:» string Cadena de caracteres (incluyendo espacios)» integer» decimal» float» boolean» time HH:MM:SS» date AAAA-MM-DD» ID Igual que para los DTD» NMTOKEN Igual que para los DTD» Estructura de un Esquema 3.2 Tipos derivados» Sobre los tipos predefinidos se definen distintos parámetros, denominados facetas, que ofrecen control sobre el formato del tipo. Ej: <xs:simpletype name= NombreMaximo > <xs:restriction base= xs:string > <xs:maxlength value= 30 /> </xs:restriction> </xs:simpletype>» Otra faceta, pattern, permite aplicar una expresión regular: <xs:pattern value= [0-9]{10} /> 83 84 21

Estructura de un Esquema Estructura de un Esquema Aparte de las facetas, se definen dos métodos de derivación:» Uniones: Tipos simples formados por la unión de varios tipos simples» Listas: Listas de elementos separados por espacios <xs:simpletype name= lista > <xs:list itemtype= xs:integer /> </xs:simpletype> <xs:simpletype name= dnitype > <xs:union> <xs:simpletype> <xs:restriction base= xsd:integer /> <xs:pattern value= [0-9]{8} /> </xs:restriction> </xs:simpletype> <xs:simpletype> <xs:restriction base= xsd:nmtoken /> <xs:pattern value= [A-Z]{1} /> </xs:restriction> </xs:simpletype> </xs:union> </xs:simpletype> 85 86 Estructura de un Esquema 4. Elementos compuestos Pueden definirse a través de tres operadores:» sequence: Secuencia ordenada de elementos <xs:element name= libro > <xs: sequence> <xs:element name= Titulo type= xs:string /> <xs:element name= Autor type= xs:string /> <xs:sequence> </xs:element> Estructura de un Esquema» choice: Indica una selección entre varios elementos (simples o compuestos) posibles <xs:element name= libro > <xs:sequence> <xs:element name= Titulo type= xs:string /> <xs:choice> <xs:element name= Autor type= xs:string /> <xs:element name= Editor type= xs:string /> </xs:choice> </xs:sequence> </xs:element> 87 88 22

Estructura de un Esquema» all: Conjunto de elementos sin orden específico Estructura de un Esquema Para evitar combinaciones ambigüas se definen restricciones para all: <xs:element name= libro > <xs:all> <xs:element name= Titulo type= xs:string /> <xs:element name= Autor type= xs:string /> <xs:element name= Editor type= xs:string /> </xs:all> </xs:element> Sólo pueden agrupar elementos o referencias No pueden tener cardinalidad mayor a 1 Sólo definirse como hijos únicos de un modelo 89 90 Estructura de un Esquema 5. Cardinalidad asociada a elementos Estructura de un Esquema 6.Espacios de nombres (Namespaces) Se definen los atributos minoccurs y maxoccurs para indicar las ocurrencias mínima y máxima permitidas para un elemento <xs:element name= autor minoccurs= 0 maxoccurs= unbounded /> Se definen para evitar conflictos entre los nombres empleados en las etiquetas Mecanismo sencillo consistente en la inclusión de un prefijo en las etiquetas del esquema. <xs:esquema xmlns:xs = http://www.w3.org/2001/xmlschema > 91 92 23

Estructura de un Esquema 6.Espacios de nombres (Namespaces) Objetivos:» Distinguir entre elementos y atributos de diferentes aplicaciones XML que comparten el mismo nombre» Agrupar elementos y atributos relacionados Un prefijo se puede construir con un nombre XML, excepto el : Estructura de un Esquema 6.Espacios de nombres (Namespaces) Cada prefijo debe estar asociado con una URI (concepto similar a URL)» Por ejemplo, todos los elementos XSLT 1.0 están asociados con http://www.w3.org/1999/xslt/transform que suele ser el prefijo xsl En el siguiente ejemplo aparecen problemas al usar la descripción de metadatos RDF (Resource Description Framework) 93 94 Espacios de nombres Espacios de nombres <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <catalog> <RDF> <Description about="http://ibiblio.org/examples/impressionists.xml"> <title> Impressionist Paintings </title> <creator> Elliotte Rusty Harold </creator> <description> A list of famous impressionist paintings organized by painter and date </description> <date>2000-08-22</date> </Description> </RDF> <painting> <title>the Swing</title> <artist>pierre-auguste Renoir</artist> <date>1876</date> <description> A young girl on a swing. Two men and a toddler watch. </description> </painting> <!-- Many more paintings... --> </catalog> <painting> <title>memory of the Garden at Etten</title> <artist>vincent Van Gogh</artist> <date>november, 1888</date> <description> Two women look to the left. A third works in her garden. </description> </painting> 95 96 24

Espacios de nombres Un prefijo se crea asignando un nombre a una URL, y se puede usar en un nodo o en sus hijos Por ejemplo: Espacios de nombres <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <catalog> <rdf:rdf xmlns:rdf="http://www.w3.org/tr/rec-rdf-syntax#"> <rdf:description xmlns:dc="http://purl.org/dc/" about="http://ibiblio.org/examples/impressionists.xml"> <dc:title> Impressionist Paintings </dc:title> <dc:creator> Elliotte Rusty Harold </dc:creator> <dc:description> A list of famous impressionist paintings organized by painter and date </dc:description> <dc:date>2000-08-22</dc:date> </rdf:description> </rdf:rdf> <painting> <title>memory of the Garden at Etten</title> <artist>vincent Van Gogh</artist> <date>november, 1888</date>... 97 98 Espacios de nombres Se asigna un espacio de nombres por defecto al hacer, por ejemplo: <svg xmlns= http://www.w3.org/2000/svg > <ellipse rx= 110 ry= 130 /> <svg> se supone que svg, ellipse... Pertenecen al mismo espacio de nombres http://... No ocurre lo mismo con los atributos (los espacios de nombres por defecto sólo se aplican a elementos) Otro ejemplo: Espacios de nombres <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink"> <head><title>three Namespaces</title></head> <body> <h1 align="center">an Ellipse and a Rectangle</h1> <svg xmlns="http://www.w3.org/2000/svg" width="12cm" height="10cm"> <ellipse rx="110" ry="130" /> <rect x="4cm" y="1cm" width="3cm" height="6cm" /> </svg> <p xlink:type="simple" xlink:href="ellipses.html"> More about ellipses </p> <p xlink:type="simple" xlink:href="rectangles.html"> More about rectangles </p> <hr/> <p>last Modified May 13, 2000</p> </body> </html> 99 100 25

Espacios de nombres DTDs y espacios de nombres son independientes Los DTDs deben contener cosas como:» <!ELEMENT dc:title (#PCDATA)> Si decidimos cambiar el prefijo, deberíamos hacerlo en el documento XML y en el DTD» Pero se pueden utilizar entidades parámetro para hacerlo más sencillo: <!ENTITY % dc-prefix dc > <!ENTITY % dc-colon : > <!ENTITY % dc-title %dc-prefix;%dc-colon;title > <!ENTITY % dc-creator %dc-prefix;%dc-colon;creator > y bastaría con: Estructura de un Esquema 6.Espacios de nombres (Namespaces) Existen tres atributos que permiten distinguir entre elementos y atributos definidos en esquemas locales y globales:» targetnamespace: Permite definir el espacio de nombres descrito en el esquema» elementformdefault: Indica si los elementos deben estar calificados, es decir, si deben llevar prefijo» attributeformdefault: Indica si los atributos deben llevar prefijo Todos los atributos y elementos globales deben ir acompañados del prefijo correspondiente <!ENTITY % dc-prefix new-prefix > 101 102 Estructura de un Esquema Ejemplo: Estructura de un Esquema Ejemplo de esquema <xsd:schema targetnamespace= http://ejemplo/ns /tick xmlns:xsd="http://www.w3.org/2001/ XMLSchema xmlns:ej=" http://ejemplo/ns/ej/" elementformdefault="qualified attributeformdefault="qualified"> <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:element name="bibilioteca" type="bibtype"> <xs:annotation> <xs:documentation> Esquema XML para repositorio de libros de una biblioteca </xs:documentation> </xs:annotation> </xs:element> 103 104 26

Estructura de un Esquema Estructura de un Esquema <!-- Definicion del tipo libro --> <xs:complextype name="librotype"> <!-- Definicion del tipo biblioteca --> <xs:complextype name="bibtype"> <xs:sequence> <xs:element name="libro" type="librotype" minoccurs="0 maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> <xs:sequence> <xs:element name="titulo type="xs:string"> </xs:element> <xs:choice minoccurs="1 maxoccurs="unbounded"> <xs:element name="editor" type="nombretype"/> <xs:element name="autor" type="nombretype"/> </xs:choice> <xs:element name="editorial" type="xs:string"/> <xs:element name="anyo" type="xs:integer"/> </xs:sequence> <xs:attribute name="isbn" type="xs:string"/> </xs:complextype> 105 106 Estructura de un Esquema Estructura de un Esquema Fichero XML adecuado al esquema <!-- Definicion del tipo nombre --> <xs:complextype name="nombretype"> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellido1" type="xs:string"/> <xs:element name="apellido2" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:schema> <?xml version="1.0" encoding="utf-8"?> <bibilioteca xmlns:xsi="http://www.w3.org/2001/xmlsche ma-instance" xsi:nonamespaceschemalocation="d:\xmljava \Skandia\ejemplo.xsd"> 107 108 27

Estructura de un Esquema <libro isbn="1-3445-4555-h"> <titulo>titulo 1</titulo> <editor> <nombre>nombre Editor 1</nombre> <Apellido1>Apellido Editor 1</Apellido1> <Apellido2>Apellido Editor 1</Apellido2> </editor> <editorial>editorial 1</editorial> <anyo>2002</anyo> Estructura de un Esquema <libro isbn="2-5342-7865-h"> <titulo>titulo 2</titulo> <autor> <nombre>nombre Autor 1</nombre> <Apellido1>Apellido Autor 1</Apellido1> <Apellido2>Apellido Autor 1</Apellido2> </autor> <editor> <nombre>nombre Editor 2</nombre> <Apellido1>Apellido Editor 2</Apellido1> <Apellido2>Apellido Editor 2</Apellido2> </editor> <editorial>editorial 2</editorial> <anyo>2001</anyo> </libro> </bibilioteca> </libro> 109 110 Ejemplo 2 Ejemplo 2 <?xml version="1.0"?> <purchaseorder orderdate="1999-10-20"> <shipto country="us"> <name>alice Smith</name> <street>123 Maple Street</street> <city>mill Valley</city> <state>ca</state> <zip>90952</zip> </shipto> <billto country="us"> <name>robert Smith</name> <street>8 Oak Avenue</street> <city>old Town</city> <state>pa</state> <zip>95819</zip> </billto> <comment>hurry, my lawn is going wild!</comment> <items> <item partnum="872-aa"> <productname>lawnmower</productname> <quantity>1</quantity> <USPrice>148.95</USPrice> <comment>confirm this is electric</comment> </item>... 111... <item partnum="926-aa"> <productname>baby Monitor</productName> <quantity>1</quantity> <USPrice>39.98</USPrice> <shipdate>1999-05-21</shipdate> </item> </items> </purchaseorder> Ejercicio, definir el esquema adecuado para el anterior documento XML 112 28

Ejemplo 2 Ejemplo 2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:annotation> <xsd:documentation xml:lang="en"> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </xsd:documentation> </xsd:annotation> <xsd:element name="purchaseorder" type="purchaseordertype"/> <xsd:element name="comment" type="xsd:string"/> <xsd:complextype name="purchaseordertype"> <xsd:sequence> <xsd:element name="shipto" type="usaddress"/> <xsd:element name="billto" type="usaddress"/> <xsd:element ref="comment" minoccurs="0"/> <xsd:element name="items" type="items"/> </xsd:sequence> <xsd:attribute name="orderdate" type="xsd:date"/> </xsd:complextype>... 113... <xsd:complextype name="usaddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="country" type="xsd:nmtoken" fixed="us"/> </xsd:complextype>... 114 Ejemplo 2 Ejemplo 2... <xsd:complextype name="items"> <xsd:sequence> <xsd:element name="item" minoccurs="0" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="productname" type="xsd:string"/> <xsd:element name="quantity"> <xsd:simpletype> <xsd:restriction base="xsd:positiveinteger"> <xsd:maxexclusive value="100"/> </xsd:restriction> </xsd:simpletype> </xsd:element> <xsd:element name="usprice" type="xsd:decimal"/> <xsd:element ref="comment" minoccurs="0"/> <xsd:element name="shipdate" type="xsd:date" minoccurs="0"/> </xsd:sequence> <xsd:attribute name="partnum" type="sku" use="required"/> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> 115...... <!-- Stock Keeping Unit, a code for identifying products --> <xsd:simpletype name="sku"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[a-z]{2}"/> </xsd:restriction> </xsd:simpletype> </xsd:schema> 116 29

XML en documentos XML:» Documentos ( orientados a narraciones )» Datos» Inicialmente pensado para documentos. Extensión para representación de datos.» Los documentos XML no sólo se usan en la Web. Se puede utilizar como material para publicar libros, revistas,... Aplicando diferentes hojas de estilo ( style sheets ) al mismo documento fuente, se pueden conseguir páginas Web, notas del orador, un documento listo para imprimir, etc. Documentos suelen ser:» Hay un elemento raíz.» Si el documento es largo, se divide en secciones: tabla de contenidos, índice,... 117 XML en documentos» El elemento raíz suele contener metainformación sobre el documento (título, autor, fechas...) Se suele colocar la meta-información en un hijo del elemento raíz, y el contenido en otro.» Así suele ser en HTML (html, head, body).» Secciones en subsecciones, y éstas a su vez en otras,... El cuántos niveles de subsecciones? depende de lo largo del documento.» Cada sección y subsección suele tener un título. Puede tener también elementos o atributos sobre su metainformación. Se suele verificar que al eliminar las etiquetas utilizadas, se obtiene prácticamente una copia del documento inicial 118 XML en documentos TEI (Text Encoding Initiative):» http://www.tei-c.org/» Literatura» Orientado a análisis escolar de textos» TEI es una aplicación SGML, aunque se está creando la versión XML. DocBook» http://www.oasis-open.org/docbook/» Una aplicación SGML para nuevos, no viejos, documentos» Uso para documentación digitalizada.» La última versión, 4.1.2, disponible en SGML y en XML» Es un formato de autor, pero no un formato para presentación final. Al final se deberá convertir a: HTML, XSL Formatting Objects, Rich Text Format (RTF), TeX 119 XML en documentos Persistencia de documentos» Algunos documentos son transitorios (se envían entre programas,...)» Otras aplicaciones sí utilizan datos digitalizados más persistentes. Por ejemplo las hojas de cálculo Gnumeric utilizan formato XML. En estos casos, por ejemplo, no es normal tener intercambios de datos con otras aplicaciones distintas» Documentos para humanos son más persistentes y menos dependientes del software 120 30

XML en documentos Presentaciones:» Basadas en transformaciones: Lenguaje XSLT Otro lenguaje de transformación: Document Style Sheet and Semantics Language (DSSSL) APIs de lenguajes como Java o C++ para transformar documentos: SAX, DOM, JDOM» Uso de hojas de estilo descriptivas para formatear un elemento: Cascading Stylesheets (CSS) CSS adecuado en documentos narrativos 121 XML en la Web XML en la Web:» XHTML, adaptación de HTML 4.0» Mostrar un documento directamente en un navegador (normalmente, mediante un CSS o un XSLT). Requiere un navegador que admita XML.» Otra opción es mezclar vocabularios XML, como MathML, con XHTML. XHTML: Por ejemplo, incluido en la versión XHTML 1.1» Recomendación W3C» Programas para pasar de HTML a XHTML: http://www.w3.org/people/raggett/tidy/ Programa en C 122 Ejemplo (HTML) <HTML><HEAD> <TITLE>O'Reilly Shipping Information</TITLE> </HEAD> <BODY BGCOLOR="#ffffff" VLINK="#0000CC" LINK="#990000" TEXT="#000000"> <table border=0 width=515> <tr> <td> <IMG SRC="/www/graphics_new/generic_ora_header_wide.gif" BORDER=0> <H2>U.S. Shipping Information </H2> <HR size="1" align=left noshade> <DL> <DT> <B>UPS Ground Service (Continental US only -- 5-7 business days):</b></dt> <DD>... 123 Ejemplo (XHTML) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="generator" content="html Tidy, see www.w3.org" /> <style type="text/css"> body {backgroundcolor: #FFFFFF; color: #000000} a:visited {color: #0000CC} a:link {color: #990000} </style> <title>o'reilly Shipping Information</title> </head> <body> <table border="0" width="515"> <tr> <td><img src="/www/graphics_new/generic_ora_header_wide.gif" style="border-width: 0" alt="o'reilly"/> <h2>u.s. Shipping Information</h2> <hr style="height: 1; text-align: left"/> <dl> <dt><b>ups Ground Service (Continental US only -- 5-7 business days):</b></dt> <dd>... 124 31

XML en la Web Tres tipos de XHTML (diferentes DTDs):» Strict (no se permiten algunos elementos como applet )» Transitional (version no estricta que permite por ejemplo el uso de applet )» Frameset (permite frameset o iframe ) Los navegadores Web trabajan con XHTML inconsistentemente.» IE 5.5, Netscape 6.0 y Mozilla 5.0 muestran XHTML válido sin dificultad, pero el problema está en versiones más antiguas de navegadores XML en la Web Tres lenguajes de hojas de estilo ( stylesheet ):» CSS nivel 1 (CSS1)» CSS nivel 2 (CSS2)» Transformaciones XSL 1.0 La hoja de estilo asociada a un documento se indica en la IP en el prólogo del documento (después de la declaración XML pero antes de la etiqueta raíz). <?xml version="1.0"?> <?xml-stylesheet href="person.css" type="text/css"?> <person> Alan Turing </person> 125 126 XML en la Web IE 5.0 sí entiende XML, aunque el parser no funciona bien y puede incluso rechazar algo de XML 1.0» Puede mostrar ficheros XML directamente, con o sin fichero stylesheet asociado. Si no se da un stylesheet, IE5 utiliza un predefinido XSLT que muestra la estructura de árbol permitiendo expandir o colapsar.» Soporta partes de CSS1 y algo de CSS2, pero hay inconsistencias. IE5.5 mejora lo de los CSS, pero aún hay inconsistencias. IE5 y IE5.5 soportan su propia versión de XSLT, basada en una primera versión de la especificación XSLT. No soportan XSLT 1.0 127 XML en la Web Netscape 4.x no da soporte para mostrar XML en el navegador Mozilla y Netscape (6+) sí soportan XSLT y ficheros XML IE6.0:» Soporta XSLT 1.0» Procesador MSXML 3.0 128 32

XML en la Web Enfoques alternativos:» Se siguen utilizando algunos navegadores antiguos (Mosaic 1.0,...)» Una opción es que un servidor recibe una petición para un documento XML, lo convierte a HTML y lo envía al navegador. La manera preferida es mediante una hoja de estilo XSLT y un servlet Java XHTML 1.1 (modular):» Se pueden utilizar y omitir partes XHTML en los DTDs» Ejemplo: XML en la Web <!ELEMENT catalog (catalog_entry*)> <!ELEMENT catalog_entry (name, price, item_number, color, size, description)> <!ELEMENT name (#PCDATA)> <!ELEMENT size (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT item_number (#PCDATA)> <!ELEMENT color (#PCDATA)> <!-- throw away the modules we don't need --> <!ENTITY % xhtml-hypertext.module "IGNORE" > <!ENTITY % xhtml-ruby.module "IGNORE" > <!ENTITY % xhtml-edit.module "IGNORE" > <!ENTITY % xhtml-pres.module "IGNORE" > <!ENTITY % xhtml-applet.module "IGNORE" > <!ENTITY % xhtml-param.module "IGNORE" > <!ENTITY % xhtml-bidi.module "IGNORE" > <!ENTITY % xhtml-form.module "IGNORE" > <!ENTITY % xhtml-table.module "IGNORE" > <!ENTITY % xhtml-image.module "IGNORE" > <!ENTITY % xhtml-csismap.module "IGNORE" > <!ENTITY % xhtml-ssismap.module "IGNORE" > 129 130 XML en la Web XML en la Web <!ENTITY % xhtml-meta.module "IGNORE" > <!ENTITY % xhtml-script.module "IGNORE" > <!ENTITY % xhtml-style.module "IGNORE" > <!ENTITY % xhtml-link.module "IGNORE" > <!ENTITY % xhtml-base.module "IGNORE" > <!ENTITY % xhtml-target.module "IGNORE" > <!-- import the XHTML DTD, at least those parts we aren't ignoring. You will probably need to change the system ID to point to whatever directory you've stored the DTD in. --> <!ENTITY % xhtml11.mod PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml-modularization/dtd/xhtml11.dtd"> %xhtml11.mod; <!ELEMENT description (%Block.mix;)+)> En XHTML se pueden añadir nuevos elementos que HTML no soporta Ideas para métodos de búsqueda en la Web mejorados:» En la actualidad, en la Web hay pocas páginas XML.» Mientras tanto, es posible añadir información XML adicional mediante el uso de, por ejemplo: Resource Description Framework (RDF) DublinCore IP para robots 131 132 33