Sei sulla pagina 1di 32

Escuela Complutense Latinoamericana

Escola Complutense Latinoamericana

Programación para Internet

XML
Otro lenguaje de Internet

Universidade Federal de Santa Catarina


Florianópolis, Brasil
21 de mayo a 1 de junio de 2007

¿Qué es XML?

eXtensible Markup Language


Lenguaje de marcas extensible
Subconjunto de SGML (HTML es una aplicación SGML).
HTML proporciona un conjunto predefinido de elementos
(etiquetas) para describir páginas web en general.
Para documentos de un tipo concreto: páginas web.
Muchos tipos de documentos que no se pueden describir
con HTML.
HTML se ocupa principalmente de la descripción del
aspecto de la información (el contenido de una página).
XML se centra en la estructura de la información.
XML es un estándar sencillo de intercambio electrónico
de datos (EDI).
El lenguaje XML XML: 1
Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Los elementos de XML

XML delega en el usuario la elección de los elementos


(etiquetas) que quiere usar en el documento.
Ejemplo de documento XML:
<?xml version="1.0"?>
<CURSO>
<ASIGNATURA>
<NOMBRE>LOGICA</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR>
<PERIODO>Cuatrimestre 1</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
.../...
El lenguaje XML XML: 2

Los elementos de XML


.../...
<ASIGNATURA>
<NOMBRE>INTRODUCCION A LA PROGRAMACION</NOMBRE>
<CREDITOS>9</CREDITOS>
<PROFESOR>Luis Hdez.</PROFESOR>
<PERIODO>Anual</PERIODO>
<HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>
<ASIGNATURA>
<NOMBRE>LABORATORIO DE PROGRAMACION</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Luis Hdez.</PROFESOR>
<PERIODO>Cuatrimestre 2</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
</CURSO>

El lenguaje XML XML: 3


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Los elementos de XML

Se ha usado XML para describir una base de datos.


XML no define los elementos (etiquetas) que se pueden
usar en los documentos, sino que define la forma que
pueden tener las marcas de los elementos, dejando al
usuario que los elija.
Hemos usado los siguientes elementos:
CURSO ASIGNATURA
NOMBRE CREDITOS
PROFESOR PERIODO
HORARIO
No son etiquetas predefinidas como las de HTML:
son exactamente las que hemos querido usar.
Todos los elementos llevan pares de marcas: la de inicio
y la de cierre (algunos elementos HTML no se cierran).

El lenguaje XML XML: 4

Estructura jerárquica de los elementos XML

Algunos elementos XML se encuentran dentro de otros:


esto es típico de los documentos XML.
Los elementos de un documento XML suelen estar
anidados: estructura jerárquica de elementos.

Elemento raíz o
CURSO elemento documento

ASIGNATURA

NOMBRE CREDITOS PROFESOR PERIODO HORARIO

El lenguaje XML XML: 5


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Redacción de documentos XML

XML tiene definida una sintaxis muy estricta.


A diferencia de HTML, todo elemento de XML debe estar
delimitado por una marca de inicio y otra de cierre;
también, todo elemento anidado debe estar contenido
completamente dentro del elemento que lo engloba.
Aunque no son muchas las reglas sintácticas de XML,
se deben conocer y saber aplicar correctamente.
La sintaxis de XML contempla dos niveles de reglas
sintácticas.
Dependiendo del nivel de aplicación estricta de las
reglas sintácticas se distinguen dos tipos de
documentos: "bien formados" y "válidos".

El lenguaje XML XML: 6

Visualización de documentos XML

Un navegador sabe qué hacer con un elemento H1 o LI


de HTML, cómo mostrar su contenido en la ventana.
Sin embargo, para el navegador no significa nada un
elemento CURSO o NOMBRE de XML, ya que son
elementos cuyos nombres (etiquetas) nos hemos
inventado nosotros.
Tres técnicas distintas para indicar al navegador cómo
debe mostrar los elementos de un documento XML:
9 Vinculación de hojas de estilo: hojas de estilo en
cascada como las del HTML u hojas de estilo XSL
(eXtensible Stylesheet Language), específicas para XML.
9 Vinculación de datos: página HTML con el documento
XML vinculado referencias a los elementos XML en
elementos HTML.
9 Guiones: mediante programación.

