Sei sulla pagina 1di 17

¿Qué es XML?

XML: eXtensible Markup Language (lenguaje de marcas extensible).


Es un subconjunto de SGML, mientras que HTML es una aplicación
SGML (pero tienen muchas características comunes).
Curso de Java
¿En qué se diferencia XML de HTML?
HTML proporciona un conjunto predefinido de elementos (etiquetas)
que se pueden usar para describir páginas web en general; resulta
adecuado para documentos de un tipo muy concreto: páginas web.
Hay muchos tipos de documentos que no se pueden describir con

El lenguaje XML HTML, tales como una base de datos o un documento que describa
entidades organizadas en una estructura jerárquica.
HTML se ocupa principalmente de la descripción del aspecto de la
información (el contenido de una página web), mientras que XML
se centra en la estructura de la información.
XML es un estándar simple de intercambio electrónico de datos (EDI).
El lenguaje Java — Tema 12 — Java y XML — XML
Curso de Java Tema 12 – XML - 1

Los elementos de XML Los elementos de XML

A diferencia de HTML, XML delega en el usuario la elección de los <ASIGNATURA>


elementos (etiquetas) que quiere usar en el documento. <NOMBRE>Introducción a la programación</NOMBRE>
<CREDITOS>9</CREDITOS>
Veamos un ejemplo de documento XML: <PROFESOR>Luis Hernández</PROFESOR>
<PERIODO>Anual</PERIODO>
<?xml version="1.0" encoding="UTF-7"?> <HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>
<CURSO> Codificación que admite <ASIGNATURA>
<ASIGNATURA> caracteres internacionales <NOMBRE>Laboratorio de programación</NOMBRE>
<NOMBRE>Lógica</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Luis Hernández</PROFESOR>
<PROFESOR>Javier Leach</PROFESOR>
<PERIODO>2º Cuatrimestre</PERIODO>
<PERIODO>1º Cuatrimestre</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
</ASIGNATURA>
</CURSO>

(continúa)

Curso de Java Tema 12 – XML - 2 Curso de Java Tema 12 – XML - 3


Los elementos de XML Estructura jerárquica de los elementos XML

Como se puede ver, se ha usado XML para describir una base de Como se puede ver también, algunos elementos XML se encuentran
datos pequeña (como lenguaje de descripción de bases de datos dentro de otros: esto es típico de los documentos XML.
XML tiene la ventaja de ser texto simple). Los elementos de un documento XML suelen estar anidados,
XML no define los elementos (etiquetas) que se pueden usar en los de forma que se define una estructura jerárquica de elementos:
documentos, sino que define la forma que pueden tener las marcas
de los elementos, dejando al usuario que los elija. CURSO Elemento raíz o
En el documento anterior, hemos usado los siguientes elementos: elemento documento
CURSO ASIGNATURA
NOMBRE CREDITOS
PROFESOR PERIODO
HORARIO
ASIGNATURA
No son etiquetas predefinidas como las de HTML: son exactamente
las que hemos querido usar.
Además, todos los elementos llevan pares de marcas: tanto la de NOMBRE CREDITOS PROFESOR PERIODO HORARIO
inicio como la de cierre (algunos elementos HTML no se cierran).

Curso de Java Tema 12 – XML - 4 Curso de Java Tema 12 – XML - 5

Redacción de documentos XML Visualización de documentos XML

El hecho de que XML no incluya elementos predefinidos puede hacer Un navegador sabe qué hacer con un elemento H1 o LI de HTML,
pensar que se trata de un estándar relativamente informal. cómo mostrar su contenido en la ventana (el estándar de HTML le
Sin embargo, XML tiene definida una sintaxis muy estricta; indica el aspecto que debe tener cada elemento).
por ejemplo, a diferencia de HTML, todo elemento de XML Sin embargo, para el navegador no significa nada un elemento
debe estar delimitado por una marca de inicio y otra de cierre; CURSO o NOMBRE de XML, ya que son elementos cuyos nombres
también, todo elemento anidado debe estar completamente (etiquetas) nos hemos inventado nosotros.
contenido dentro del elemento que lo engloba. Básicamente se pueden utilizar tres técnicas distintas para indicar al
Aunque no son muchas las reglas sintácticas de XML, navegador cómo debe mostrar los elementos de un documento XML:
se deben conocer y saber aplicar correctamente. Vinculación de hojas de estilo: hojas de estilo en cascada
Sin embargo, veremos que la sintaxis de XML contempla como las del HTML u hojas de estilo XSL (eXtensible Stylesheet
dos niveles de reglas sintácticas. Language - Lenguaje de estilo extensible), específicas para XML.
Dependiendo del nivel de aplicación estricta de las reglas Vinculación de datos: página HTML con el documento XML
sintácticas se distinguen dos tipos de documentos: vinculado referencias a los elementos XML en elementos HTML.
documentos "bien formados" y documentos "válidos". Guiones: mediante programación.

Curso de Java Tema 12 – XML - 6 Curso de Java Tema 12 – XML - 7


Aplicaciones XML Creación y visualización de un primer documento XML

