Title: Portabilidad de los datos XML
1Portabilidad de los datos(XML)
- Fernando Álvarez García
- Universidad de Oviedo
- falvarez_at_correo.uniovi.es
2Portabilidad de los datos Índice
I Introducción II Conceptos básicos de
XML III La especificación XML IV XSL V Java y
XML
3Introducción Intercambio de información en el WWW
(I)
- HTML es el formato habitual de la información que
circula en el web - La utilización de un formato como HTML introduce
varios problemas - Existe una gran cantidad de páginas web con
código HTML erróneo - lthtmlgtltheadgt
- lttitlegtLista de Asignaturaslt/titlegt
- lt/headgt
- ltbodygtlth1gtLista de Asignaturaslt/bodygt
- Afortunadamente? , los navegadores están
preparados para tratar páginas web mal escritas - Nota en http//validator.w3.org/ hay un
validador de documentos HTML pruébalo y te
sorprenderás
4Introducción Intercambio de información en el WWW
(II)
- HTML mezcla la información propiamente dicha con
su aspecto (presentación) a los ojos del usuario - Problema 1 búsqueda de documentos (páginas) que
contengan determinada información - Ejemplo buscar Miguel Cervantes
- Resultados páginas con la lista de libros
escritos por Miguel Cervantes, páginas con
información acerca de su vida, páginas de libros
favoritos de ciertas personas - Conclusión 1 no es posible indicar el
significado que se quiere dar a cada una de las
palabras claves que forman el criterio de búsqueda
5Introducción Intercambio de información en el WWW
(III)
- Problema 2 análisis automatizado de la
información - Ejemplo se obtiene la lista de libros escritos
por Miguel de Cervantes se quiere ordenar por
año de publicación - Resultado no es posible, dado que el servidor
envía texto con formato y no es posible
identificar el significado de cada una de las
piezas de información del mismo - ltTABLEgtltTRgtltTDgtDon Quijotelt/TDgtltTDgt1999lt/TDgtlt/TRgt
- ltTRgtltTDgtNovelas Ejemplareslt/TDgtltTDgt2001lt/TD
gtlt/TRgt - ltTRgtltTDgtEntremeseslt/TDgtltTDgt1983lt/TDgtlt/TRgt
- ltTRgtltTDgtObras completaslt/TDgtltTDgt1990lt/TDgtlt/
TRgt - lt/TABLEgt
- Posible algoritmo ordenación tomar el valor
numérico de la 2ª columna de cada fila para
ordenar y si el autor de la página cambia el
orden de las columnas? - Conclusión 2 no es posible conocer el
significado de la información contenida en una
página HTML
6Introducción Intercambio de información en el WWW
(IV)
- Comercio electrónico
- Ejemplo típico de intercambio de información
- (B2C) Un cliente quiere conocer la lista de
impresoras que ofrezcan cierta velocidad mínima
de impresión - Problema no existe una forma estándar para que
el cliente exprese las características de lo que
desea buscar y obtenga los resultados en un
formato estructurado - Problema la información buscada está diseminada
a lo largo de párrafos de texto de las páginas
web de los diferentes fabricantes - Conclusión no es posible automatizar el proceso
de búsqueda de dicha información
7Introducción Intercambio de información en el WWW
(V)
- Comercio electrónico (continuación)
- (B2B) Dos empresas que quieran comerciar
electrónicamente tienen que acordar un formato
para los mensajes - Se produce un coste asociado al desarrollo de
software necesario para implementar dicho acuerdo - Escribir programas que soportan ese formato de
mensajes - Problema Qué hacer si se mantienen relaciones
comerciales con varias empresas? - Problema si llega una empresa nueva, con mejores
precios y mayor calidad, nuestra empresa no podrá
sacar provecho de esta nueva situación hasta que
no acuerde un formato de intercambio de datos con
ella
8Introducción Intercambio de información en el WWW
(VI)
- Acceso a bases de datos
- Las empresas han acumulado gran cantidad de
información en sus bases de datos a lo largo de
los años - En muchos casos, la información que necesita una
persona para realizar un trabajo reside en muchas
y diferentes bases de datos - Es necesaria una tecnología que permita
sintetizar datos que residen en múltiples bases
de datos y ofrecer el resultado en función de las
necesidades del usuario - Dicho usuario puede ser un empleado de la propia
empresa o una empresa externa - Conclusión es necesario poder abstraer
información de múltiples bases de datos
9Introducción Intercambio de información en el WWW
(VII)
- SOLUCIÓN
- Definición de un estándar de intercambio de
información - Debe cumplir 2 requisitos
- Tiene que posibilitar la especificación del
significado de cada porción de información - Debe posibilitar que dos o más interesados
acuerden la utilización de una organización
concreta de la información - Porque hay una variedad infinita de tipos de
información que puede ser intercambiada
10Introducción Intercambio de información en el WWW
(VIII)
- El primer requisito se puede cumplir añadiendo
metadatos (metainformación) a los datos
(información) propiamente dichos - Ejemplo autor es un metadato sobre Cervantes
- Ejemplo el esquema de una base de datos contiene
metadatos sobre los datos contenidos en la misma
(datos en columnas, del mismo tipo, etc.) - Problema los metadatos, por sí mismos, no
permiten especificar la organización de la
información (2º req.) - Ejemplo el metadato precio no permite saber si
son dólares, pesetas, euros, etc. - En cambio, sí solucionan, por ejemplo, el
problema de la búsqueda por autor
11Introducción Intercambio de información en el WWW
(IX)
- El segundo requisito se puede cumplir con la
utilización de un contexto compartido - Un contexto compartido es una descripción formal
de las reglas que tienen que seguir los metadatos - Se aplica a un tipo particular de documento y
sirve como un contrato entre el receptor y el
emisor del mismo - Ejemplo en B2B, dos empresas pueden acordar un
tipo de documento orden. El contexto compartido
aplicado podría consistir en - Una orden puede contener 1 o más líneas de
elemento - Cada línea de elemento tiene una referencia,
precio unitario, cantidad, etc.
12Portabilidad de los datos Índice
- I Introducción
- II Conceptos básicos de XML
- III La especificación XML
- IV XSL
- V Java y XML
13Conceptos básicos de XML Introducción (I)
- Los conceptos metadatos y contexto compartido son
muy generales - Es necesaria una implementación
- XML (eXtensible Markup Language) es una de las
implementaciones más utilizadas - Es un subconjunto de SGML (Standard Generalized
Markup Language), lenguaje estandarizado por la
ISO (International Organization for
Standardization) en 1986 - SGML tiene sus orígenes en IBM, que quería un
medio para describir el contenido de documentos
de tal manera que se pudiera publicar el mismo
contenido en diferentes formas - La aproximación seguida en SGML consiste en la
utilización de metadatos y contexto compartido
14Conceptos básicos de XML Introducción (II)
- XML es, desde Febrero de 1998, un estándar del
W3C (WWW Consortium, http//www.w3.org) - Está en su versión 1.0
- Es lo suficientemente simple para ser entendido
en su totalidad y lo suficientemente expresivo
para cubrir la necesidad de contextos compartidos
en Internet
15Conceptos básicos de XML Metadatos y contexto
compartido en XML
- Los metadatos son introducidos en los documentos
con la utilización de etiquetas o marcas (tag) - Su sintaxis es muy parecida a la usada en HTML
- Ejemplo para indicar que Miguel de Cervantes es
el autor de un trabajo, se puede escribir - ltautorgtMiguel de Cervanteslt/autorgt
- Los diseñadores de los documentos añaden el
contexto compartido a través de definiciones de
tipos de documentos (DTD, Document Type
Definitions) - Un DTD es un conjunto de declaraciones que
especifican el orden, estructura y atributos
permitidos para las marcas en un tipo particular
de documento
16Conceptos básicos de XML Necesidad de software de
soporte para XML (I)
- Con el fin de sacar el máximo provecho a XML
(metadatos contexto compartido) se necesita una
abundante cantidad de tipos de software que le
den soporte - Se trata, en definitiva, que las aplicaciones
puedan producir y procesar documentos XML - Requisitos de dicho software
- Componentes software básicos
- Proporcionan capacidades básicas para el análisis
y la generación de documentos XML - Necesarios para diferentes (el máximo posible)
lenguajes de programación
17Conceptos básicos de XML Necesidad de software de
soporte para XML (II)
- Herramientas de desarrollo de software
- Permiten dotar a las aplicaciones de capacidades
XML de manera sencilla - Posibilitan la inclusión de componentes software
básicos (ver punto anterior) así como utilidades
para manipular documentos XML - Herramientas de desarrollo de documentos
- Son necesarias herramientas que permitan la
definición de DTDs y la escritura de documentos
XML - Necesitarían herramientas gráficas para la
creación de DTDs y navegadores jerárquicos para
la manipulación directa de los documentos XML
18Conceptos básicos de XML Necesidad de software de
soporte para XML (III)
- Infraestructura web
- XML es, fundamentalmente, una tecnología para el
web - Por lo tanto, servidores y navegadores deben
(deberían) soportarlo - Si los desarrolladores están seguros de que
prácticamente todos los navegadores estándar (más
populares) pueden visualizar documentos XML, se
animarán a utilizarlo - Componentes traductores
- Las aplicaciones software ya tienen sus propios
formatos para los datos - Para integrar dichas aplicaciones con otras a
través de XML son necesarios componentes que
traduzcan sus formatos de datos a XML
19Conceptos básicos de XML Necesidad de software de
soporte para XML (IV)
- Enlaces a páginas web con software/recursos XML
- http//www.garshol.priv.no/download/xmltools/cat_i
x.html - http//www.xml.com/resourceguide/
- http//www.xmlsoftware.com/
20Conceptos básicos de XML Documentos XML(I)
- Un documento XML es una unidad de información
que puede ser vista de dos maneras como una
secuencia lineal de caracteres que contiene los
datos y el marcado o como una estructura de datos
abstracta que toma la forma de un árbol de nodos - Como secuencia de caracteres, facilita la lectura
al ser humano - Como estructura jerárquica, facilita su
procesamiento por programas de ordenador - Los caracteres a utilizar habrán de pertenecer al
conjunto de caracteres Unicode - XML es sensible a la utilización de mayúsculas y
minúsculas
21Conceptos básicos de XML Documentos XML (II)
- Hay una serie de caracteres especiales
reservados lt, gt, , , . En su lugar hay que
utilizar las entidades lt, gt, amp,
quot y apos, respectivamente - Los espacios en blanco (espacios, tabuladores,
retornos de carro y saltos de línea) son
ignorados dentro del marcado, pero su utilización
sirve en muchos casos para hacer que el documento
XML sea legible
22Conceptos básicos de XML Ejemplo de documento XML
(I)
- Documento XML para un plan de estudios
- lt?xml version"1.0" encoding"UTF-8"?gt
- lt!DOCTYPE planestudios SYSTEM "FormatoPlanEstudios
.dtd"gt - ltplanestudiosgt
- ltasignatura codigo"1"gt
- ltnombregtFundamentos de Computadoreslt/nombregt
- ltcreditosgtltteoricosgt4.5lt/teoricosgt
- ltpracticosgt4.5lt/practicosgt
- lt/creditosgt
- lttipogtlttroncal curso"1"/gtlt/tipogt
- ltareasconocimientogt
- ltareagtltnombreareagtATClt/nombreareagt
- ltestaasignada/gt
- lt/areagt
- ...
- lt/planestudiosgt
23Conceptos básicos de XML Ejemplo de documento XML
(II)
- Vista jerárquica del documento XML
24Conceptos básicos de XML Marcado y datos
- El marcado es aquella parte del documento que
debe ser entendida por el procesador XML - Empieza siempre con el carácter lt o con el
- Ejemplo ltasignaturagt
- Ejemplo amp
- Las partes que se encuentran entre las marcas son
las que deben resultar legibles para el ser
humano y constituyen los datos de carácter - Ejemplo Fundamentos de Computadores
- Ejemplo 4.5
- También pueden ser legibles otras cosas
- Por ejemplo, los valores de los atributos
25Conceptos básicos de XML Documentos XML bien
formados
- El marcado de un documento XML debe cumplir una
serie de requisitos sencillos - De esta forma, un analizador XML podría
construir el árbol (vista jerárquica) sin
ambigüedad únicamente a partir del marcado - Una secuencia de caracteres que cumple los
requisitos mencionados se dice documento XML
bien formado - Basta con que no se cumpla uno de los requisitos
para poder decir que no tenemos un documento XML - Los analizadores XML tampoco corrigen los errores
(recuérdese que los navegadores sí hacen algo de
esto) - Ejemplos de documentos NO XML
- ltagtltbgtlt/agtlt/bgt (marcado se cruza)
- ltagtltbgtlt/agt (ausencia de final de marca)
26Conceptos básicos de XML Documentos XML válidos
- Adicionalmente, un documento XML puede tener
asociado un DTD - Si cumple las restricciones de su DTD, será,
además, un documento válido - Obviamente, deberá ser también un documento bien
formado - Una pequeña variación en la jerarquía del
documento XML podría hacer que pasase a ser
inválido - Aunque podría seguir siendo bien formado
27Conceptos básicos de XML Ejemplo de DTD
- DTD para documentos XML de planes de estudios
- lt!ELEMENT planestudios (asignatura)gt
- lt!ELEMENT asignatura (nombre,creditos,tipo,areasco
nocimiento)gt - lt!ATTLIST asignatura codigo CDATA REQUIREDgt
- lt!ELEMENT nombre (PCDATA)gt
- lt!ELEMENT curso (PCDATA)gt
- lt!ELEMENT tipo (troncal obligatoria
optativa)gt - lt!ELEMENT creditos (teoricos, practicos)gt
- lt!ELEMENT practicos (PCDATA)gt
- lt!ELEMENT teoricos (PCDATA)gt
- lt!ELEMENT areasconocimiento (area)gt
- lt!ELEMENT area (nombrearea, estaasignada?)gt
- lt!ELEMENT nombrearea (PCDATA)gt
- lt!ELEMENT estaasignada EMPTYgt
- lt!ELEMENT troncal EMPTYgt
- lt!ATTLIST troncal curso CDATA REQUIREDgt
- lt!ELEMENT obligatoria EMPTYgt
- lt!ATTLIST obligatoria curso CDATA REQUIREDgt
- lt!ELEMENT optativa (seimparte?)gt
28Conceptos básicos de XML Usos principales de XML
- Creación de documentos para su publicación en el
Web o cualquier otro medio - Codificación de datos, incluyendo los extraídos
de bases de datos, para ser intercambiados - Configuración de programas de ordenador
- Desarrollo de vocabularios y DTDs específicos de
diversos dominios - En la página web
- http//www.oasis-open.org/cover/xml.htmlappli
cations se puede encontrar una amplia lista de
lenguajes XML
29Portabilidad de los datos Índice
I Introducción II Conceptos básicos de
XML III La especificación XML IV XSL V Java y
XML
30La especificación XML Sintaxis (I)
- En líneas generales, un documento XML se divide
en - Prólogo
- Contiene información acerca del documento y cómo
debe interpretarse éste - Juega un papel similar a, por ejemplo, las
cabeceras de los mensajes de correo electrónico
(remitente, destinatario, codificación, etc.) - Incluye dos cosas (ambas opcionales)
- Versión XML utilizada
- Tipo de documento (DTD) al que corresponde
- Ejemplo
- lt?xml version"1.0" encoding"UTF-8"?gt
- lt!DOCTYPE planestudios SYSTEM "FormatoPlanEstudios
.dtd"gt
31La especificación XML Sintaxis (II)
- (2ª parte de un documento XML)
- Instancia del documento
- Contiene los datos reales del documento como una
jerarquía de elementos - Si está definido un DTD en el prólogo, la
instancia del documento debe seguir las
restricciones en él marcadas - Ejemplo de instancia (ya visto)
- ltplanestudiosgt
- ltasignatura codigo"1"gt
- ltnombregtFundamentos de Computadoreslt/nombregt
- ltcreditosgtltteoricosgt4.5lt/teoricosgt
- ltpracticosgt4.5lt/practicosgt
- lt/creditosgt
- ...
32La especificación XML Elementos (I)
- Los elementos se dividen en 2 categorías
- La mayoría contienen caracteres, otros elementos
o ambas cosas - Hay también elementos sin contenido, denominados
vacíos - Los nombres de elementos no pueden comenzar con
la cadena xml, ya sea en mayúsculas, minúsculas
o combinación de ambas - Ejemplo de elemento con contenido
- ltnombregtFundamentos de Computadoreslt/nombregt
- Empieza con una etiqueta de inicio y termina con
una de fin - Lo que hay en el medio es el contenido del
elemento
33La especificación XML Elementos (II)
- Etiqueta de inicio
- Símbolo lt, seguido del nombre del elemento y
terminado con el símbolo gt - Puede, además, contener atributos
- Etiqueta de fin
- Cadena lt/, el mismo nombre de elemento que el
usado en la etiqueta de inicio y el símbolo gt - Los elementos sin contenido pueden utilizar una
sintaxis resumida - Símbolo lt, seguido del nombre del elemento y
terminado con la cadena /gt - Ejemplos de elementos vacíos
- ltestaasignadagtlt/estaasignadagt
- ltestaasignada/gt (método abreviado)
34La especificación XML Atributos
- Además de contenido, los elementos pueden
contener atributos - Son una forma de incorporar características o
propiedades a los elementos - Los atributos tienen nombre y valor asignado
- En un DTD, cada atributo viene especificado para
un tipo de elemento específico - Ejemplo
- ltasignatura codigo"1"gt...lt/asignaturagt
- Atributo codigo, con valor 1
- Los valores de atributos deben ir siempre
entrecomillados (comillas simples o dobles) - Los DTD restringen la ocurrencia y valores
permitidos de los atributos
35La especificación XML Prólogo
- Formado por una declaración XML y una declaración
de tipo de documento, ambas opcionales - En caso de existir ambas, la declaración XML debe
ir en primer lugar - Ejemplo de prólogo
- lt?xml version"1.0" encoding"UTF-8"?gt
- lt!DOCTYPE planestudios SYSTEM "FormatoPlanEstudios
.dtd"gt - Indica que el documento es conforme con la
versión 1.0, que utiliza el código UTF-8 (ASCII
de 7 bits) para codificar los caracteres y que
pertenece a un tipo de documento concreto
denominado planestudios, definido en
FormatoPlanEstudios.dtd - La declaración de tipo de documento puede
compartir el mismo fichero que la instancia del
documento
36La especificación XML Secciones CDATA
- Permiten especificar a los procesadores XML que
no interpreten una parte del texto que contiene
marcado - CDATA significa datos de carácter y su sintaxis
es - lt!CDATAcontenidogt
- Ejemplo
- lt!CDATA
- lthtmlgtltheadgt
- lttitlegtLista de Asignaturaslt/titlegt
- lt/headgt
- ltbodygtlth1gtLista de Asignaturaslt/h1gtlt/bodygt
- gt
- OJO con la posible aparición de la cadena gt
dentro de la sección delimitada
37La especificación XML Comentarios
- De manera similar a los comentarios de los
programas de ordenador, resulta muy práctico
poder incorporarlos en los documentos XML, de
manera que se ignoren durante el procesamiento de
los mismos - Pueden introducirse en cualquier lugar del
prólogo y la instancia del documento - No pueden insertarse en las declaraciones,
etiquetas y otros comentarios - Empiezan con la cadena lt!-- y terminan con --gt
- Ejemplo
- lt!-- Este documento contiene el plan de estudios
de Informatica --gt
38La especificación XML Definición del tipo de
documento
- Un DTD define los tipos de elementos, atributos y
entidades permitidas así como las formas posibles
en que se pueden combinar en los documentos XML
de dicho tipo que se quieran crear - En defnitiva, el DTD define una gramática que han
de seguir los documentos XML de dicho tipo de
documento - Obviamente, no es obligatorio que todo documento
XML tenga un DTD asociado - En este último caso, el documento XML puede
aspirar, únicamente, a estar bien formado
39La especificación XML Definición del tipo de
documento. Elementos (I)
- Todos los elementos de un documento XML válido
deben ajustarse a un tipo de elemento declarado
en su DTD - Las declaraciones de tipo de elemento empiezan
con la cadena lt!ELEMENT seguida del nombre del
elemento, seguida de una especificación de
contenido y finaliza con gt - Ejemplo
- lt!ELEMENT asignatura (nombre, creditos, tipo,
- areasconocimiento)gt
- En el ejemplo se especifica que el los elementos
de tipo asignatura deben contener un elemento
nombre, seguido de un elemento creditos, seguido
a su vez de un elemento tipo y terminado con un
elemento areasconocimiento
40La especificación XML Definición del tipo de
documento. Elementos (II)
- Especificaciones de contenido
- Sin contenido se usa la palabra clave EMPTY
- lt!ELEMENT estaasignada EMPTYgt
- Cualquier contenido permite que un tipo de
elemento contenga cualquier elemento o carácter - Poco usada, dado que el elemento en cuestión
queda sin estructura definida - Se usa la palabra clave ANY
- lt!ELEMENT cualquiera ANYgt
- Datos textuales el contenido se limita a simple
texto, no permitiéndose el anidamiento de otros
elementos - Se utiliza la cadena (PCDATA)
- lt!ELEMENT nombre (PCDATA)gt
41La especificación XML Definición del tipo de
documento. Elementos (III)
- Especificaciones de contenido (continuación)
- Modelo de contenido utilizada para declarar que
un tipo de elemento contiene a su vez elementos - Es un patrón que se establece para especificar
los subelementos aceptados y el orden en que se
aceptan - Ejemplo de secuencia de subelementos
- lt!ELEMENT asignatura (nombre, curso)gt
- Ejemplo de alternativa entre subelementos
- lt!ELEMENT campus (Oviedo Mieres Cristo)gt
- Ejemplo de indicadores de frecuencia
- lt!ELEMENT titulos (bachiller?, superiores)gt
- Ejemplo complejo
- lt!ELEMENT test (introducción,
- (pregunta,respuesta),
- instrucciones?)gt
42La especificación XML Definición del tipo de
documento. Atributos (I)
- Se declaran para determinados tipos de elementos
- Las declaraciones de atributos empiezan con la
cadena lt!ATTLIST seguida del nombre del elemento,
seguida del nombre del atributo, su tipo y su
defecto y finaliza con gt - Ejemplo
- lt!ATTLIST asignatura codigo CDATA REQUIREDgt
- Se permite declarar varios atributos en la misma
declaración de lista de atributos - lt!ATTLIST alumno email CDATA REQUIRED
- telefono CDATA REQUIRED
- fax CDATA REQUIREDgt
- Se desaconseja utilizar el mismo nombre de
atributo para varios de ellos asociados a
distintos elementos
43La especificación XML Definición del tipo de
documento. Atributos (II)
- Tipos de atributos
- Texto libre se identifican con la cadena CDATA
- lt!ATTLIST asignatura codigo CDATA REQUIREDgt
- Enumerados el atributo sólo puede tomar un valor
entre los especificados - lt!ATTLIST aula tipo (pequeñamedianagrande
REQUIREDgt - Valor por defecto
- IMPLIED el atributo es opcional
- REQUIRED el atributo es obligatorio
- FIXED el atributo no puede cambiar de valor
- lt!ATTLIST h1 titulo CDATA FIXED elem-titulogt
- lt!ATTLIST aula tipo (pequeñagrande) grandegt
44La especificación XML Definición del tipo de
documento. Atributos vs Elementos
- Los atributos no pueden contener subelementos
- Son texto sin estructura interna
- Los atributos sólo pueden especificarse una vez y
en cualquier orden - Los elementos suelen representar datos y su
contenido debe aparecer en todas las
representaciones visuales - Los atributos suelen contener información de
menor importancia y normalmente son información
sobre la información - Los atributos suelen representar propiedades de
objetos y los elementos las partes de los mismos - Por ejemplo, para un elemento persona, sus
subelementos representarán partes del cuerpo y
sus atributos, propiedades como altura, peso, etc.
45La especificación XML XML Schema (XSDL)
- Los schemas se presentan como la mejor forma de
especificar modelos de contenidos XML - Permiten una mayor expresividad que los DTDs
- Eliminan alguno de los inconvenientes de los DTDs
- Los DTDs no son documentos XML
- Un schema será, por tanto, un documento XML
- Cómo convertir los antiguos DTDs en schemas?
- Hay herramientas que (casi) automatizan el
proceso - Ver http//www.w3.org/2000/04/schema_hack/
- Después de la conversión hay que realizar algún
trabajo manual para sacar partido de la mayor
expresividad de los schemas - Por ejemplo, poner mínimos y máximos a la
ocurrencia de los elementos
46La especificación XML Ejemplo de XML Schema
lt?xml version"1.0" encoding"UTF-8"?gt ltxsschema
xmlnsxshttp//www3.w3.org/2001/XMLSchemagt
ltxselement nameplanestudiosgt
ltxscomplexTypegt ltxssequencegt ltxselement
nameasignatura minOccurs1
maxOccursunboundedgt ltxsattribute
namecodigo typexsstring
userequired/gt ltxscomplexTypegt ltxs
sequencegt ltxselement namenombre
typexsstring/gt ltxselement
namecreditosgt ltxscomplexTypegt ltxs
sequencegt ltxselement nameteoricos
typexsstringgt
ltxselement namepracticos
typexsstringgt ...
47La especificación XML Procesadores XML en línea
de comandos
- Procesador Xerces
- Forma parte del Apache XML Project
(http//xml.apache.org) - Aunque no está orientado a su utilización desde
línea de comandos, pueden utilizarse varios
ejemplos (que vienen con Xerces) escritos en Java
para ello - Es necesario tener instalado y configurado el JDK
de Java - Ejecución del procesador
- java sax.Writer fichero.xml
- Si el fichero XML está bien formado, lo mostrará
por pantalla - En otro caso, retornará el error encontrado
48La especificación XML Validadores XML en línea de
comandos
- Validador XML Validator
- De ElCel Technology (http//www.elcel.com/)
- Valida documentos XML contra su DTD
- El DTD se puede especificar en la declaración
DOCTYPE del documento XML, o bien, pasarse desde
línea de comandos - Ejecución del validador (supuesto que el programa
ejecutable está en el path - xmlvalid fichero.xml
- Si el fichero XML es válido, lo indicará por
pantalla - En otro caso, retornará la razón de la no validez
del documento
49La especificación XML Editores de documentos XML
- Entorno XML Spy
- De Altova (http//www.xmlspy.com/)
- Entorno integrado de desarrollo para tecnologías
XML - Potente editor XML
- Hojas de estilos edición y transformación
- Apariencia de procesador de textos
- Valida documentos
50La especificación XML Ejercicios (I)
- Procesar con Xerces el documento
escuelaPlanNuevo.xml - Eliminar alguna de las marcas estudiar el
resultado - Añadir alguna marca incorrectamente estudiar el
resultado - Añadir un segundo elemento nombre a cualquier
asignatura procesar con Xerces y con Validator - Añadir una nueva asignatura a escuelaPlanNuevo.xm
l que se va a impartir - Añadir un nuevo subelemento a asignatura que
contenga el número de alumnos matriculados
procesar con Xerces y con Validator
51La especificación XML Ejercicios (II)
- Añadir un atributo al elemento seimparte que
indique el cuatrimestre en que esto ocurre - Modificar el DTD para que cada asignatura pueda
llevar una lista de alumnos - Para cada alumno, queremos guardar su nombre,
apellidos, DNI, y convocatoria en la que se
encuentra - Todas las asignaturas tienen, al menos, un alumno
matriculado - Modificar el fichero XML introduciendo nuevos
alumnos para las asignaturas - Realizar de manera libre los ejercicios
anteriores con XML Spy
52Portabilidad de los datos Índice
I Introducción II Conceptos básicos de
XML III La especificación XML IV XSL V Java y
XML
53XSL Introducción (I)
- La presentación de documentos (información) es
una parte importante de un entorno web - Dado que la especificación del contenido
independientemente de su presentación es una
característica muy importante de XML, los autores
necesitan una manera de dar formato a sus
documentos para sus usuarios - XSL (eXtensible Stylesheet Language) incluye
tanto un lenguaje de transformación como un
lenguaje de formateado - Transformación de un documento XML en otro
documento XML - En particular, puede utilizar etiquetas definidas
por los objetos de formato, la segunda parte de
XSL
54XSL Introducción (II)
- La solución tiene que cumplir tres requisitos
- Aplicación de reglas de formato a los elementos
- Los autores pueden especificar reglas de formato
para cada tipo de elemento de cada documento - Dichas reglas incluyen formato de la fuente,
espaciado, formato de tablas, etc. - Utilizable con diferentes tecnologías de
visualización - La misma hoja de estilos permitirá representar el
mismo documento utilizando una amplia variedad de
lenguajes de descripción de formato de páginas,
como HTML, PDF, PS, RTF, etc. - La aplicación de una hoja de estilos a un
documento creará una descripción intermedia
denominada árbol de objetos de formato que se
convertirá finalmente al lenguaje deseado
55XSL Introducción (III)
- La solución tiene que cumplir tres requisitos
(cont.) - El consumidor del documento puede controlar la
aplicación de hojas de estilos - En HTML, el autor del documento controla como lo
va a ver el consumidor del mismo - En el modelo XSL, los consumidores puede elegir
la hoja de estilos a aplicar
56XSL Introducción (IV)
- Con XSL se definen plantillas de formato que han
de aplicarse a los elementos de los documentos
XML - Ejemplo de hoja de estilos XSL
- ltxsltemplate matchplanestudios"gt
- lthtmlgtltheadgtlttitlegtAsignaturaslt/titlegt
- lt/headgt
- ltbodygtlth1gtLista de Asignaturaslt/h1gt
- ltxslapply-templates/gt
- lt/bodygt
- lt/htmlgt
- lt/xsltemplategt
- Como se puede comprobar, una hoja de estilos XSL
es, a su vez, un documento XML
57XSL XSLT (I)
- Las partes de transformación y formato de XSL
pueden trabajar de manera independiente - Por ejemplo, el lenguaje de transformación puede
transformar documentos XML en un fichero HTML e
ignorar el proceso de formateado - En muchos casos existen diferentes DTDs que
describen el mismo tipo de documento en
diferentes empresas - El lenguaje de transformación permitirá
transformar documentos de un tipo a otro - XSLT (XSL Transformations) es un subconjunto de
XSL capaz de transformar un documento XML en un
formato a otro documento XML en otro formato - Se ayuda de XPath, un lenguaje que se utiliza
para referenciar elementos, atributos, datos de
carácter, etc. en un documento XML
58XSL XSLT (II)
- En una transformación XSL, un procesador XSL lee
un documento XML y una hoja de estilos XSL - Basándose en las instrucciones que el procesador
encuentra en la hoja de estilos, obtiene un nuevo
documento XML (incluido HTML) - En general, podría obtenerse texto arbitrario,
pero está diseñado principalmente para
transformaciones XML-a-XML - Hablando con más precisión, una transformación
XSL acepta como entrada un árbol que representa
un documento XML y produce como resultado un
nuevo árbol, que representa también un documento
XML - Por eso, la parte de transformación de XSL se
denomina también parte de construcción del árbol
59XSL XSLT (III)
- Un documento XSL contiene una lista de plantillas
y otras reglas - Una regla de plantilla contiene
- Un patrón (expresión XPath, con algunas
extensiones y restricciones) que especifica el
árbol al que se aplica - Una plantilla que se debe devolver como resultado
cuando se localiza el patrón en el documento XML - Funcionamiento un procesador XSL compara el
documento XML con el patrón de cada regla de
plantilla - Si encuentra un árbol que satisface el patrón,
devuelve la plantilla de la regla - Esta plantilla incluye, habitualmente, marcado,
datos nuevos y datos copiados del árbol del
documento XML original
60XSL XSLT (IV)
- XSL utiliza XML para describir las reglas,
plantillas y patrones - El documento XSL es un elemento xslstylesheet o
un xsltransform - Cada regla de plantilla es un elemento
xsltemplate - El patrón de la regla es el valor del atributo
match del elemento xsltemplate - La plantilla resultado es el contenido del
elemento xsltemplate - Todas las instrucciones de la plantilla para
hacer cosas (por ejemplo, seleccionar partes del
árbol de entrada) son realizadas por algún
elemento XSL - Se identifican con el prefijo xsl en el nombre
de elemento - Elementos sin ese prefijo formarán parte del
árbol resultado
61XSL XSLT (V)
- Ejemplo de hoja de estilos
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0
- xmlnsxsl"http//www.w3.org/1999/XSL/Transf
orm"gt -
- ltxsltemplate matchplanestudios"gt
- lthtmlgtltbodygtlth1gtLista de Asignaturaslt/h1gt
- ltxslapply-templates/gt
- lt/bodygt
- lt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"asignatura"gt
- lth2gtltxslvalue-of select"."/gtlt/h2gt
- lt/xsltemplategt
- lt/xslstylesheetgt
62XSL XSLT (VI)
- Documento XML al que aplicar la hoja de estilos
- lt?xml version"1.0"?gt
- lt?xml-stylesheet type"text/xsl"
hrefescuela.xsl"?gt - ltplanestudiosgt
- ltasignatura codigo"1"gt
- ltnombregtSistemas Operativoslt/nombregt
- ltcursogt2lt/cursogt
- lttipogtobligatorialt/tipogt
- ltseimparte/gt
- lt/asignaturagt
- ...
- lt/planestudiosgt
63XSL XSLT (VII)
- Qué ocurre al aplicar la hoja de estilos?
- El nodo raíz (del documento XML) se compara con
todas las reglas de plantilla de la hoja de
estilos no cumple ninguna - El primer hijo del nodo raíz del documento XML
(xml-stylesheet) se compara con todas las reglas
de plantilla no cumple ninguna - El segundo hijo del nodo raíz del documento XML
(planestudios) se compara con todas las reglas de
plantilla cumple la primera - Se devuelve, como resultado parcial,
lthtmlgtltbodygtlth1gtLista de Asignaturaslt/h1gt - El elemento xslapply-templates obliga al motor
de formato a procesar todos los nodos hijo de
planestudios - (continúa en página siguiente)
64XSL XSLT (VIII)
- Qué ocurre al aplicar la hoja de estilos?
(continuación) - ...
- El primer hijo del nodo planestudios del
documento XML (asignatura) se compara con todas
las reglas de plantilla cumple la segunda - Se devuelve, como resultado parcial, lth2gt
- El elemento xslvalue-of select devuelve como
resultado parcial el contenido textual de todos
los elementos hijos de asignatura - Se devuelve, como resultado parcial, lt/h2gt
- El segundo (y sucesivos) hijo del nodo
planestudios se procesa de igual forma que el
primero - Se devuelve, como resultado parcial,
lt/bodygtlt/htmlgt - En la página siguiente, se muestra el resultado
de aplicar la hoja de estilos al documento XML
65XSL XSLT (IX)
- Documento resultante
- lthtmlgtltbodygt
- lth1gtLista de Asignaturaslt/h1gt
- lth2gtSistemas Operativos
- 2
- obligatoria
- lt/h2gt
- lth2gt
- Metodologia I
- 1
- obligatoria
- lt/h2gt
- ...
- lt/bodygtlt/htmlgt
66XSL XSLT. Plantillas (I)
- Las reglas de plantilla son definidas por el
elemento xsltemplate - Cada elemento xsltemplate tiene un atributo
match que especifica para qué nodos del documento
XML se debe instanciar la plantilla - El valor del atributo match es una expresión
XPath - Una plantilla puede contener
- Texto, que aparecerá literalmente en la salida
- Instrucciones XSL, que copiarán datos del
documento XML al resultado - Ejemplo
- ltxsltemplate matchplanestudios"gt
- lthtmlgtltbodygtlth1gtLista de Asignaturaslt/h1gtlt/bod
ygt - lt/htmlgt
- lt/xsltemplategt
67XSL XSLT. Plantillas (II)
- Habitualmente es necesario procesar los
subelementos de un elemento que cumple una regla
de plantilla - El elemento que lo permite es xslapply-templates
- Introduciendo dicho elemento en la plantilla de
salida, se le está diciendo al formateador que
compare cada elemento hijo del elemento original
que cumple la regla con las plantillas de la hoja
de estilos - Si, a su vez, se encuentra alguna concordancia,
se dará también como resultado su plantilla de
salida - Ejemplo
- ltxsltemplate matchplanestudios"gt
- lthtmlgtlth1gtltxslapply-templates/gtlt/h1gtlt/htmlgt
- lt/xsltemplategt
68XSL XSLT. Plantillas (III)
- En general, no siempre se desea procesar la
totalidad de los subelementos de un elemento que
cumple una regla de plantilla - Es posible seleccionar aquellos subelementos que
se desea sean procesados por el elemento
xslapply-templates - Únicamente hay que utilizar el atributo select de
dicho elemento, que designará el hijo
seleccionado - Ejemplo
- ltxsltemplate matchasignatura"gt
- lthtmlgtlth1gt
- ltxslapply-templates selectseimparte/gt
- lt/h1gtlt/htmlgt
- lt/xsltemplategt
69XSL XSLT. Obtención del valor de un nodo
- El elemento xslvalue-of obtiene el valor de algo
(casi siempre algo del documento XML) y lo copia
en el documento de salida - Su atributo select especifica exactamente de qué
algo hay que obtener el valor - Ejemplo
- ltxsltemplate match"asignatura"gt
- lth2gtltxslvalue-of selectnombre"/gtlt/h2gt
- lt/xsltemplategt
- El item cuyo valor es seleccionado (el elemento
nombre) es relativo al nodo actual (asignatura) - El valor obtenido por la plantilla anterior
aplicada a la primera asignatura es lth2gtSistemas
Operativoslth2gt - El valor de un elemento son sus datos de
carácter - El valor de un atributo es su valor asignado
70XSL XSLT. Procesamiento de múltiples elementos
- El elemento xslvalue-of debe ser utilizado
únicamente en aquellas situaciones en las que no
existe ambigüedad en el valor de qué nodo se está
tomando - Si hay varias posibilidades, se coge la primera,
como en el siguiente ejemplo - ltxsltemplate matchplanestudios"gt
- ltxslvalue-of selectasignatura"/gt
- lt/xsltemplategt
- Aparte del elemento xslapply-templates ya visto,
existe xslfor-each, que procesa todos los
elementos (sin usar otra regla de plantilla)
escogidos por su atributo select - ltxsltemplate matchplanestudios"gt
- ltxslfor-each selectasignatura"/gt
- ltxslvalue-of select."/gt
- lt/xslfor-eachgt
- lt/xsltemplategt
71XSL XSLT. Patrones para seleccionar nodos (I)
- El atributo select del elemento xsltemplate
soporta una sintaxis compleja para permitir la
especificación exacta de los nodos que se quieren
buscar - Buscar el elemento raíz
- ltxsltemplate match/"gt
- ...
- lt/xsltemplategt
- Buscar nombres de elemento
- ltxsltemplate matchasignatura"gt
- ltxslvalue-of selectnombre/gt
- ltxslvalue-of selectcurso/gt
- ltxslvalue-of selecttipo/gt
- lt/xsltemplategt
72XSL XSLT. Patrones para seleccionar nodos (II)
- (continuación)
- Buscar hijos con /
- ltxsltemplate matchasignatura/nombre"gt
- ltxslvalue-of select./gt
- lt!-- se muestra el contenido de nombre --gt
- lt/xsltemplategt
- Buscar utilizando el carácter comodín
- lt!-- nombre como nieto de planestudios --gt
- ltxsltemplate matchplanestudios//nombre"gt
- ltxslvalue-of select./gt
- lt!-- se muestra el contenido de nombre --gt
- lt/xsltemplategt
- Manejar elementos opcionales
- ltxsltemplate matcharea"gt
- ltxslif testestaasignadagt ... lt/xslifgt
73XSL XSLT. Patrones para seleccionar nodos (III)
- (continuación)
- Buscar descendientes de un elemento dado
- lt!-- nombre como descendiente de planestudios
- --gt
- ltxsltemplate matchplanestudios//nombre"gt
- ltxslvalue-of select./gt
- lt/xsltemplategt
- Buscar atributos se utiliza el nombre de
atributo precedido del carácter _at_ - ltxsltemplate matchasignatura"gt
- ltxslvalue-of selectnombre/gt
- ltxslvalue-of select_at_codigo/gt
- lt/xsltemplategt
74XSL XSLT. Ordenación de los elementos de
resultado (I)
- El elemento xslsort ordena los elementos
resultado en un orden diferente al que tienen en
la entrada - Un elemento xslsort puede aparecer como hijo de
un xslapply-templates o un xslfor-each - El atributo select de xslsort define la clave
utilizada para ordenar los elementos resultado
del elemento xslapply-templates o xslfor-each - ltxsltemplate matchplanestudios"gt
- ltxslapply-templatesgt
- ltxslsort selectnombre"/gt
- lt/xslapply-templatesgt
- lt/xsltemplategt
- ltxsltemplate matchasignatura"gt
- ltxslapply-templates selectcurso"/gt
- ltxslapply-templates selectnombre"/gt
- lt/xsltemplategt
75XSL XSLT. Ordenación de los elementos de
resultado (II)
- Se puede hacer que el orden sea descendente y/o
el tipo de datos del atributo que sirve para
ordenar - ltxsltemplate matchplanestudios"gt
- ltxslapply-templatesgt
- ltxslsort selectcurso
- orderdescending
- data-typenumber/gt
- lt/xslapply-templatesgt
- lt/xsltemplategt
- ltxsltemplate matchasignatura"gt
- ltxslapply-templates selectcurso"/gt
- ltxslapply-templates selectnombre"/gt
- lt/xsltemplategt
76XSLT Ejercicios (I)
- Procesar con Xalan el documento
escuelaPlanNuevo.xml con la hoja de estilos
escuela.xsl - Cambiar los atributos match y estudiar el
resultado - Procesar con la hoja de estilos escuela2.xsl
- Procesar con la hoja de estilos escuela3.xsl
- Procesar con la hoja de estilos escuela4.xsl
- Procesar con la hoja de estilos escuela5.xsl
- Escribir una hoja de estilos que muestre todos
los alumnos matriculados en las asignaturas - Idem ejercicio 7, pero ordenados por orden
alfabético
77XSLT Ejercicios (II)
- Para visualizar el resultado de la aplicación de
una hoja de estilos sobre un documento XML,
modificar el elemento xsl-stylesheet - ltxslstylesheet xmlnsxsl"http//www.w3.org/TR/WD
-xsl" gt - Ahora se puede utilizar Internet Explorer para
ver el documento XML (se verá realmente la
aplicación de la hoja de estilos sobre el
documento) - NOTA Internet Explorer obliga a que existan
reglas de plantilla para todos los elementos que,
desde el elemento raíz del documento XML, se
quieran procesar con la hoja de estilos
78XSL XSL-FO (I)
- XSL-FO (XSL Formatting Objects) es el lenguaje de
formateado de XML - Mediante los objetos de formato (Formatting
Objects, FO) y sus propiedades se puede describir
cómo se van a visualizar los elementos de un
documento - Se pueden definir
- Características de la página
- Párrafos
- Listas
- Tablas
- etc.
- La especificación XSL indica el vocabulario XML
que define estos objetos de formato
79XSL XSL-FO (II)
- El modelo XSL-FO se basa en cajas rectangulares
denominadas áreas, que pueden contener - Texto, espacio vacío, imágenes, otros objetos de
formato - Un área puede tener
- Bordes, acolchado, espaciado-antes,
espaciado-después, etc. - Un objeto de formato produce, en general, un área
- En ocasiones, los cambios de página, la
separación de palabras con guiones, etc., puede
provocar la producción de varias áreas - Los objetos de formato se diferencian en lo que
representan - Elemento de una lista, una tabla, una región, un
bloque, etc.
80XSL XSL-FO (III)
- Cuando se procesa, un documento de objetos de
formato se divide en páginas - Una ventana de un navegador es algo así como una
página de gran longitud - En cambio, un formato de impresión contiene
habitualmente varias páginas individuales - Cada página está formada por cierto número de
áreas - Hay 4 tipos básicos de áreas (cada tipo contiene,
en general, áreas de los tipos que le siguen en
la lista) - Regiones cabecera, cuerpo y pie de página
- Bloques párrafos
- Líneas línea de texto
- Parte-de-línea carácter individual, referencia
de nota al pie, ecuación matemática, etc. - Hay varios objetos de formato para producir áreas
de cada tipo
81XSL XSL-FO (IV)
- Propiedades de formato
- Los objetos de formato en un documento XSL-FO
especifican el orden en que los contenidos se
colocan en las páginas - Las propiedades de formato especifican los
detalles del formato - Tamaño, posición, fuente, color, etc.
- Se representan como atributos de los elementos
objetos de formato individuales - ltfoblock font-size9pt" font-family"sans-serif"
line-height"24ptgt
82XSL XSL-FO (V)
- Patrón de página
- Juegan el mismo papel que, por ejemplo, los
patrones de diapositivas de PowerPoint - Define una distribución general para una página
- Márgenes, tamaños de la cabecera, pie y cuerpo de
la página, etc. - Se utiliza el elemento ltfosimple-page-mastergt
83XSL XSL-FO (VI)
- Ejemplo de XSL-FO (simple.fo)
- lt?xml version"1.0" encoding"utf-8"?gt
- ltforoot xmlnsfo"http//www.w3.org/1999/XSL/Form
at"gt - ltfolayout-master-setgt
- ltfosimple-page-master master-name"simple
" - page-height"29.7cm"
page-width"21cm margin-top"1cm" - margin-bottom"2cm"
margin-left"2.5cm" margin-right"2.5cm"gt - ltforegion-body margin-top"3cm"/gt
- ltforegion-before extent"3cm"/gt
- ltforegion-after extent"1.5cm"/gt
- /fosimple-page-mastergt
- lt/folayout-master-setgt
- ltfopage-sequence master-reference"simple"gt
- ltfoflow flow-name"xsl-region-body"gt
- ltfoblock font-size"18pt"
font-family"sans-serif" line-height"24pt" - space-after.optimum"15pt
background-color"blue" color"white" - text-align"center"
padding-top"3pt"gt - Portabilidad de los datos (XML)
- lt/foblockgt ...
84XSL XSL-FO (VII)
- Un procesador XSL-FO es un programa que procesa
un documento XML compuesto de XSL-FOs y lo
presenta en un formato legible
85XSL XSL-FO (VIII)
- Salida del procesador XSL-FO FOP para el
ejemplo simple.fo en formato PDF
86XSL XSL-FO (IX)
- La forma habitual de construir documentos XSL-FO
resulta de la aplicación de hojas de estilos
(XSLT) a documentos XML que contienen la
información propiamente dicha
87XSL XSL-FO (X)
- Ejemplo (página 1 de 3)
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform" - xmlnsfo"http//www
.w3.org/1999/XSL/Format" gt - ltxsltemplate match"/"gt
- ltforoot xmlnsfo"http//www.w3.org/1999/XS
L/Format"gt - lt