El lenguaje XML XML: 7


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
¿Reemplazará XML a HTML?

HTML sigue siendo el lenguaje primordial de los


navegadores para la visualización de información.
Se puede abrir directamente un documento XML en el
navegador, quizá con una hoja de estilo en cascada
vinculada, sin necesidad de ningún código HTML.
Más que reemplazar a HTML, XML se usa conjuntamente
con HTML para mejorar las capacidades de las páginas
web de forma que:
9 Se pueda estructurar la información de los
documentos.
9 Se pueda manipular la información de las páginas
web (ordenar, filtrar, reorganizar, etcétera).

El lenguaje XML XML: 8

Objetivos oficiales de diseño de XML

Especificación oficial del lenguaje XML:


XML debe poderse utilizar fácilmente en Internet
(ha sido diseñado para el intercambio de información).
XML debe proporcionar soporte a muchos tipos de
aplicaciones (acceso a bases de datos, comercio
electrónico, ...)
Debe resultar sencillo desarrollar programas que
procesen documentos XML (sintaxis sencilla).
Los documentos XML deben ser fácilmente entendibles
y claros.
La definición de XML debe ser formal y concisa.
Los documentos XML se debe poder crear fácilmente.

Sobretodo, sencillez

El lenguaje XML XML: 9


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Aplicaciones XML

Aplicación XML o vocabulario XML: conjunto de


elementos XML junto con una estructura de documento.
Una aplicación XML normalmente se define creando una
Definición de tipo de documento (DTD), un componente
opcional de los documentos XML.
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 el que pueden aparecer los
elementos, los atributos que admite cada elemento y
otras características de los documentos.
Las aplicaciones XML que más estrictamente se ajustan
a las especificaciones del estándar incluyen en el
documento XML la DTD (el ejemplo anterior no ajunta
ninguna DTD).

El lenguaje XML XML: 10

Un primer documento XML

<?xml version="1.0"?> Clase.xml


<!-- File name: Clase.xml -->
<CURSO>
<ASIGNATURA>
<NOMBRE>LOGICA</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR>
<PERIODO>Cuatrimestre 1</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
<ASIGNATURA>
<NOMBRE>INTRODUCCION A LA
PROGRAMACION</NOMBRE>
<CREDITOS>9</CREDITOS>
.../...

El lenguaje XML XML: 11


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un primer documento XML

.../...
<PROFESOR>Luis Hdez.</PROFESOR>
<PERIODO>Anual</PERIODO>
<HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>
<ASIGNATURA>
<NOMBRE>LABORATORIO DE
PROGRAMACION</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Luis Hdez.</PROFESOR>
<PERIODO>Cuatrimestre 2</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
</CURSO>

El lenguaje XML XML: 12

Un primer documento XML


Dos secciones principales: el prólogo y el elemento
documento (o documento raíz).

Prólogo
<?xml version="1.0"?> Declaración
XML
<!-- File name: Clase.xml -->
Comentario
<CURSO>
<ASIGNATURA>
<NOMBRE>LOGICA</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR>
<PERIODO>Cuatrimestre 1</PERIODO> Elementos
<HORARIO>LMX 15-16</HORARIO> anidados
Elemento </ASIGNATURA>
documento ... en el
(raíz) <ASIGNATURA> elemento
<NOMBRE>LABORATORIO DE PROGRAMACION</NOMBRE> documento
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Luis Hdez.</PROFESOR>
<PERIODO>Cuatrimestre 2</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
</CURSO>

El lenguaje XML XML: 13


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un primer documento XML

Prólogo:
Contiene información general sobre el documento:
versión de XML usada, definición de tipo de documento,
instrucciones de procesamiento.
En el ejemplo el prólogo consiste tan sólo en la
declaración XML.
Se pueden colocar líneas en blanco para mayor
legibilidad.
Los comentarios, por supuesto, son opcionales, pero se
anima a que se incluyan para aclarar aspectos que
puedan resultar confusos (iguales que en HTML).
Aunque la especificación XML dice que se debe incluir
la declaración XML, en realidad también es opcional.