Un conjunto general de elementos XML junto con una estructura de Dado que los documentos XML se guardan en archivos de texto
documento se conoce como aplicación XML o vocabulario XML. simple, se puede utilizar el editor de texto favorito;
Una aplicación XML normalmente se define creando una aquí seguiremos usando JCreator.
Definición de tipo de documento (DTD), un componente Abre el documento Clase.xml:
opcional de los documentos XML. <?xml version="1.0" encoding="UTF-7"?>
Una DTD es como un esquema de base de datos: define los nombres
de los elementos que se pueden usar en el documento, el orden en <!-- File name: Clase.xml -->
el que pueden aparecer los elementos, los atributos que admite cada
<CURSO>
elemento y otras características de los documentos. <ASIGNATURA>
Las aplicaciones XML que más estrictamente se ajustan a las <NOMBRE>Lógica</NOMBRE>
especificaciones del estándar incluyen en el documento XML <CREDITOS>4,5</CREDITOS>
la DTD, de forma que ésta restrinja los elementos que se pueden <PROFESOR>Javier Leach</PROFESOR>
<PERIODO>1º Cuatrimestre</PERIODO>
utilizar y la forma de la estructura del documento
<HORARIO>LMX 15-16</HORARIO>
(el ejemplo anterior no ajunta ninguna DTD). </ASIGNATURA>
(continúa)

Curso de Java Tema 12 – XML - 8 Curso de Java Tema 12 – XML - 9

Creación y visualización de un primer documento XML Creación y visualización de un primer documento XML

<ASIGNATURA> En los documentos XML, se pueden distinguir dos secciones


<NOMBRE>Introducción a la programación</NOMBRE> principales: el prólogo y el elemento documento (o documento raíz).
<CREDITOS>9</CREDITOS>
<PROFESOR>Luis Hernández</PROFESOR> Prólogo <?xml version="1.0" encoding="UTF-7"?> Declaración
<PERIODO>Anual</PERIODO> XML
<HORARIO>LMX 16-17</HORARIO> <!-- File name: Clase.xml -->
</ASIGNATURA> Comentario
<CURSO>
<ASIGNATURA> <ASIGNATURA>
<NOMBRE>Lógica</NOMBRE>
<NOMBRE>Laboratorio de programación</NOMBRE> <CREDITOS>4,5</CREDITOS>
<CREDITOS>4,5</CREDITOS> <PROFESOR>Javier Leach</PROFESOR>
Elementos
<PERIODO>1º Cuatrimestre</PERIODO>
<PROFESOR>Luis Hernández</PROFESOR> Elemento <HORARIO>LMX 15-16</HORARIO> anidados
<PERIODO>2º Cuatrimestre</PERIODO> documento </ASIGNATURA> en el
<HORARIO>LMX 15-16</HORARIO> ...
(raíz) <ASIGNATURA> elemento
</ASIGNATURA> <NOMBRE>Laboratorio de programación</NOMBRE> documento
</CURSO> <CREDITOS>4,5</CREDITOS>
<PROFESOR>Luis Hernández</PROFESOR>
<PERIODO>2º Cuatrimestre</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
</CURSO>

Curso de Java Tema 12 – XML - 10 Curso de Java Tema 12 – XML - 11


Creación y visualización de un primer documento XML Creación y visualización de un primer documento XML

El prólogo Los elementos


El prólogo del documento anterior contiene información general El elemento documento en XML es similar al documento BODY de
sobre el documento: versión de XML usada, definición de tipo de HTML, a excepción de que nosotros elegimos su nombre de etiqueta.
documento, instrucciones de procesamiento. En este caso es CURSO y contiene elementos de tipo ASIGNATURA.
En el ejemplo el prólogo consiste tan sólo en la declaración XML, Igualmente, cada elemento ASIGNATURA contiene una serie
que informa de la versión de XML –1.0 en este caso– y de la de elementos anidados:
codificación usada, así como un comentario (que toma la misma Tipo (etiqueta)
forma que en HTML).
Marca de inicio <ASIGNATURA>
Además, como se ve se pueden colocar líneas en blanco para
<NOMBRE>Lógica</NOMBRE>
mejorar la legibilidad. Contenido <CREDITOS>4,5</CREDITOS>
Los comentarios, por supuesto, son opcionales, pero se anima a que (elementos <PROFESOR>Javier Leach</PROFESOR>
anidados) <PERIODO>1º Cuatrimestre</PERIODO>
se incluyan para aclarar aspectos que puedan resultar confusos.
<HORARIO>LMX 15-16</HORARIO>
Y aunque la especificación XML dice que se debe incluir la Marca de cierre </ASIGNATURA>
declaración XML, en realidad también es opcional.
Tipo (etiqueta)

Curso de Java Tema 12 – XML - 12 Curso de Java Tema 12 – XML - 13

Creación y visualización de un primer documento XML Creación y visualización de un primer documento XML

El contenido de cada elemento ASIGNATURA es una secuencia de Algunas reglas básicas de XML
elementos NOMBRE, CREDITOS, PROFESOR, PERIODO Y HORARIO. A continuación se muestran algunas reglas básicas para
Cada uno de esos elementos contenidos en ASIGNATURA contiene la creación de documentos XML bien formados (aquellos que
únicamente una secuencia de caracteres: respetan el conjunto mínimo de reglas necesarias para que sean
entendidos por los navegadores u otros programas).
El documento debe tener exactamente un elemento de nivel
Tipo (etiqueta) Tipo (etiqueta) superior (el elemento raíz o elemento documento).
Los elementos deben estar adecuadamente anidados.
<PROFESOR>Javier Leach</PROFESOR>
Cada elemento debe tener tanto una marca de inicio como
Marca Contenido Marca una marca de cierre.
de inicio (datos de de cierre El nombre de tipo (etiqueta) de elemento de la marca de inicio
caracteres) debe ser igual que el nombre de tipo (etiqueta) de elemento
de la correspondiente marca de cierre.
En las etiquetas se distingue entre mayúsculas y minúsculas.