El lenguaje XML XML: 14

Un primer documento XML

El elemento documento (raíz):


Similar al elemento documento BODY de HTML.
Cada elemento ASIGNATURA contiene una serie
de elementos anidados.

Tipo (etiqueta)

Marca de inicio <ASIGNATURA>


<NOMBRE>LOGICA</NOMBRE>
Contenido <CREDITOS>4,5</CREDITOS>
(elementos <PROFESOR>Javier Leach</PROFESOR>
anidados) <PERIODO>Cuatrimestre 1</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
Marca de cierre </ASIGNATURA>

Tipo (etiqueta)

El lenguaje XML XML: 15


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un primer documento XML

El contenido de cada elemento ASIGNATURA es una


secuencia de elementos NOMBRE, CREDITOS,
PROFESOR, PERIODO Y HORARIO.
Cada uno de esos elementos contenidos en
ASIGNATURA contiene una secuencia de caracteres.

Tipo (etiqueta) Tipo (etiqueta)

<PROFESOR>Javier Leach</PROFESOR>

Marca Contenido Marca


de inicio (datos de de cierre
caracteres)

El lenguaje XML XML: 16

Un primer documento XML

Algunas reglas básicas de XML:


Para documentos XML bien formados.
9 El documento debe tener exactamente un
elemento de nivel superior (el elemento raíz).
9 Los elementos deben estar bien anidados.
9 Cada elemento debe tener tanto una marca de
inicio como una marca de cierre.
9 El nombre de tipo (etiqueta) de elemento de la
marca de inicio debe ser igual que el nombre de
tipo (etiqueta) de elemento de la correspondiente
marca de cierre.
9 En las etiquetas se distingue entre mayúsculas y
minúsculas.

El lenguaje XML XML: 17


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un primer documento XML

Visualización del documento XML:


Se puede abrir el documento XML en el navegador.
Si el documento XML no tiene vinculada una hoja de
estilo, simplemente se muestra el texto del documento
completo, incluyendo el prólogo y las marcas.
IE aplica un código de colores: marcas en azul,
etiquetas en marrón, comentarios en gris y datos de
caracteres negros.
Se muestran 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,
se muestran tan sólo los datos de caracteres de los
elementos del documento, con el formato especificado.

El lenguaje XML XML: 18

Un primer documento XML

Visualización del documento XML sin hoja de estilo:


Basta pulsar dos veces sobre el archivo XML Clase.xml.

Con los -
y + se
contrae y
expande
el contenido

El lenguaje XML XML: 19


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un primer documento XML

Si hay errores en el documento aparece un mensaje


indicando el error detectado:

Una O
acentuada

El lenguaje XML XML: 20

Un primer documento XML

Visualización del documento XML con una hoja de estilo:


Se puede vincular al documento XML una hoja de estilo.
En la hoja de estilo se utilizarán los nombres de tipos de
los elementos como selectores.
Clase.css:
ASIGNATURA { font-family : Times New Roman;
font-size : 12pt; display : block;
margin-bottom : 10pt }
NOMBRE { font-weight : bold }
CREDITOS { font-style : italic }
PERIODO { display : block; font-style : italic }
display: block crea una nueva caja para el elemento
(aquí, entre otras cosas, se pasa al principio de una
nueva línea).

El lenguaje XML XML: 21


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un primer documento XML

En el documento XML se vincula la hoja de estilo de


forma similar a como se hace en los documentos HTML:

<?xml version="1.0"?>
<!-- File name: Clase.xml -->
<?xml-stylesheet type="text/css"
href="Clase.css"?>
<CURSO>
<ASIGNATURA>
<NOMBRE>LOGICA</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR>
...

El lenguaje XML XML: 22

Un primer documento XML

Se muestra la información con las características de


estilo asociadas en la hoja de estilo a los elementos:

El lenguaje XML XML: 23


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Ejercicio: un documento XML

Crea un documento XML denominado Equipos0.xml que