Curso de Java Tema 12 – XML - 14 Curso de Java Tema 12 – XML - 15


Creación y visualización de un primer documento XML Creación y visualización de un primer documento XML

Visualización del documento XML Visualización del documento XML sin hoja de estilo
Se puede abrir directamente un documento XML en Internet Basta pulsar dos veces sobre el archivo XML Clase.xml:
Explorer, de la misma forma que se abre un documento HTML.
Si el documento XML no tiene vinculada una hoja de estilo,
IE simplemente muestra el texto del documento completo,
incluyendo el prólogo y las marcas.
IE aplica un código de colores a los distintos componentes del
documento para ayudar a reconocerlos (marcas en azul, etiquetas
en marrón, comentarios en gris y datos de caracteres en negro).
Además, IE muestra los elementos del documento en forma de árbol
colapsable/expandible para indicar la estructura del documento.
Si el documento tiene vinculada una hoja de estilo, IE mostrará tan
sólo los datos de caracteres de los elementos del documento, con las
características de formato especificadas por la hoja de estilo.

Curso de Java Tema 12 – XML - 16 Curso de Java Tema 12 – XML - 17

Creación y visualización de un primer documento XML Creación y visualización de un primer documento XML

Pulsando sobre un signo menos a la izquierda de un elemento Internet Explorer analiza el documento XML y si encuentra errores
intermedio del árbol se repliega su contenido y el signo cambia a +: de construcción del documento no lo muestra, mostrando en cambio
un mensaje indicando el error detectado:

Pulsando
el + se Error en
vuelve a la etiqueta
desplegar de cierre
el contenido

Curso de Java Tema 12 – XML - 18 Curso de Java Tema 12 – XML - 19


Creación y visualización de un primer documento XML Creación y visualización de un primer documento XML

Visualización del documento XML con una hoja de estilo en cascada En principio, los elementos hijos heredan las características
Se puede vincular al documento XML una hoja de estilo. de estilo de sus padres.

En la hoja de estilo se utilizarán los nombres de tipos de los En el documento XML se vincula la hoja de estilo de forma similar a
elementos como selectores. como se hace en los documentos HTML:

Por ejemplo, tenemos una hoja de estilo en el archivo Clase.css: <?xml version="1.0" encoding="UTF-7"?>
ASIGNATURA { font-family : Times New Roman; <!-- File name: Clase.xml -->
font-size : 12pt; display : block; margin-bottom : 10pt
} <?xml-stylesheet type="text/css" href="Clase.css"?>
NOMBRE { font-weight : bold }
CREDITOS { font-style : italic } <CURSO>
<ASIGNATURA>
PERIODO { display : block; font-style : italic } <NOMBRE>Lógica</NOMBRE>
display: block crea una nueva caja para el elemento <CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR>
(aquí, entre otras cosas, se pasa al principio de una nueva línea).
...

Curso de Java Tema 12 – XML - 20 Curso de Java Tema 12 – XML - 21

Creación y visualización de un primer documento XML Ejercicio: un primer documento XML

Ahora, se muestra la información de acuerdo con las características Crea un documento XML denominado Equipos.xml que contenga
de estilo asociadas en la hoja de estilo a los elementos: la información sobre dos equipos de una tienda de informática;
sobre cada producto se deben proporcionar los siguientes datos:
nombre, precio, características y opciones.
El precio se debe proporcionar tanto en pesetas como en euros.
Las características que se han de indicar son: CPU, velocidad,
memoria y espacio de disco.

Una vez creado el documento XML visualízalo en IE sin hoja de estilo.


Luego, crea una hoja de estilo Equipos.css y aplícala al documento.

En las siguientes páginas puedes ver la estructura, el contenido y el


aspecto final deseados.

Curso de Java Tema 12 – XML - 22 Curso de Java Tema 12 – XML - 23


Ejercicio: un primer documento XML Ejercicio: un primer documento XML

Tienda

Equipo Equipo Nombre

Precio: pts. euros

Características:
Nombre Precio Características Opciones CPU velocidad,
memoria disco
Opciones

Pesetas Euros CPU Velocidad Memoria Disco

Comic Sans MS,


12 pt

Curso de Java Tema 12 – XML - 24 Curso de Java Tema 12 – XML - 25

Contenido de los elementos XML Contenido de los elementos XML

Los elementos XML pueden tener distintos tipos de contenidos: „ Referencias a entidades o referencias a caracteres:
Otros elementos anidados: <PAGINATITULO>
Referencia a una entidad
Autor: &autor;
<ASIGNATURA>
Nombre: "Caracteres especiales como &#60;"
<NOMBRE>Lógica</NOMBRE>
</PAGINATITULO>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR> Referencia al carácter '<'
<PERIODO>1º Cuatrimestre</PERIODO>
<HORARIO>LMX 15-16</HORARIO> „ Secciones CDATA (bloques de texto que no son interpretados
</ASIGNATURA> como código XML (permite, por ejemplo, incluir código HTML):
Datos de caracteres: <![CDATA[ ... ]]> Cualquier texto excepto ]]>
<PROFESOR>Javier Leach</PROFESOR> „ Instrucciones de procesamiento:
Datos de caracteres y elementos anidados: <? ... ?>
<PROFESOR> „ Comentarios: igual que en HTML.
Javier Leach
<CATEGORIA>Titular</CATEGORIA> <!-- ... -->
</PROFESOR>