contenga la información sobre cuatro equipos de
Informática El Acuario; 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 tres: CPU
con su velocidad, memoria y espacio de disco.

Una vez creado el documento XML visualízalo sin hoja


de estilo.

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

El lenguaje XML XML: 24

Contenido de los elementos XML

Los elementos XML pueden tener distintos contenidos:


– Otros elementos anidados
<ASIGNATURA>
<NOMBRE>LOGICA</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR>Javier Leach</PROFESOR>
<PERIODO>Cuatrimestre 1</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
– Datos de caracteres
<PROFESOR>Javier Leach</PROFESOR>
– Datos de caracteres y elementos anidados
<PROFESOR>Javier Leach
<CATEGORIA>Titular</CATEGORIA>
</PROFESOR>

El lenguaje XML XML: 25


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Contenido de los elementos XML

Referencias a entidades o referencias a caracteres


<PAGINATITULO>
Referencia a una entidad
Autor: &autor;
Nombre: "Caracteres especiales como &#60;"
</PAGINATITULO>
Referencia al carácter '<'

Secciones CDATA (bloques de texto que no son


interpretados como código XML (permite, por ejemplo,
incluir código HTML).
<![CDATA[ ... ]]> Cualquier texto excepto ]]>
Instrucciones de procesamiento
<? ... ?>
Comentarios: igual que en HTML
<!-- ... -->

El lenguaje XML XML: 26

Elementos XML sin contenido (vacíos)

En XML se pueden declarar elementos vacíos.


A diferencia de HTML, en XML los elementos vacíos
también deben llevar las dos marcas (inicio y cierre).
En XML un elemento HR vacío se debe crear con las dos
marcas:
<HR></HR>
XML contempla una abreviatura para ahorrar escritura
con los elementos vacíos:
<HR/>
Un elemento vacío puede servir para que una aplicación
XML realice una determinada acción (de procesamiento
o de visualización).
Además, un elemento vacío puede tomar sentido con
sus atributos.
El lenguaje XML XML: 27
Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Atributos de los elementos XML

Dentro de la marca de inicio de un elemento se pueden


incluir especificaciones de atributos (pares propiedad-
valor con la misma sintaxis que en HTML).
<PROFESOR CATEGORIA="Titular">Luis
Hdez.</PROFESOR>
Atributo

Los atributos proporcionan información adicional sobre


el elemento XML:
<PROFESOR CATEGORIA="Titular"
EMAIL="luis@sip.ucm.es" TELEFONO="912345678">
Luis Hdez.
</PROFESOR>
No resulta fácil saber qué debe ser parte del contenido y
qué información se debe incluir en forma de atributos.

El lenguaje XML XML: 28

Atributos frente a contenido

La información sobre un elemento se puede incluir en


forma de atributos o en forma de subelementos:
<PROFESOR>
Luis Hdez.
<CATEGORIA>Titular</CATEGORIA>
<EMAIL>luis@sip.ucm.es</EMAIL>
<TELEFONO>912345678</TELEFONO>
</PROFESOR>
Por lo que respecta a la información en sí, ésta se
incluye tanto de una forma como de otra.
Las diferencias se encuentran en el procesamiento de la
información; por ejemplo, con una hoja de estilo en
cascada no se muestra la información que se encuentra
en forma de atributos.
Los atributos se consideran como metainformación.

El lenguaje XML XML: 29


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Ejercicio: uso de atributos

A partir del documento XML Equipos0.xml crea otro,


Equipos1.xml. Ahora, cada elemento de producto de valor
a dos atributos: tipo (de sobremesa o de mano) y color;
además, el elemento nombre dará valor a otros dos
atributos: CPU y Velocidad.

El lenguaje XML XML: 30

Documentos válidos: la DTD

Un documento XML sin DTD tan sólo puede ser


considerado "bien formado".
Para que sea considerado válido, debe llevar una DTD.
La Definición de tipo de documento (DTD) es un bloque
de marcado XML que se debe incluir en el prólogo, a
continuación de la declaración XML.
La DTD define la estructura del documento.
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.