Curso de Java Tema 12 – XML - 26 Curso de Java Tema 12 – XML - 27


Elementos XML sin contenido (vacíos) Atributos de los elementos XML

Igual que en HTML, en XML se pueden declarar elementos vacíos. Dentro de la marca de inicio de un elemento (o de la marca única de
Pero a diferencia de HTML, en XML los elementos vacíos también un elemento vacío) se pueden incluir especificaciones de atributos
deben llevar las dos marcas (de inicio y de cierre). (pares propiedad-valor con la misma sintaxis que en HTML).
<PROFESOR CATEGORIA="Titular">Luis Hernández</PROFESOR>
Por ejemplo, en HTML el elemento vacío HR tan sólo lleva marca de
inicio (<HR>), no existiendo siquiera marca de cierre. Atributo
En XML un elemento así se debe crear con las dos marcas:
<HR></HR> Los atributos proporcionan información adicional sobre el elemento
XML, información distinta de su contenido principal:
Sin embargo, XML contempla una abreviatura para ahorrar escritura
con los elementos vacíos; lo siguiente es equivalente a lo anterior: <PROFESOR CATEGORIA="Titular" EMAIL="luis@jet.es"
TELEFONO="912345678">
<HR/> Luis Hernández
Un elemento vacío puede servir para que una aplicación XML realice </PROFESOR>
una determinada acción (de procesamiento o de visualización). No resulta fácil saber qué debe ser parte del contenido y qué
Además, un elemento vacío puede tomar sentido con sus atributos. información se debe incluir en forma de atributos.

Curso de Java Tema 12 – XML - 28 Curso de Java Tema 12 – XML - 29

Atributos frente a contenido ¿Es un atributo o es parte del contenido?

La información sobre un elemento se puede incluir en forma de Hay que intentar distinguir entre lo que es contenido y lo que es
atributos o en forma de subelementos: metainformación; la metainformación es información que describe al
<PROFESOR> contenedor y que se incluirá en forma de atributos, mientras que el
Luis Hernández contenido es la información que se encuentra dentro del contendor.
<CATEGORIA>Titular</CATEGORIA> Para saber si una información es un metadato o es contenido se
<EMAIL>luis@jet.es</EMAIL>
puede plantear la siguiente pregunta: Si elimino el dato, ¿cambiará
<TELEFONO>912345678</TELEFONO>
</PROFESOR> mi comprensión o posibilidad de comprensión del contenido?
Si la respuesta en no, entonces es un metadato;
Por lo que respecta a la información en sí, ésta se incluye tanto de si la respuesta es sí, entonces es un contenido.
una forma como de otra.
Por ejemplo, lo fundamental de un profesor es su nombre, que
Las diferencias se encuentran en el procesamiento de la información; permite identificarlo, mientras que su categoría, su e-mail o su
por ejemplo, con una hoja de estilo en cascada no se muestra la teléfono es claramente información adicional.
información que se encuentra en forma de atributos.
Sin embargo, la distinción no resulta fácil y depende mucho del tipo
Se pueden plantear las diferencias conceptuales entre contenido y de aplicación XML de que se trate (una relación de asignaturas o
atributos de la forma que se indica a continuación. una relación de profesores).

Curso de Java Tema 12 – XML - 30 Curso de Java Tema 12 – XML - 31


Ejercicio: uso de atributos Documentos válidos: la DTD

Modifica el documento XML denominado Equipos.xml para que cada Un documento XML sin DTD tan sólo puede ser considerado "bien
elemento de producto de valor a dos atributos: tipo (de sobremesa o formado"; para que sea considerado válido debe llevar la DTD.
de mano) y color; además, el elemento de características dará valor La Definición de tipo de documento (DTD) es un bloque de marcado
a otros dos atributos: CPU y velocidad. XML que se debe incluir en el prólogo, a continuación de la
declaración XML.
La DTD define la estructura del documento: si se abre un documento
XML sin DTD, simplemente se comprueba si el documento está bien
formado, pero si lleva DTD también se comprobará su validez (que
no se usen atributos no especificados o que el orden sea correcto).
Forma general de una DTD:
<!DOCTYPE Nombre DTD>
donde Nombre es el elemento raíz (documento) y DTD es la
definición de tipo de documento, que está delimitada por [ ] y
contiene la descripción de los elementos, atributos, etcétera.

Curso de Java Tema 12 – XML - 32 Curso de Java Tema 12 – XML - 33

La Definición de tipo de documento (DTD) Declaración de un tipo de elemento

La definición de tipo de documento está delimitada por [ ] y Una declaración de tipo de elemento tiene esta forma:
contiene declaraciones de marcado con diversos propósitos: <!ELEMENT Nombre Especificación>
Declaraciones de tipos de elementos donde Nombre es el nombre del tipo de elemento (etiqueta) y
Declaraciones de listas de atributos Especificación define su contenido, lo que el elemento puede
contener:
Declaraciones de entidades
EMPTY: elemento vacío
Declaraciones de notaciones <!ELEMENT IMAGEN EMPTY>
Instrucciones de procesamiento Serán <IMAGEN></IMAGEN> (o <IMAGEN/>)
Comentarios ANY: cualquier contenido (sin restricciones)
Referencias a entidades de parámetros <!ELEMENT VARIOS ANY>

La DTD se puede encontrar en un archivo aparte. Otro contenido más concreto:


se especifica mediante un modelo de contenido.

Curso de Java Tema 12 – XML - 34 Curso de Java Tema 12 – XML - 35


Modelos de contenido Modelos de contenido

Se forman mediante secuencias y/o selecciones de otros elementos Los distintos modelos se pueden combinar y anidar, llegando a
y/o #PCDATA (datos de caracteres interpretados; los trataremos especificaciones de contenido muy precisas:
como elementos a efectos de sintaxis); también se contemplan <!ELEMENT A (B*, C, D+)>
repeticiones y ausencias.
<!ELEMENT E (F* | (J, K+))?>
„ Secuencia: elementos separados por comas y entre paréntesis
Supuesto que los elementos E, F, J y K se declaran como #PCDATA,
<!ELEMENT FECHA (DIA, MES, ANIO)>
para la segunda especificación, las siguientes estructuras serían
„ Selección: elementos separados por BARRAS y entre paréntesis correctas:
<!ELEMENT CREACION (#PCDATA | FECHA)> <E></E>
„ Cardinales: se puede indicar si una parte del contenido ha de <E> <E>
estar necesariamente, puede no estar o se puede repetir. <F>...</F> <J>...</J>
? detrás del contenido: una vez o ninguna. <F>...</F> <K>...</K>
+ detrás del contenido: una o más veces. </E> <K>...</K>
* detrás del contenido: una o más veces o ninguna. </E>

Curso de Java Tema 12 – XML - 36 Curso de Java Tema 12 – XML - 37

Definición de atributos Definición de atributos

Los atributos también deben estar definidos en la DTD para cada Por ejemplo:
elemento que los contemple; se definen mediante una declaración <!ATTLIST Nombre TIPO (uno|dos|tres)>
de lista de atributos (nombres, tipos y posible ausencia):
<!ATTLIST Nombre Definiciones>
El valor predeterminado: un valor concreto o una palabra clave.
El nombre identifica al elemento para el que se define la lista de
atributos y se sigue de una lista de definiciones de atributos: Ejemplo de valor concreto (ha de ir entrecomillado):
<!ATTLIST Nombre TIPO (uno|dos|tres) "uno">
Atributo Tipo Predeterminado
Palabras clave:
Las definiciones se separan por espacios.
#REQUIRED: debe estar necesariamente asignado.
Algunos tipos de atributos:
#IMPLIED: puede tomar valor; si no toma valor queda
CDATA: cadenas de caracteres delimitadas por comillas.
indeterminado.
ID: identificador único (distinto de los demás elementos).
ENTITY: una entidad (por ejemplo, un archivo externo).
Enumerado: identificadores entre paréntesis y separados por |.

Curso de Java Tema 12 – XML - 38 Curso de Java Tema 12 – XML - 39


Una DTD para el documento de ejemplo Una DTD para el documento de ejemplo

Recordemos cómo es actualmente el ejemplo de documento XML <ASIGNATURA>


(ampliado con uso de atributos): <NOMBRE>Introducción a la programación</NOMBRE>
<CREDITOS>9</CREDITOS>
<?xml version="1.0" encoding="UTF-7"?> <PROFESOR CATEGORIA="Titular"
EMAIL="lhy@sip.ucm.es" TELEFONO="912345678">
<!-- File name: Clase.xml --> Luis Hernández</PROFESOR>
<PERIODO>Anual</PERIODO>
<?xml-stylesheet type="text/css" href="Clase.css"?> <HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>
<CURSO> <ASIGNATURA>
<ASIGNATURA> <NOMBRE>Laboratorio de programación</NOMBRE>
<NOMBRE>Lógica</NOMBRE> <CREDITOS>4,5</CREDITOS>
<CREDITOS>4,5</CREDITOS> <PROFESOR CATEGORIA="Titular">
<PROFESOR CATEGORIA="Catedratico" Luis Hernández</PROFESOR>
EMAIL="jla@sip.ucm.es" TELEFONO="912345679"> <PERIODO>2º Cuatrimestre</PERIODO>
Javier Leach</PROFESOR> <HORARIO>LMX 15-16</HORARIO>
<PERIODO>1º Cuatrimestre</PERIODO> </ASIGNATURA>
<HORARIO>LMX 15-16</HORARIO> </CURSO>
</ASIGNATURA> (continúa)

Curso de Java Tema 12 – XML - 40 Curso de Java Tema 12 – XML - 41

Una DTD para el documento de ejemplo Entidades

La siguiente podría ser una DTD para este documento: Una entidad puede ser tan pequeña como un carácter individual
<!DOCTYPE CURSO o tan grande como un documento XML completo.
[
<!ELEMENT CURSO (ASIGNATURA)+> <!-- Una o más -->
Simplificando, una entidad consiste en un nombre y un contenido;
<!ELEMENT ASIGNATURA (NOMBRE, CREDITOS, PROFESOR, el contenido son los datos reales almacenados y el nombre se usa
PERIODO, HORARIO)> <!-- Todos y en ese orden --> para referirse a esos datos.
<!ELEMENT NOMBRE (#PCDATA)>
<!ELEMENT CREDITOS (#PCDATA)> Se distinguen dos clases generales de entidades: internas y externas.
<!ELEMENT PROFESOR (#PCDATA)>
<!ELEMENT PERIODO (#PCDATA)>
Una entidad interna es aquella que se define sin necesidad de un
<!ELEMENT HORARIO (#PCDATA)> archivo externo que englobe su contenido, de forma que su
<!ATTLIST PROFESOR CATEGORIA (Catedratico|Titular) contenido forma parte de su declaración (cadena entrecomillada).
#REQUIRED EMAIL CDATA #IMPLIED TELEFONO CDATA
"912345670"> <!-- teléfono de la Secretaría --> Todas las entidades internas son interpretadas de igual forma que
] cualquier otro código XML.
>
Una entidad externa tiene su contenido en algún otro lugar del
sistema y puede ser interpretada o no.
Ejercicio: Incluye en el documento Equipos.xml una DTD adecuada.

Curso de Java Tema 12 – XML - 42 Curso de Java Tema 12 – XML - 43


Entidades Entidades

Las entidades se definen en la DTD con una sintaxis similar a la de Entidades externas interpretadas:
declaración de elemento o atributo; se insertan en el documento en <!ENTITY Nombre SYSTEM URL>
el lugar en el que se requieran.
Para referenciar archivos externos que contienen código XML.
Entidades internas:
<!ENTITY Nombre Valor>
Entidades externas no interpretadas:
Una vez definida la entidad en la DTD se puede usar en el
documento precediendo su nombre con & y posponiéndolo con ; <!ENTITY Nombre SYSTEM URL NDATA Tipo>

Se sustituye por el valor.


<!DOCTYPE CURSO Para referenciar archivos externos que contienen otra cosa distinta
[ de código XML (imágenes, por ejemplo):
... <!ENTITY FOTO SYSTEM "UnaFoto.gif" NDATA GIF>
<!ENTITY LH '<PROFESOR CATEGORIA="Titular">Luis
Hernández</PROFESOR>'>
]
>

Curso de Java Tema 12 – XML - 44 Curso de Java Tema 12 – XML - 45

Referencias a caracteres especiales Introducción a XSL

Las referencias a caracteres toman en XML una forma similar a las XSL es un lenguaje de estilo mucho más sofisticado que CSS,
de HTML: comienzan por &# y acaban en ; habiendo sido diseñado específicamente para la visualización de
Sin embargo, en medio de esos dos símbolos se coloca el código documentos XML; es mucho más potente y ofrece un completo
ASCII del carácter, o en decimal o en hexadecimal (con x delante): control sobre la salida producida a partir de los datos del documento
XML; pero por eso, también es más difícil de aprender.
&#91; &#xF0;
Dos son los pasos principales del uso de una hoja de estilo XSL
para la visualización de un documento XML:
Algunas referencias útiles:
1. Crear el archivo de hoja de estilo XSL.
&#225; á &#233; é &#237; í &#243; ó
&#250; ú &#241; ñ &#209; Ñ 2. Vincular la hoja de estilo XSL al documento XML.
Para esto último basta con incluir una instrucción de procesamiento
También hay unas pocas referencias predefinidas: en el prólogo del documento XML similar a la de las hojas CSS:
<?xml-stylesheet type="text/xsl" href="URL"?>
&amp; & &lt; < &gt; > &apos; '
&quot; " XSL es una aplicación XML, por lo que debe adaptarse a las reglas
sintácticas de XML para ser un documento XML bien formado.

Curso de Java Tema 12 – XML - 46 Curso de Java Tema 12 – XML - 47


Introducción a XSL Introducción a XSL

Una hoja de estilo XSL, más que incluir reglas de estilo, lo que Una hoja de estilo XSL con una plantilla para visualizar todo el
incluye es una o más plantillas, cada una de las cuales contiene documento sería como la siguiente:
instrucciones para la visualización de una determinada rama de <?xml version="1.0" encoding="UTF-7"?>
elementos del documento XML. <!-- File name: Asignatura.xsl -->
Veamos un ejemplo de plantilla XSL; la aplicaremos al siguiente <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
documento XML (Asignatura.xml):
<H2>Descripción de asignatura</H2>
<?xml version="1.0" encoding="UTF-7"?> <SPAN STYLE="font-style:italic">Profesor: </SPAN>
<!-- File name: Asignatura.xml --> <xsl:value-of select="ASIGNATURA/PROFESOR"/><BR/>
<?xml-stylesheet type="text/xsl" href="Asignatura.xsl"?> <SPAN STYLE="font-style:italic">Asignatura: </SPAN>
<xsl:value-of select="ASIGNATURA/NOMBRE"/><BR/>
<ASIGNATURA> <SPAN STYLE="font-style:italic">Créditos: </SPAN>
<NOMBRE>Introducción a la programación</NOMBRE> <xsl:value-of select="ASIGNATURA/CREDITOS"/><BR/>
<CREDITOS>9</CREDITOS> <SPAN STYLE="font-style:italic">Horario: </SPAN>
<PROFESOR>Luis Hernández</PROFESOR> <xsl:value-of select="ASIGNATURA/HORARIO"/><BR/>
<PERIODO>Anual</PERIODO>
<HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA> (continúa)

Curso de Java Tema 12 – XML - 48 Curso de Java Tema 12 – XML - 49

Introducción a XSL Introducción a XSL

<SPAN STYLE="font-style:italic">Periodo: </SPAN> Examinemos las características de la hoja de estilo XSL:


<xsl:value-of select="ASIGNATURA/PERIODO"/>
</xsl:template> Aparte del prólogo, que ya nos resulta familiar dado que una hoja
</xsl:stylesheet> Orden distinto del documento XML XSL es un documento XML, la hoja de estilo XSL debe tener como
elemento documento (raíz) el siguiente:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- uno o más elementos plantilla -->
</xsl:stylesheet>
El elemento documento sirve para contener a los otros elementos
(las plantillas) y para identificar el documento como hoja de estilo.
El documento anterior sólo tiene un elemento plantilla:
<xsl:template match="/">
<!-- elementos hijos -->
</xsl:template>

Curso de Java Tema 12 – XML - 50 Curso de Java Tema 12 – XML - 51


Introducción a XSL Introducción a XSL

El atributo match indica la rama específica del árbol de elementos En cualquier caso, los elementos deben ser elementos XML correctos.
del documento XML para la que se aplica la plantilla. Así, los elementos HTML vacíos no se pueden incluir como se hace
/ indica el documento entero; toda hoja de estilo XSL debe tener una en HTML (por ejemplo, <BR>), sino que deben tener marca de inicio
plantilla que se corresponda con el documento XML entero; y marca de cierre; eso sí, se recurre a la abreviatura de XML para
/ no representa al elemento raíz, sino al documento entero, dentro elementos vacíos:
del cual se encuentra el elemento raíz (ASIGNATURA en este caso). <BR/>
Una plantilla contiene dos tipos de elementos: Igual para los elementos XSL:
Elementos XML que representan marcas HTML; por ejemplo: <xsl:value-of select="ASIGNATURA/PROFESOR"/>
<H2>Descripción de asignatura</H2>
<SPAN STYLE="font-style:italic">Profesor: </SPAN> El elemento XSL value-of añade el contenido textual del elemento
XML especificado (junto con el de sus hijos, si los tiene) a la salida
Elementos XSL; por ejemplo: HTML que el navegador visualiza.
<xsl:value-of select="ASIGNATURA/PROFESOR"/>
Supongamos que el documento XML fuera un poco distinto
Los elementos XSL se distinguen porque todos empiezan por xsl:.
(como se muestra en la siguiente página).

Curso de Java Tema 12 – XML - 52 Curso de Java Tema 12 – XML - 53

Introducción a XSL Introducción a XSL

Supongamos que el documento XML fuera un poco distinto: La misma hoja de estilo serviría para mostrar la información.
Se puede ver cómo para PROFESOR se muestra en secuencia la
<?xml version="1.0" encoding="UTF-7"?> información de sus elementos hijos (PILA y APELLIDOS).
<!-- File name: Asignatura.xml -->
<?xml-stylesheet type="text/xsl" href="Asignatura.xsl"?>

<ASIGNATURA>
<NOMBRE>Introducción a la programación</NOMBRE>
<CREDITOS>9</CREDITOS>
<PROFESOR>
<PILA>Luis</PILA>
<APELLIDOS>Hernández Yáñez</APELLIDOS>
</PROFESOR>
<PERIODO>Anual</PERIODO>
<HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>

Curso de Java Tema 12 – XML - 54 Curso de Java Tema 12 – XML - 55


Introducción a XSL Introducción a XSL

Visualización de varias asignaturas Modifiquemos la plantilla XSL:


Para aplicar la hoja de estilo anterior al documento Curso.xml, <xsl:template match="/">
<H2>Descripción de curso</H2>
el ejemplo de las secciones anteriores, es necesario modificarla, ya <xsl:for-each select="CURSO/ASIGNATURA">
que existe otro elemento de mayor nivel: CURSO: <SPAN STYLE="font-style:italic">Profesor: </SPAN>
... <xsl:value-of select="PROFESOR"/><BR/>
<H2>Descripción de curso</H2> <SPAN STYLE="font-style:italic">Asignatura: </SPAN>
<xsl:value-of select="NOMBRE"/><BR/>
<SPAN STYLE="font-style:italic">Profesor: </SPAN>
<SPAN STYLE="font-style:italic">Créditos: </SPAN>
<xsl:value-of select="CURSO/ASIGNATURA/PROFESOR"/> <xsl:value-of select="CREDITOS"/><BR/>
<BR/> <SPAN STYLE="font-style:italic">Horario: </SPAN>
... <xsl:value-of select="HORARIO"/><BR/>
<SPAN STYLE="font-style:italic">Periodo: </SPAN>
Al aplicar la hoja de estilo (Curso.xsl), se verá que sólo se
<xsl:value-of select="PERIODO"/><P/>
visualiza la información de una asignatura, aunque en el documento </xsl:for-each>
XML haya tres. Esto se debe a que no se ha indicado en la hoja de </xsl:template>
estilo que se debe repetir el proceso para las distintas asignaturas.

Curso de Java Tema 12 – XML - 56 Curso de Java Tema 12 – XML - 57

Introducción a XSL Introducción a XSL

Ahora el resultado Uso de múltiples plantillas


es el deseado: <?xml version="1.0" encoding="UTF-7"?>

<!-- File name: Clase2.xsl -->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<H2>Descripción de curso</H2>
<xsl:apply-templates select="CURSO/ASIGNATURA"/>
</xsl:template>

<xsl:template match="ASIGNATURA">
<SPAN STYLE="font-style:italic">Profesor: </SPAN>
<xsl:value-of select="PROFESOR"/><BR/>
<SPAN STYLE="font-style:italic">Asignatura: </SPAN>
<xsl:value-of select="NOMBRE"/><BR/>

(continúa)

Curso de Java Tema 12 – XML - 58 Curso de Java Tema 12 – XML - 59


Introducción a XSL Introducción a XSL

<SPAN STYLE="font-style:italic">Créditos: </SPAN> Manipulación de datos


<xsl:value-of select="CREDITOS"/><BR/>
<SPAN STYLE="font-style:italic">Horario: </SPAN> Se pueden filtrar u ordenar los datos del documento XML antes de
<xsl:value-of select="HORARIO"/><BR/> producir la visualización.
<SPAN STYLE="font-style:italic">Periodo: </SPAN> Para filtrar datos, se puede colocar la condición de filtrado detrás del
<xsl:value-of select="PERIODO"/><P/>
patrón de plantilla (valor de match) entre corchetes..
</xsl:template>
</xsl:stylesheet> Por ejemplo, si se quiere mostrar sólo aquellas asignaturas que
El resultado es el mismo que antes, pero ahora no hay que indicar tengan un determinado valor en un elemento hijo, se puede escribir
explícitamente la repetición para cada elemento ASIGNATURA, ya algo como lo siguiente:
que xsl:apply-templates indica que se aplique la plantilla de <xsl:template match="ASIGNATURA[CREDITOS='4,5']">
ASIGNATURA para todos los elementos de ese tipo que haya. Sólo se verán las asignaturas de 4,5 créditos.
Para ordenar los datos se puede hacer uso del atributo order-by:
<xsl:apply-templates select="CURSO/ASIGNATURA"
order-by="NOMBRE"/>

Curso de Java Tema 12 – XML - 60 Curso de Java Tema 12 – XML - 61

Introducción a XSL Un ejemplo completo de uso de XSL

Acceso a los atributos <?xml version="1.0" encoding="UTF-7"?>


<!-- File Name: XslDemo06.xml -->
Se puede acceder a los atributos de un elemento simplemente <?xml-stylesheet type="text/xsl" href="XslDemo06.xsl"?>
colocando una @ delante del nombre del atributo.
Por ejemplo: <INVENTORY>
<BOOK InStock="yes">
<xsl:for-each select="CURSO/ASIGNATURA[@Optativa='Si']"> <TITLE>The Adventures of Huckleberry Finn</TITLE>
<xsl:value-of select="PROFESOR/@EMAIL"/> <AUTHOR Born="1835">Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
Terminamos este tema con un ejemplo completo que hace uso de <PRICE>$5.49</PRICE>
atributos y genera una tabla HTML (el ejemplo se ha obtenido del </BOOK>
libro XML Step by Step, de Microsoft Press). <BOOK InStock="no">
<TITLE>Leaves of Grass</TITLE>
<AUTHOR Born="1819">Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>

(continúa)

Curso de Java Tema 12 – XML - 62 Curso de Java Tema 12 – XML - 63


Un ejemplo completo de uso de XSL Un ejemplo completo de uso de XSL

<PRICE>$7.75</PRICE> <?xml version="1.0" encoding="UTF-7"?>


</BOOK> <!-- File Name: XslDemo06.xsl -->
<BOOK InStock="yes">
<TITLE>The Marble Faun</TITLE> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<AUTHOR Born="1804">Nathaniel Hawthorne</AUTHOR> <xsl:template match="/">
<BINDING>trade paperback</BINDING> <H2>Books In Stock</H2>
<PAGES>473</PAGES> <TABLE BORDER="1" CELLPADDING="5">
<PRICE>$10.95</PRICE> <THEAD>
</BOOK> <TH>Title</TH>
<BOOK InStock="yes"> <TH>Author</TH>
<TITLE>Moby-Dick</TITLE> <TH>Binding Type</TH>
<AUTHOR Born="1819">Herman Melville</AUTHOR> <TH>Number of Pages</TH>
<BINDING>hardcover</BINDING> <TH>Price</TH>
<PAGES>724</PAGES> </THEAD>
<PRICE>$9.95</PRICE> <xsl:for-each
</BOOK> select="INVENTORY/BOOK[@InStock='yes']">
</INVENTORY> <TR ALIGN="CENTER">

(continúa)

Curso de Java Tema 12 – XML - 64 Curso de Java Tema 12 – XML - 65

Un ejemplo completo de uso de XSL Un ejemplo completo de uso de XSL

<TD><xsl:value-of select="TITLE"/></TD> El resultado


<TD> es el siguiente:
<xsl:value-of select="AUTHOR"/> <BR/>
(born <xsl:value-of
select="AUTHOR/@Born"/>)
</TD>
<TD><xsl:value-of select="BINDING"/></TD>
<TD><xsl:value-of select="PAGES"/></TD>
<TD><xsl:value-of select="PRICE"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>

Curso de Java Tema 12 – XML - 66 Curso de Java Tema 12 – XML - 67

Potrebbero piacerti anche