El lenguaje XML XML: 31


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
La Definición de tipo de documento (DTD)

La DTD está delimitada por [ ] y contiene declaraciones


de marcado con diversos propósitos:
9 Declaraciones de tipos de elementos
9 Declaraciones de listas de atributos
9 Declaraciones de entidades
9 Declaraciones de notaciones
9 Instrucciones de procesamiento
9 Comentarios
9 Referencias a entidades de parámetros
Se puede encontrar en un archivo aparte vinculado.

El lenguaje XML XML: 32

Declaración de un tipo de elemento

Una declaración de tipo de elemento tiene esta forma:


<!ELEMENT Nombre Especificación>
donde Nombre es el nombre del tipo de elemento
(etiqueta) y Especificación define su contenido,
lo que el elemento puede contener:
9 EMPTY: elemento vacío
<!ELEMENT IMAGEN EMPTY>
Serán <IMAGEN></IMAGEN> (o </IMAGEN>)
9 ANY: cualquier contenido (sin restricciones)
<!ELEMENT VARIOS ANY>
9 Otro contenido más concreto:
se especifica mediante un modelo de contenido.

El lenguaje XML XML: 33


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Modelos de contenido

Secuencias y/o selecciones de otros elementos y/o


#PCDATA (datos de caracteres interpretados; los
trataremos como elementos a efectos de sintaxis);
también se contemplan repeticiones y ausencias.
9 Secuencia: elementos separados por comas y
entre paréntesis.
<!ELEMENT FECHA (DIA, MES, ANIO)>
9 Selección: elementos separados por BARRAS y
entre paréntesis.
<!ELEMENT CREACION (#PCDATA | FECHA)>
9 Cardinales: si una parte del contenido ha de estar,
puede no estar o se puede repetir.
? detrás del contenido: una vez o ninguna.
+ detrás del contenido: una o más veces.
* detrás del contenido: una o más veces o ninguna.

El lenguaje XML XML: 34

Modelos de contenido

Los distintos modelos se pueden combinar y anidar.


<!ELEMENT A (B*, C, D+)>
<!ELEMENT E (F* | (J, K+)?>
Supuesto que los elementos E, F, J y K se declaran
como (#PCDATA), para la segunda especificación,
las siguientes estructuras serían correctas:
<E></E>

<E> <E>
<F>...</F> <J>...</J>
<F>...</F> <K>...</K>
</E> <K>...</K>
</E>

El lenguaje XML XML: 35


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Definición de atributos

Cada atributo también debe estar definido en la DTD


mediante una declaración de lista de atributos
(nombres, tipos y posible ausencia):
<!ATTLIST Elemento Definiciones>
Al nombre del elemento le sigue una lista de definiciones:
Atributo Tipo Predeterminado
Las definiciones se separan por espacios.
Algunos tipos de atributos:
CDATA: cadenas de caracteres delimitadas por comillas.
ID: identificador único (distinto de los otros elementos).
ENTITY: una entidad (por ejemplo, un archivo externo).
Enumerado: identificadores entre paréntesis y separados
por |.

El lenguaje XML XML: 36

Definición de atributos

Por ejemplo:
<!ATTLIST TIPO (uno|dos|tres)>
Valor predeterminado: valor concreto o palabra clave.
Ejemplo de valor concreto (ha de ir entrecomillado):
<!ATTLIST TIPO (uno|dos|tres) "uno">
Palabras clave:
#REQUIRED: debe estar necesariamente asignado.
#IMPLIED: puede tomar valor;
si no toma valor queda indeterminado.

El lenguaje XML XML: 37


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Una DTD para el documento de ejemplo

El ejemplo de documento XML:


<?xml version="1.0"?>
<!-- File name: Clase.xml -->
<?xml-stylesheet type="text/css" href="Clase.css"?>
<CURSO>
<ASIGNATURA>
<NOMBRE>LOGICA</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR CATEGORIA="Catedratico"
EMAIL="jla@sip.ucm.es" TELEFONO="912345679">
Javier Leach</PROFESOR>
<PERIODO>Cuatrimestre 1</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
.../...

El lenguaje XML XML: 38

Una DTD para el documento de ejemplo


<ASIGNATURA>
<NOMBRE>INTRODUCCION A LA PROGRAMACION</NOMBRE>
<CREDITOS>9</CREDITOS>
<PROFESOR CATEGORIA="Titular"
EMAIL="luis@sip.ucm.es" TELEFONO="912345678">
Luis Hdez.</PROFESOR>
<PERIODO>Anual</PERIODO>
<HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>
<ASIGNATURA>
<NOMBRE>LABORATORIO DE PROGRAMACION</NOMBRE>
<CREDITOS>4,5</CREDITOS>
<PROFESOR CATEGORIA="Titular">
Luis Hdez.</PROFESOR>
<PERIODO>Cuatrimestre 2</PERIODO>
<HORARIO>LMX 15-16</HORARIO>
</ASIGNATURA>
</CURSO>

El lenguaje XML XML: 39


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Una DTD para el documento de ejemplo
<!DOCTYPE CURSO
[
<!ELEMENT CURSO (ASIGNATURA)+> <!-- Una o más -->
<!ELEMENT ASIGNATURA (NOMBRE, CREDITOS, PROFESOR,
PERIODO, HORARIO)> <!-- Todos y en ese orden -->
<!ELEMENT NOMBRE (#PCDATA)> <!-- Sólo caracteres -->
<!ELEMENT CREDITOS (#PCDATA)>
<!ELEMENT PROFESOR (#PCDATA)>
<!ELEMENT PERIODO (#PCDATA)>
<!ELEMENT HORARIO (#PCDATA)>
<!ATTLIST PROFESOR CATEGORIA (Catedratico|Titular)
#REQUIRED EMAIL CDATA #IMPLIED TELEFONO CDATA
"912345670"> <!-- Teléfono de la Secretaría -->
]
>

El lenguaje XML XML: 40

Ejercicio: DTD para el documento

A partir del documento XML Equipos1.xml crea otro,


Equipos2.xml que incluya una DTD adecuada.

El lenguaje XML XML: 41


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Introducción a XSL

Lenguaje de estilo mucho más sofisticado que CSS.


Diseñado específicamente para la visualización de
documentos XML.
Dos son los pasos principales del uso de una hoja de
estilo XSL para la visualización de un documento XML:
1. Crear el archivo de hoja de estilo XSL.
2. Vincular la hoja de estilo XSL al documento XML.
Para esto último basta con incluir una instrucción de
procesamiento en el prólogo del documento XML similar
a la de las hojas CSS:
<?xml-stylesheet type="text/xsl" href="URL"?>

El lenguaje XML XML: 42

Introducción a XSL

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.
Una hoja de estilo XSL incluye una o más plantillas.
Cada plantilla contiene instrucciones para la
visualización de una determinada rama de elementos
del documento XML.
Inclusión de una plantilla XSL de ejemplo:
<?xml version="1.0"?>
<!-- File name: Asignatura.xml -->
<?xml-stylesheet type="text/xsl"
href="Asignatura.xsl"?>
...

El lenguaje XML XML: 43


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Ejemplo de plantilla XSL
<?xml version="1.0"?>
<!-- File name: Asignatura.xsl -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<H2>Descripci&#243;n de asignatura</H2>
<SPAN STYLE="font-style:italic">Profesor: </SPAN>
<xsl:value-of select="ASIGNATURA/PROFESOR"/><BR/>
<SPAN STYLE="font-style:italic">Asignatura: </SPAN>
<xsl:value-of select="ASIGNATURA/NOMBRE"/><BR/>
<SPAN STYLE="font-style:italic">Cr&#233;ditos:
</SPAN>
<xsl:value-of select="ASIGNATURA/CREDITOS"/><BR/>
<SPAN STYLE="font-style:italic">Horario: </SPAN>
<xsl:value-of select="ASIGNATURA/HORARIO"/><BR/>
<SPAN STYLE="font-style:italic">Periodo: </SPAN>
<xsl:value-of select="ASIGNATURA/PERIODO"/>
</xsl:template>
</xsl:stylesheet> Orden distinto del documento XML

El lenguaje XML XML: 44

Ejemplo de plantilla XSL

El resultado en IE es el siguiente:

El lenguaje XML XML: 45


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
La hoja de estilo XSL

Aparte del prólogo (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>

El lenguaje XML XML: 46

La hoja de estilo XSL

El atributo match indica la rama del árbol de elementos


del documento XML a la que se aplica la plantilla.
/ indica el documento entero; toda hoja de estilo XSL
debe tener una plantilla para el documento XML entero.
Una plantilla contiene dos tipos de elementos:
Elementos XML que representan marcas HTML:
<H2>Descripci&#243;n de asignatura</H2>
<SPAN STYLE="font-style:italic">Profesor: </SPAN>
Elementos XSL:
<xsl:value-of select="ASIGNATURA/PROFESOR"/>
Los elementos XSL se distinguen porque todos empiezan
por xsl:.

El lenguaje XML XML: 47


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
La hoja de estilo XSL

Los elementos deben ser elementos XML correctos.


Así, los elementos HTML vacíos no se pueden incluir
como se hace en HTML (por ejemplo, <BR>), sino que
deben tener marca de inicio y marca de cierre; eso sí, se
recurre a la abreviatura de XML para elementos vacíos:
<BR/>
Igual para los elementos XSL:
<xsl:value-of select="ASIGNATURA/PROFESOR"/>
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 HTML que el navegador
visualiza.
Supongamos que el documento XML fuera un poco
distinto (como se muestra a continuación).

El lenguaje XML XML: 48

La hoja de estilo XSL

Documento XML algo distinto:


<?xml version="1.0"?>
<!-- File name: Asignatura.xml -->
<?xml-stylesheet type="text/xsl"
href="Asignatura.xsl"?>
<ASIGNATURA>
<NOMBRE>INTRODUCCION A LA PROGRAMACION</NOMBRE>
<CREDITOS>9</CREDITOS>
<PROFESOR>
<PILA>Luis</PILA>
<APELLIDOS>Hern&#225;ndez Y&#225;&#241;ez
</APELLIDOS>
</PROFESOR>
<PERIODO>Anual</PERIODO>
<HORARIO>LMX 16-17</HORARIO>
</ASIGNATURA>

El lenguaje XML XML: 49


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
La hoja de estilo XSL

La misma hoja de estilo sirve. Para PROFESOR se


muestra en secuencia la información de sus elementos
hijos (PILA y APELLIDOS):

El lenguaje XML XML: 50

Visualización de varias asignaturas

Para aplicar la hoja de estilo anterior al documento


Curso.xml, el ejemplo de las secciones anteriores,
es necesario modificarla, ya que existe otro elemento
de mayor nivel: CURSO.
...
<H2>Descripci&#243;n de curso</H2>
<SPAN STYLE="font-style:italic">Profesor:
</SPAN>
<xsl:value-of
select="CURSO/ASIGNATURA/PROFESOR"/>
...
Al aplicar la hoja de estilo (Curso.xsl) sólo se visualiza
la información de una asignatura.
No se ha indicado en la hoja de estilo que se debe
repetir el proceso para las distintas asignaturas.

El lenguaje XML XML: 51


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Visualización de varias asignaturas

<xsl:template match="/">
<H2>Descripci&#243;n de curso</H2>
<xsl:for-each select="CURSO/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/>
<SPAN STYLE="font-style:italic">Cr&#233;ditos:
</SPAN>
<xsl:value-of select="CREDITOS"/><BR/>
<SPAN STYLE="font-style:italic">Horario: </SPAN>
<xsl:value-of select="HORARIO"/><BR/>
<SPAN STYLE="font-style:italic">Periodo: </SPAN>
<xsl:value-of select="PERIODO"/><P/>
</xsl:for-each>
</xsl:template>

El lenguaje XML XML: 52

Visualización de varias asignaturas

El lenguaje XML XML: 53


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Múltiples plantillas

<?xml version="1.0"?>
<!-- File name: Clase2.xsl -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-
xsl">
<xsl:template match="/">
<H2>Descripci&#243;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/>
.../...

El lenguaje XML XML: 54

Múltiples plantillas

.../...
<SPAN STYLE="font-style:italic">Cr&#233;ditos:
</SPAN>
<xsl:value-of select="CREDITOS"/><BR/>
<SPAN STYLE="font-style:italic">Horario: </SPAN>
<xsl:value-of select="HORARIO"/><BR/>
<SPAN STYLE="font-style:italic">Periodo: </SPAN>
<xsl:value-of select="PERIODO"/><P/>
</xsl:template>
</xsl:stylesheet>

El resultado es el mismo, pero ahora no hay que indicar


explícitamente la repetición para cada elemento
ASIGNATURA, ya que xsl:apply-templates indica que
se aplique la plantilla de ASIGNATURA para todos los
elementos de ese tipo que haya.

El lenguaje XML XML: 55


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Manipulación de datos

Se pueden filtrar u ordenar los datos del documento


XML antes de producir la visualización.
Se puede colocar la condición de filtrado detrás del
patrón de plantilla (valor de match) entre corchetes.
Por ejemplo, si se quiere mostrar sólo aquellas
asignaturas que tengan un determinado valor en un
elemento hijo, se puede escribir algo como lo siguiente:
<xsl:template
match="ASIGNATURA[CREDITOS='4,5']">
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"/>

El lenguaje XML XML: 56

Acceso a los atributos

Se puede acceder a los atributos de un elemento


colocando una @ delante del nombre del atributo:
<xsl:for-each
select="CURSO/ASIGNATURA[@Optativa='Si']">
<xsl:value-of select="PROFESOR/@EMAIL"/>

Terminamos este tema con un ejemplo completo que


hace uso de atributos y genera una tabla HTML
(el ejemplo se ha obtenido del libro XML Step by Step,
de Microsoft Press).

El lenguaje XML XML: 57


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un ejemplo completo de uso de XSL
<?xml version="1.0"?>
<!-- File Name: XslDemo06.xml -->
<?xml-stylesheet type="text/xsl"
href="XslDemo06.xsl"?>

<INVENTORY>
<BOOK InStock="yes">
<TITLE>The Adventures of Huckleberry
Finn</TITLE>
<AUTHOR Born="1835">Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK InStock="no">
<TITLE>Leaves of Grass</TITLE>
<AUTHOR Born="1819">Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
.../...
El lenguaje XML XML: 58

Un ejemplo completo de uso de XSL


<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>The Marble Faun</TITLE>
<AUTHOR Born="1804">Nathaniel
Hawthorne</AUTHOR>
<BINDING>trade paperback</BINDING>
<PAGES>473</PAGES>
<PRICE>$10.95</PRICE>
</BOOK>
<BOOK InStock="yes">
<TITLE>Moby-Dick</TITLE>
<AUTHOR Born="1819">Herman Melville</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>724</PAGES>
<PRICE>$9.95</PRICE>
</BOOK>
</INVENTORY>
El lenguaje XML XML: 59
Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un ejemplo completo de uso de XSL
<?xml version="1.0"?>
<!-- File Name: XslDemo06.xsl -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-
xsl">
<xsl:template match="/">
<H2>Books In Stock</H2>
<TABLE BORDER="1" CELLPADDING="5">
<THEAD>
<TH>Title</TH>
<TH>Author</TH>
<TH>Binding Type</TH>
<TH>Number of Pages</TH>
<TH>Price</TH>
</THEAD>

.../...

El lenguaje XML XML: 60

Un ejemplo completo de uso de XSL


<xsl:for-each
select="INVENTORY/BOOK[@InStock='yes']">
<TR ALIGN="CENTER">
<TD><xsl:value-of select="TITLE"/></TD>
<TD><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>

El lenguaje XML XML: 61


Universidad Complutense de Madrid Universidade Federal de Santa Catarina
Un ejemplo completo de uso de XSL

Otro
ejemplo

El lenguaje XML XML: 62

Universidad Complutense de Madrid Universidade Federal de Santa Catarina

Potrebbero piacerti anche