Está en la página 1de 37

CFGS ASIX

M04 Llenguatges de marques

Contenido
1.1 Concepto y ventajas. ........................................................................................................... 2
1.2 SGML, el origen ................................................................................................................... 3
1.3 Caractersticas de los lenguajes de marcas. ......................................................................... 4
1.4 Clasificacin de los lenguajes de marcas. ............................................................................. 5
1.5 Organizaciones y estndares. .............................................................................................. 6
1.6 Introduccin a los principales lenguajes de marcas.............................................................. 7
2.1 Que es XML ......................................................................................................................... 9
2.2 Documentos XML ................................................................................................................ 9
2.3 Estructura jerrquica de un documento XML. .................................................................... 10
2.4 Modelo de datos de un documento XML. Nodos. .............................................................. 11
2.5 Correccin sintctica ......................................................................................................... 17
2.6 Documentos validos. ......................................................................................................... 18
2.7 Validacin de documentos XML con DTD. .......................................................................... 18
7.3 Validacin de documentos XML con esquemas XML .......................................................... 29

CFGS ASIX

M04 Llenguatges de marques

Tema 1. Introduccin a los lenguajes


de marcas.
1.1 Concepto y ventajas.
En la comunicacin hablada utilizamos recursos como la entonacin, las pausas o
determinados gestos que acompaa al contenido de lo que queremos transmitir. De la misma
manera a la hora de utilizar el leguaje escrito utilizamos otros recursos, como la cursiva, los
signos de puntuacin, el subrayado etc para acompaar al contenido y darle un formato ms
legible. En resumen estamos aplicando un determinado formato a la informacin que
queremos transmitir para que el receptor del mensaje lo entienda mejor.
En el caso de las pginas web, son los lenguajes de marcas los que nos permiten aplicar dicho
formato a la informacin que queremos transmitir.
Aunque un documento que contenga nicamente texto seria perfectamente legible, no
obtendra del lector la misma atencin que si le aplicamos un formato para resaltar partes del
texto, cambiamos el color de determinadas partes o lo ordenamos en tablas para una mayor
compresin.
Si le aplicamos un lenguaje de marcas como por ejemplo HTML, obtenemos un archivo legible
pero ms difcil de interpretar por una persona, de esta tarea se encargara el navegador, que
interpretar las marcas del formato y las aplicara convenientemente al texto para dar lugar a
una pagina web que sern muchos ms amigable para las personas.
Una marca es una seal que colocada dentro de un texto, delimita una parte del mismo,
confirindole unas determinadas propiedades que el navegador ser capaz de interpretar y
aplicar al texto. Aunque existen marcas con otras utilidades.
Las marcas ms comunes estn formadas por una palabra que describe la funcin o el formato
que queremos aplicar encerrada entre los smbolos < y >. Como por ejemplo <html> o
<h2>.
Actividad1: Escribe el siguiente texto en un documeto.txt, despus gurdalo con la extensin
.html y abre ambos documentos con el navegador. Comprueba como cambia el formato del
texto.
<h1> Hola mundo pequeo</h1>
<h3> Hola mundo todava ms pequeo </h3>
Los lenguajes de marcas no se consideran leguajes de programacin y no debemos utilizar la
palabra programar cuando nos refiramos a lenguajes de marcas, ya que no disponen de los
elementos tpicos de estos como variables, sentencias de control, funciones etc.
Pero los lenguajes de marcas se pueden combinar dentro del mismo documento, con otros
lenguajes de programacin como JavaScript o PHP, que si que son lenguajes de programacin

CFGS ASIX

M04 Llenguatges de marques


con el fin de dar un formato ms atractivo y ordenado a la informacin mostrada o solicitada
por estos.
Un aspecto muy importante a tener en cuenta es el destinatario de la informacin que
tenemos que mostrar, ya que aunque lo ms normal seria un PC, cada vez esta ms extendido
el uso de navegadores en dispositivos mviles, o personas con discapacidades, perifricos,
robots de buscadores y otro tipo de programas. Con lo que el termino es preferible utilizar el
termino agente-usuario en lugar de navegador. Ya que no siempre utilizaremos estos
ltimos.
La presentacin de una misma web, el mismo texto con formato, ser mostrado con diferentes
resultados si lo abrimos con un navegador o con un programa para invidentes. Por ejemplo las
palabras en negrita sern sustituidas por un tono ms alto en el sintetizador.
El lenguaje de marcas es independiente del destinatario final, es el intrprete del lenguaje de
marcas quien se encarga de representar las marcas de la forma ms adecuada en cada caso.
HTML por ejemplo no especifica en sus etiquetas como sern representadas ms tarde por el
navegador. Esta es una de las razones por la que podemos encontrar ciertas diferencias en la
visualizacin de la misma pagina, mismo texto, por diferente navegadores.
Por otro lado para independizar an ms la representacin de la pgina web de su contenido
se cre el CSS, que no es un lenguaje de marcas sino de estilos. Mediante el CSS, podemos
especificar con mayor precisin y eficacia la representacin de la informacin, para cada
intrprete y para diferentes soportes, como monitores, dispositivos mviles, papel, voz, etc.
El mismo documento HTML tendr diferentes hojas de estilo para representar la misma web
en diferentes dispositivos, como mviles, tablets o PC.
Actividad2: Descarga el complemento User Agent Switcher o similar para Firefox y modifica
el agente de usuario, y comprueba como cambia el aspecto de un sitio que este configurado
para mviles. Tambin puedes abrir la misma web directamente con el PC y con tu mvil. (No
aproveches para mandar mensajes, actualizar tu estado en Facebook o cosas por el estilo).

1.2 SGML, el origen


En los aos 60 las empresas de publicacin y manejo de documentos electrnicos tenan el
problema de la falta de compatibilidad entre aplicaciones. El problema existente era que cada
aplicacin utilizaba sus propias marcas para describir los diferentes elementos, esto impeda el
intercambio de documentos entre plataformas.
IBM intento resolver estos problemas con un lenguaje de marcas denominado GML
(Generalized Markup Language)
GML independiza el documento del dispositivo que lo va a utilizar, usando marcas genricas.
Por otro lado GML incorpora marcas descriptivas para la estructura del documento que
permiten distinguir el texto, de las listas, las tablas, etc. El mismo documento pude entonces
ser utilizado por varios dispositivos, simplemente especificando un perfil para cada uno.
En 1986 GML pas a manos de ISO y se convirti en SGML (ISO 8879) software libre y cdigo
abierto.

CFGS ASIX

M04 Llenguatges de marques


Es importante tener en cuenta que SGML no es un lenguaje de marcas en el sentido estricto
sino un metalenguaje, es decir, un conjunto de normas que permiten crear otros lenguajes de
marcas. Esto se hace definiendo un vocabulario o conjunto de elementos a utilizar, y una
gramtica o conjunto de reglas que rigen el uso de los elementos y sus atributos.
HTML es uno de los lenguajes creados a partir de SGML.
Las ventajas de SGML son la reutilizacin de los datos, la integridad y control sobre los datos, la
portabilidad y la adaptabilidad. Como inconveniente tenemos su alta complejidad.
Un documento SGML consta de dos partes:

El prologo: contiene la estructura.


o La declaracin: indica que el documento es SGML y algunos parmetros de
configuracin y versin.
o La definicin del tipo de documento (DTD): indica la sintaxis particular del
lenguaje creado.
La instancia de documento: contiene los datos.

Actividad 3: Busca ejemplo de documentos SGML.

1.3 Caractersticas de los lenguajes de marcas.


1.3.1 Texto plano
Los archivos de texto plano son aquellos que estn compuestos nicamente por caracteres de
texto, a diferencia de los archivos binarios que pueden contener imgenes, sonidos, archivos
comprimidos, programas compilados.
Estos caracteres variaran dependiendo del alfabeto o idioma que se est utilizando.
Una de las principales ventajas de este tipo de ficheros es que pueden ser interpretados por un
simple editor de texto, a diferencia de los lenguajes de programacin que necesitan un
software especifico para su interpretacin.
Esto hace que sean independientes del sistema operativo o del programa con el que fueron
creados, facilitando as su interoperabilidad, siendo esto una gran ventaja para el intercambio
de informacin en Internet.

1.3.2 Compacidad
Las instrucciones de marcado se mezclan con el propio contenido, por ejemplo, <h2>Hola
Mundo</h2>
El cdigo entre corchetes como <h2>, son instrucciones de marcado, tambin llamado
etiquetas. Esta etiqueta hace referencia al tamao del texto que est ente su etiqueta de inicio
y la de fin. El texto entre las marcas es el contenido del documento.

CFGS ASIX

M04 Llenguatges de marques


1.3.3 Independencia del dispositivo final.
El mismo documento pude ser interpretado de diferentes formas dependiendo del dispositivo
final, as tendremos diferentes resultados si utilizados una Tablet, un mvil o un PC.

1.3.4 Especializacin
Inicialmente los lenguajes de marcas se idearon para visualizar documentos de texto, pero
progresivamente se han empezado a utilizar en ms reas, como grficos vectoriales, notacin
cientfica, interfaces de usuarios, sntesis de voz, etc.

1.3.5 Flexibilidad.
Los lenguajes de marcas se pueden combinar en el mismo archivo con otros lenguajes, como
HTML con PHP o con JavaScrip existiendo etiquetas especificas para marcar cuando empiezan
y terminan las instrucciones del lenguaje de programacin.
XML ha permitido que se puedan combinar varios lenguajes de marcas diferentes en un mismo
archivo, como en el caso de XHTML con MathML y SVG.

1.4 Clasificacin de los lenguajes de marcas.


Normalmente los lenguajes de marcas se suelen clasificar en tres tipos atendiendo al tipo de
marcas que utilizan.

De presentacin:
Indican el formato del texto o tipografa, sin especificar su estructura, por ejemplo
aumentar el tamao de la fuente, centrar o cambiar a negrita.
Esta categora incluye los lenguajes de procedimiento que agrupan varias marcas de
presentacin en una macro.
El software que representa el documente debe interpretar el cdigo en el mismo
orden en que aparece.
Los procesadores de texto y en general las aplicaciones de edicin profesional utilizan
este marcado.
Descriptivo, estructural o semntico:
Indican las diferentes partes en las que se estructura el documento, pero sin
especificar cmo deben representare ni en que orden.
Estos lenguajes crean documentos con estructuras en rbol que almacenan
informacin, por lo que son bases de datos, sin embargo no usan tablas ni respetan las
reglas de integridad propias de las BDR, por ello se les llama bases de datos semiestructuradas.
Hibrido: Lenguajes que contienen marcas de los dos tipos anteriores indistintamente.

Actividad: Busca en internet ejemplos de este tipo de lenguaje de marcas.


Una clasificacin de lenguajes de marcas atendiendo a su funcionalidad puede ser:
Para crear documentacin electrnica.
Tecnologas de Internet

CFGS ASIX

M04 Llenguatges de marques

De propsito especifico (formulas matemticas, partituras musicales, mapas


conceptuales)
Actividad4: Busca en internet ejemplos de este tipo de lenguaje de marcas (Ejemplos son ms
de tres no seis vagos).

1.5 Organizaciones y estndares.


La estandarizacin es el proceso de especificacin de normas que garantizan el correcto
funcionamiento de elementos construidos de forma independiente.
Aplicando a los lenguajes de marcas, seria el desarrollo de pginas web atendiendo a las
especificaciones oficiales del lenguaje utilizado.
Para la definicin de estas normas existen organismos internacionales, nacionales o entidades
privadas.
En materia de software son W3C, ISO y Open Source.
Toda organizacin de estndares pretende desarrollar normas que sean de amplio
seguimiento por parte de la comunidad, para lo cual es imprescindible el consenso con las
empresas involucradas como los navegadores, buscadores, desarrolladores web y fabricantes
de dispositivos mviles. Normalmente entre sus miembros se encuentran las principales
empresas del sector.

CFGS ASIX

M04 Llenguatges de marques

1.6 Introduccin a los principales lenguajes de marcas

Como ya hemos vistos los lenguajes de marcas nacen con el SMGL, del cual derivan
directamente algunos lenguajes como HTML. Tambin se cre a partir de el por simplificacin
otro metalenguaje, XML, ms fcil de usar y entender. De XML derivan muchos lenguajes de
marcas como XHTML, RSS etc.

1.6.1 HTML.
HTML es un lenguaje destinado a la creacin de pginas web, que nos permite mezclar en
un mismo documento, texto y contenido multimedia. Adems dispone de una potente
herramienta que son los enlaces, para conectar con otras paginas cuyo contenido este
relacionado. Suponiendo una gran ventaja frente al formato escrito en papel.
HTML fue creado por Tim Berners a principio de los 90 con objetivos divulgativos. No pens
que la web llegara a ser un rea de ocio, negocio y un medio de comunicacin tan
extendido y potente.
Con el tiempo y para adaptarse a todos sus nuevos propsitos se han ido incorporando
modificaciones y nuevos elementos pada dotar a HTML de ms recurso.
Esta evolucin poco planificada y a veces anrquica de HTML, ha supuesto una serie de
inconvenientes y deficiencias, que han sido superados con la introduccin de otras
tecnologas capaces de mejorar el funcionamiento y la organizacin de los sitios Web.
Como puede se CSS, PHP, Java y complementos instalados en los navegadores.
Otro problema de HTML, es que cuando se combina con CSS, dependiendo de los
navegadores hacen que la misma web tenga interpretaciones diferentes, debido al
diferente ritmo de incorporacin de las nuevas propiedades de CSS. Esto ha provocado la
aparicin de los hacks que son pequeos trozos de cdigo para conseguir un
comportamiento homogneo de los navegadores.

CFGS ASIX

M04 Llenguatges de marques


Hay muchas herramientas modernas para la creacin de paginas web que aumentaran
nuestra produccin y simplificaran el trabajo como el Dreamwaver, aunque siempre
podremos trabajar con editores de texto para desarrollo de web como Notepad++ (mucho
mejor para empezar y comprender todo el cdigo que creamos).

1.6.2 XML
Es una simplificacin y adaptacin de SGML que permite definir lenguajes especficos. Por
tanto, XML no es un lenguaje en particular, si no una manera de definir lenguajes para
diferentes necesidades, un metalenguaje.
Algunos de los lenguajes en los que se basan XML, para su definicin son XHTML, SVG,
MathML, RSS.
Sus caractersticas principales son:

Extensible: puede crear nuevas etiquetas.


Verstil: separa contenido, estructura y presentacin
Estructurado: se pueden modelar datos a cualquier nivel de complejidad
Validable: cada documento se puede validar frente a un DTD/Schema para comprobar
que esta correctamente creado.
Abierto: independiente de empresas, SO, lenguajes de programacin o entornos de
desarrollo.
Sencillo: fcil de aprender y usar.

XML no solo se utiliza en Internet, sino que se esta convirtiendo en un estndar para el
intercambio de informacin estructurada entre diferentes plataformas. Se puede usar en bases
de datos ligeras, editores de texto, hojas de clculo, transacciones comerciales y en general en
cualquier campo donde se necesita almacenar informacin si las restricciones de un SGBD
relacional.

CFGS ASIX

M04 Llenguatges de marques

Tema 2 XML, almacenamiento de


datos.
2.1 Que es XML
XML consiste en un formato de almacenamiento de informacin a base de etiquetas o
marcas definidas por el usuario, es un lenguaje parecido al HTML, esta diseado para
almacenar datos no para mostrar datos, al ser un metalenguaje las etiquetas no estn
predefinidas sino que cada usuario se creara las que necesites.
Por el hecho de ser un lenguaje de marcas deber cumplir una serie de reglas que harn
que un documento XML este bien formado: la forma en la que se abren y se cierran las
etiquetas, la forma en la que se escriben sus atributos, al existencia de un elemento que los
contenga a todos, la aparicin de comentarios y su formato, etc.
Tambin aprenderemos mecanismos para validar documentos XML. Esto significa crear un
lenguaje de marcas para un uso especfico, ya que se indica qu elementos y atributos
pueden aparecer (vocabulario), el orden en el que aparecen qu elemento contiene a que
cual, que atributos tienen un elemento, qu elementos o atributos son optativos y cuales
son obligatorios etc.
Veremos dos tcnicas: DTD y los esquemas XML. La primera aunque ya obsoleta estaba
muy extendida al principio del 2000. La segunda es una tcnica ms sofisticada que permite
unos niveles de definicin mucho ms precisos, se revisara en profundidad.

2.2 Documentos XML


El XML es un estndar o norma, no una implementacin concreta de un lenguaje.
Es un metalenguaje de marcas, con lo que no dispone de un conjunto fijo de marcas, como
pasa con HTML. Al contrario, permite a los desarrolladores crear los elementos que
necesiten y con la estructura que mejor les convenga en ese momento.
Define una sintaxis general para maquetar datos con etiquetas sencillas y compresibles al
ojo humano, Provee, as mismo, un formato estndar para documentos informticos. Es un
formato flexible, de manera que puede ser adaptado al campo de aplicacin que deseemos.
Ejemplo:
Si queremos hacer un documento para la banca tendremos etiquetas como <inters>
<plazo> <cuenta> o <desfalco>
Si queremos hacer un documento para el Legue of legends tendremos etiquetas como
<campen>, <habilidad>, <objeto> o <conjuro>.
Que no es XML
No es un lenguaje de programacin, de manara que no existen compiladores de XML
que generen ejecutables a partir de un texto XML.
No es un protocolo de comunicacin, de manara que no enviar datos por nosotros a
travs de Internet, como tampoco lo hace HTML. (Protocolos de comunicacin son
HTTP, FTP y muchos otros).

CFGS ASIX

M04 Llenguatges de marques


No es un gestor de bases de datos. Una base de datos relacional puede contener
campos de tipo XML. Existen incluso bases de datos XML nativas, que todo lo que
almacenan son documentos con formato XML. Pero XML en si mismo no es una base
de datos.
Como ya hemos comentado otras veces, XML tiene un formato de texto plano con lo que es
adecuado para almacenar y transmitir informacin, ya que con un simple editor de texto y en
cualquier plataforma podemos acceder a ellos, y al ser relativamente ligeros, se pueden enviar
aunque nuestra conexin a internet no sea buena. Suelen tener la extensin .xml aunque no es
imprescindible ya que lo abriremos con cualquier editor de texto sin problemas.
Las etiquetas y sus atributos, son meta-informacin, es decir, informacin sobre los datos. Nos
permiten estructura el documento y facilitan su procesamiento, pero no son los datos en si
mismo.

2.3 Estructura jerrquica de un documento XML.


En un documento XML la informacin se organiza de forma jerrquica, de manera que los
elementos del documento se relacionan entre s mediante relaciones de padres, hijos,
hermanos, ascendentes descendentes etc.
Padre

Hermano Menor
Hermano Mayor

Hijo

Esta estructura jerrquica se denomina de rbol. A las partes que tienen hijos se le denominan
nodos intermedios o ramas, mientras a las que no tienen se les denomina nodos finales u
hojas.
Ejemplo: Si queremos tener una agenda, crearemos el elemento <persona> , que contiene los
elementos <nombre>, <apellidos> y <telfonos> que a su vez contendr los campos <mvil> y
<fijo>.
<persona>
<nombre> Juan </nombre>

10

CFGS ASIX

M04 Llenguatges de marques


<apellidos> Ramrez Snchez </apellidos>
<telfonos>
<mvil> 67338892 </mvil>
<fijo> 98 4335211 </fijo>
</telfonos>
</persona>
Actividad1: Representa este esquema en formato rbol. Respecto del nodo apellidos di la
relacin que tienen con el los dems nodos. Cambia la estructura para aadir
<telfono_trabajo>, <mail_personal> y <mail_trabajo>.
Actividad2: Haz el esquema para almacenar el men diario de un restaurante.

2.4 Modelo de datos de un documento XML. Nodos.


La estructura de un documento XML esta formada por los siguientes tipos de nodos:

Raz: Por encima de cualquier elemento se ubica el nodo, raz, que se designa como
/. No es un componente que tenga representacin dentro del documento XML, pero
se utilizar ms adelante como punto de partida para recorrer el rbol XML y ubicar el
resto de nodos.
Elementos: Es la unidad bsica de un documento XML. Son los
delimitadores/contenedores de la informacin. Al igual que los elementos de HTML, se
identifican por una etiqueta de apertura y otra de cierre. Lo que esta entre ambas es el
contenido de ese elemento, que pude ser un dato, otros elementos o estar vaco.
<fijo> 98 4335211 </fijo>

Apertura Contenido Cierre


Algunos tipos de elementos especiales son:
1. Elemento raz: todo documento XML bien formado debe tener un nico
elemento raz que contiene a todos los dems (no tiene ni ascendentes, ni
hermanos, solo descendientes)
2. Elementos sin contenido: aunque pude tener atributos, se abre y se cierra con
una sola etiqueta.

Ejemplo: <separador />


Atributos: Son pares nombre-valor que permiten especificar datos adicionales de un
elemento. Se ubican en la etiqueta de apertura del elemento. Para asignar un valor a
un atributo se utiliza el signo igual. Todos los atributos, independientemente del tipo
de datos que representen (numricos, letras, smbolos) se trataran como texto y
aparecern entre comillas simples o dobles.

11

CFGS ASIX

M04 Llenguatges de marques

Se usan fundamentalmente para almacenar informacin sobre la informacin,


contenida en el documento.
Ejemplo: <peso unidades=Kg> 80 </peso>
Tambin se usan para recoger informacin identificativa del elemento que permita
distinguirlo de otro elemento.
Ejemplo:
<capitulo materia=Lenguaje Marcas>
<tema> Introduccin </tema>
<capitulo_1 subapartado=1> Conceptos y ventajas </capitulo_1>
<capitulo_1 subapartado=2> SGML el origen </capitulo_1>
</capitulo>
Texto: El texto, como tipo de nodo representa los datos del documento XML, puede
aparecer, bien como contenido de un elemento, bien como valor de un atributo. No
pude aparecer en ningn otro lugar.
Para representar los espacios en blanco tenemos cuatro tipos de caracteres en XML:
El tabulador
Nueva lnea
Retorno de carro
Espacio

\t
\n
\r
\s

&#9;
&#10;
&#13;
&#32;

TAB
LF
CR
Space

Dentro del contenido se representaran como estn y as sern representados por el


procesador, pero como valor de un atributo, los espacios en blanco adyacentes se
consideraran uno solo. Los espacios en blanco entre elementos sern ignorados.
Comentarios: Empiezan por los caracteres <!-- y se cierran con los caracteres -->.
Dentro de ellos se pude escribir cualquier signo (sin necesidad de utilizar caracteres de
escape) excepto el doble guion (--) que confundir al analizado con un posible cierre del
comentario.
Los comentarios pueden estar en cualquier lugar del documento, menos dentro de una
etiqueta ya sea de apertura o cierre.
Los comentarios son fundamentales para la compresin del documento XML, ya que
explicaremos por que y para que sirven cada uno de los elementos.
Hay que tener en cuenta que puede pasar tiempo hasta que volvemos a ver la estructura
o puede que lo utilicen otros programadores.
Instrucciones de procesamiento: Empiezan por <? Y terminan por ?>. Son instrucciones
para el procesador de XML, de manera que son independientes de l. No forman parte del
contenido del documento XML. Se utilizan para dar informacin a las aplicaciones que
procesan el documento. La versin de XML que utilizamos, el tipo de codificacin y por
ltimo si no tiene asociado ningn fichero de definicin, pondremos yes si no lo tiene y
obviaremos el atributo si lo tiene. Estos dos ltimos atributos son opcionales.
Ejemplo: <?xml version=1.0 encoding=iso-8859-1 standalone=yes?>
Entidades predefinidas: Representan caracteres especiales de marcado, pero son
interpretados como texto por parte del procesador.

12

CFGS ASIX

M04 Llenguatges de marques


Entidad
&amp;
&lt;
&gt;
&apos;
&quot;

Carcter
&
<
>

Ejemplo: <juego> Command &amp; Conquer </juego>


El analizador mostrara por pantalla = Command & Conquer
Secciones CDATA: Es como los comentarios, el analizador no procesara el texto que
hay entre sus etiquetas de inicio y fin. No pueden aparecer ni antes del elemento raz, ni
despus de su cierre. Utiliza la etiqueta <![CDATA[ para inicio y ]]> para sealar el fin.
Definicin de tipo de documento (DTD): Permite definir reglas que fuercen ciertas
restricciones de un documento XML, aunque su existencia no es obligatoria. Un
documento XML bien formado que tiene asociado un documento de declaracin de tipos
y cumple con las restricciones all declaradas se dice que valido. Debe aparecer en la
segunda lnea del documento XML, entre la instruccin de procesamiento inicial y el
elemento raz.

Instruccin de procesamiento
Ejemplo:
<? xml versin =1.0 encoding=UTF-8 standalone=yes?>
<!DOCTYPE agenda SYSTEM agenda.dtd>
Inclusin de un DTD externo
<!--Documento de gestin de agenda -->
Comentario
<?xml-stylesheet type=texte/css href=agenda.css?>
<agenda>
Raz
<persona>
<nombre>Bruce</nombre>
Atributo
<apellido>Wayne</apellido>
<telefono tipo=movil> 933234234</telefono>
</persona>
Elementos
<persona>
<nombre>Lucius</nombre>
<apellido>Fox</apellido>
<telefono tipo=fijo> 32932032</telefono>
</persona>
</agenda>
Cierre Raz
Nombres XML: En XML se utilizan una serie de reglas para definir nombres correctos
de elementos, son las mismas que para los atributos.
o Puede empezar con una letra (del alfabeto de cualquier idioma),
subrayado, o dos puntos (esto esta desaconsejado ya que se reserva para
los espacios de nombres).

13

CFGS ASIX

M04 Llenguatges de marques


o
o
o

Los siguientes caracteres pueden ser letras, dgitos, subrayados, guiones


bajos, comas o dos puntos.
Los nombres que comienzan por XML estn reservados para el estndar.
No pueden tener espacios en blanco, ni ningn otro carcter no
mencionado anteriormente como: $@....

Actividad3:
Nombre
<Nombre_Persona> </Nombre_persona>
<1_Codigo> </1_Codigo>
<da/mes/ao> </da/mes/ao>
<> </>
<Delegado provincial> </Delegado provincial>
<Cdigo-Interno> </Cdigo-interno>

Correctos Si/No y por que

Uso de los elementos frente a uso de atributos.


Los elementos:
o Se emplean para representar jerarquas o contenido de unos dentro de
otros.
o Se pueden extender con otros elementos en su interior
o El orden en el que aparecen es representativo.
o Pueden tener atributos.
o Puede haber mltiples ocurrencias de un elemento.
Los atributos:
o Van asociados a los elementos.
o Son modificadores de la informacin.
o Se suelen usar para registrar metadatos.
o El orden en que aparecen dentro del elemento al que van asociados no es
representativo.
o No se pueden extender con otros elementos contenidos en su interior.
o Un atributo no puede tener diferentes valores dentro de un mismo
elemento.
Espacio de nombre: Es un mecanismo para evitar conflictos de nombres, de manera
que se puedan diferenciar elementos de atributos dentro de un mismo documento XML,
que tengan idnticos nombres pero diferentes definiciones.
Se declaran como atributo de elementos de la siguiente forma:
<nombre_elemento xmlns:prefijo=URI_del_espacio_de_nombres>
Y se usan anteponiendo a elementos y atributos con el prefijo asociado al espacio de
nombre adems del carcter dos puntos :.
Uso de los espacios de nombres:
Un ejemplo sera una instancia XML que contuviera referencias a un cliente y a un
producto solicitado por ste. Tanto el elemento que representa el cliente como el que
representa el producto pueden tener un elemento hijo llamado numero_ID. Las
referencias al elemento numero_ID podran ser ambiguas, salvo que los elementos, con

14

CFGS ASIX

M04 Llenguatges de marques


igual nombre pero significado distintos, se llevaran a espacios de nombres distintos que
los diferenciaran.
Ejemplo:
<?xml version=1.0?>
<cli:cliente xmlns:cli=cliente
xmlns:ped=pedido>
<cli:numero_ID>1232654</cli:numero_ID>
<cli:nombre>Juan Ramrez Snchez</cli:nombre>
<cli:telefono>99999999</cli:telefono>
<ped:pedido>
<ped:numero_ID>6523213</ped:numero_ID>
<ped:articulo>Mandoble</ped:articulo>
<ped:precio moneda=euro>187,90</ped:precio>
</ped:pedido>
</cli:cliente>
Segn los estndares se suelen poner nombres complicados en las URI para evitar que se
repitan, aunque no hay sistemas que comprueben la duplicidad, como poner direcciones
URL inexistentes o nombre compuesto:
<dept: departamentos xmnls:dept=empresa:espacios:dept>
O
<cliente
xmlns=http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/cliente
xmlns:ped=http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/pedido>
.

.
.
</cliente>
Los atributos pueden pertenecer al mismo espacio de nombres al que pertenece el
elemento al que estn asociados o a otro diferente. La definicin es la misma que con los
elementos, anteponiendo el prefijo del espacio de nombres y los dos puntos al nombre
del atributo. Si no aparece ningn prefijo del espacio de nombres el atributo no
pertenecer a ningn espacio de nombres.
Actividad4: Explica a qu espacio de nombre pertenecen los elementos y los atributos de
este cdigo.
<emp : empleado xmlns:emp=empresa
xmlns : trabajo=trabajo_empresa>
<emp : datosPersonales trabajo:empno=482>
<emp : departamento deptno=10>Ventas</emp:departamento>

15

CFGS ASIX

M04 Llenguatges de marques


<emp : nombre>John</emp:nombre>
<emp : apellido>Connor</apellido>
</emp : datosPersonales>
</emp : empleado>
Elemento/atributo

Espacio de nombres

Dos atributos con el mismo nombre pero con distinto prefijo de espacio de nombres son
diferentes, lo que significa que pueden estar asociados al mismo elemento.
<emp : empleado xmlns : emp=empresa
xmlns : sec=seccin
<emp: datosPersonales emp : empno =2819 sec : empno=003>
<emp : departamento deptno=10> Informtica</emp : departamento>
<emp : nombre> Juan </emp : nombre>
<emp : apellidos> Ramrez Snche </emp : apellidso>
</emp : datos personales>
</emp : empleado>
Espacio de nombres por defecto: Es aquel en el que no se define un prefijo. El mbito
de aplicacin de este espacio de nombres es el del elemento en el que se ha declarado y
sus elementos descendientes pero no sus atributos.
Si se tuviera que aadir un espacio de nombres con prefijo a un documento XML grande
ya creado, habra que ir aadiendo el prefijo a los elementos atributos, algo tedioso y con
posibilidad de cometer errores. As se puede evitar tener que escribir el prefijo.
Atributos especiales:
o xml:space : le indica a la aplicacin, si los espacios en blanco del
contenido textual de un elemento son significativos.
Ejemplos:
(Preservar espacios en blancos)
<?xml version=1.0?>
<textos>
<cita> A quien madruga Dios le ayuda ?</cita>
<poema xml:space=preserve>
El monte es verde,
el agua incolora
y a mi no se me ocurre una rima
</poema>
</textos>

16

CFGS ASIX

M04 Llenguatges de marques


o

xml:lang : permite especificar el idioma en el que esta escrito el


contenido de un documento o de sus elementos individuales. Sus
posibles valores son, Un cdigo de dos letras (ISO 639). en para el ingles,
aunque se puede usar sub-cdigos como en-GB o li para identificar en
ingles de Inglaterra o el ingles americano. Tambin se puede utilizar un
identificador registrado por la IANA (Internet Assigned Numbers
Authority), estos identificadores empiezan por los prefijos i- o I-. Tambin
se pueden utilizar prefijos definidos por los usuarios, estos empezaran por
los prefijos x- o X-.

Ejemplo: <topic id=topic_3FD87D xml:lang=en>


Actividad5: Busca en internet como seria los cdigos para el espaol, de Espaa y el de
Mxico. Como seran los prefijos para el cataln, el balear y el valenciano.
Analizador XML (Parse XML)
Es un procesador que lee documentos XML y determina la estructura y propiedades de
los datos en l contenidos. Tambin suelen generar el rbol jerrquico asociado, lo que
permite ver los datos en un navegador o ser tratados por cualquier aplicacin.
Si comprueba las reglas de buena formacin y adems valida el documento contra un
DTD o esquema, es un analizador validador. Estos analizadores tambin comprueban la
semntica del documento e informan de los errores existentes.
Existen validadores en lnea como XML validation.
Actividad6: valida alguno de los ejemplos anteriores.
Editores XML:
Existen muchas herramientas para el manejo de XML y sus tecnologas asociadas.
Algunas son muy sofisticadas y en general con licencias propietarias, pero tambin las
hay ms sencillas de cdigo abierto y gratuitas.
Algunos ejemplos son: XML Spy, oXygen entre las de pago y xml copy editor y XML Pad
Edition entre las libres.

2.5 Correccin sintctica


La especificacin de XML define la sintaxis que el lenguaje debe seguir:
Como se delimitan los elementos con etiquetas
Qu formato puede tener una etiqueta.
Qu nombres son aceptables para elementos
Dnde se colocan los atributos.
Un documento XML se dice que esta bien formado cuando cumplas las reglas establecidas por
el W3C en las especificaciones para XML. Estas reglas son muy numerosas, aunque la mayora
ya las hemos visto:
- El documento debe empezar por una instruccin de procesamiento, que indique la
versin de XML, la codificacin y si tiene archivos externos.

17

CFGS ASIX

M04 Llenguatges de marques


- Debe existir un nico elemento raz.
- Los elementos que no sean vacos tienen que tener una etiqueta de apertura y cierre.
- Los elementos deben aparecer correctamente anidados, en cuanto a su apertura y
cierre, no pueden solaparse.
- Los nombres de los elementos y atributos son sensibles a maysculas y minsculas.
- Los valores de los atributos deben aparecer entre comillas simples o dobles pero no
deben mezclarse.
- No puede haber dos atributos con el mismo nombre asociado al mismo elemento.
- No se pueden introducir instrucciones de procesamiento ni comentarios en ningn
lugar del interior de las etiquetas de apertura o cierre de los elementos.
- No puede haber nada antes de la instruccin de procesamiento.

Actividad8: Encuentra los errores.


<?xml versin = 1.0 encoding = UTF-8 standalone = yes >
<!-- Esto es un ejercicio bastante complicado -->
<Barco>
<cubierta numcubierta = 1>
<seccin numSeccion = 1>
<camarote idCamarote =1> 20 </camarote>
<numCamas tipo=matrimonio tipo=sencilla> 2 </NumCamas>
</cubierta>
</seccin>
</Barco>

2.6 Documentos validos.


En documentos XML es vlido si existen unas reglas de validacin, por ejemplo un documento
DTD, asociadas a l, de manera que el documento deba cumplir dichas reglas. Estas reglas
especifican la estructura gramatical y sintctica que debe cumplir el documento.
Todo documento valido est bien formado, pero todo documento bien formado no tiene por
qu ser valido.

2.7 Validacin de documentos XML con DTD.


Un DTD, es una descripcin de la estructura de un documento XML. Se especifica qu
elementos tienen que aparecer, en qu orden, cules son optativos, cules obligatorios, que
atributos tiene cada elementos, etc.
Aunque en la actualidad este mtodo esta obsoleto se utilizo mucho a principio del 2000 y
muchos documentos se han quedado validados mediante DTD.
Actividad9. Busca documentos de validacin DTD por internet.

18

CFGS ASIX

M04 Llenguatges de marques


2.7.1 Estructura de un DTD. Elementos.
El DTD puede estar integrado en el propio documento XML. En un archivo independiente e
incluso puede tener una parte interna y otra externa. Esta opcin del documento externo
permitir la reutilizacin del DTD para diferentes documentos XML, facilitando modificaciones
y estndares.
Ejemplo documento XML con DTD incorporado.
<?xml version='1.0'?>
<!DOCTYPE postal[
<!ELEMENT postal (nombre, calle, ciudad, pais, CP)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>
< postal>
<nombre>Garen</nombre>
<calle>C Ronda, 3</calle>
<ciudad>Demacia</ciudad>
<pais>Demacia</pais>
<CP>18465</CP>
</ postal>
La declaracin del DTD se har al principio del documento XML y las reglas que los constituyen
aparecern o a continuacin o en documento aparte.
En funcin del tipo de DTD la sintaxis varia, si es interno, externo o mixto y si es para uso
privado o pblico.

Sintaxis

Tipo de DTD

<!DOCTYPE elemento_raz [reglas]>

Interno, privado

<!DOCTYPE elemento_raz SYSTEM URL>

Externo, privado

<!DOCTYPE elemento_raz SYSTEM URL [reglas]>

Mixto, privado

<!DOCTYPE elemento_raz PUBLIC FPI URL>

Externo, publico

<!DOCTYPE elemento_raz PUBLIC FPI URL [reglas]>

Mixto, publico

Para el uso pblico debemos poner el FPI (Formal Public Identifier- Identificador Pblico
Formal) una etiqueta que identifica al DTD de manera universal.
Al declarar un documento pblico es obligatorio que el DTD sea independiente con lo que no
tiene sentido la combinacin interno y publico.

19

CFGS ASIX

M04 Llenguatges de marques


Estructura del FPI
Esta compuesto por 4 campos separados por el carcter //.
1er campo norma formal o no formal:
Si el DTD no ha sido aprobado por una norma formal, como por
ejemplo un DTD escrito por uno mismo, se escribe un signo menos.
Si ha sido aprobado por un organismo no oficial, se pone un signo ms.
Si ha sido por un organismo oficial se escribe una referencia al
estndar.
2 campo nombre del organismo responsable del estndar.
3er campo tipo del documento que se describe, suele incluir un nmero de versin.
4 campo es el idioma del DTD.
Ejercicio: Explica la siguiente estructura de FPI.
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd>

Actividad9: Crea la estructura del FPI con los siguientes datos. El elemento raz se llamara
planeta, Se trata de un DTD creado por mi y la ubicacin de las reglas del DTD es externa, en
un archivo llamado planetas.dtd que se encuentra en el mismo directorio que el archivo XML.
Componentes de un DTD.
Los DTD tienen cuatro posibles componentes, elemento, atributo, entidad y notacin.
Elemento:
Sintaxis general <!ELEMENT nombreElemento modeloContenido>
El nombre del elemento tiene que ser igual al correspondiente del documento XML.
El modelo del contenido puede indicar:
Una regla:
o ANY (cualquier cosa): se puede utilizar para construir el DTD para dejar la
descripcin de un elemento como vlida en cualquier caso, eliminando
cualquier comprobacin sintctica. Es un comodn que no debe aparecer en el
DTD definitivo.
o EMPTY (elemento vaco): describe un elemento sin descendientes.
Un ejemplo seria el elemento <br /> de HTML. Su declaracin seria:
<!ELEMENT br EMPTY>
Datos (caracteres), sean textuales, numricos o cualquier formato que no contenga
marcas (etiquetas). Se describe como #PCDATA (Datos de Caracteres Procesados) y
debe aparecer entre parntesis.
Ejemplo: Si queremos tener un DATA cuya etiqueta sea Nombre en el DTD
pondramos:
<!ELEMENT Nombre (#PCDATA)>
Lo que correspondera en nuestro documento XML a:
<Nombre> Juan Ramrez Snchez Villalobos </Nombre>
Elementos descendientes. Su descripcin debe aparecer entre parntesis y se basa en
las siguientes reglas:

20

CFGS ASIX

M04 Llenguatges de marques


o Cardinalidad de los elementos: Para indicar el numero de veces que puede
aparecer un elemento o secuencia de elementos tenemos los siguientes
smbolos:
Smbolo

Significado

El elemento o secuencia puede aparecer 0 o 1 vez

El elemento o secuencia puede aparecer 0 o N veces

El elemento o secuencia puede aparecer 1 o N veces

o Secuencias de elementos: En las secuencias de elementos se utilizan smbolos


para indicar el orden en que un elemento debe aparecer o bien si aparece
como alternativa a otro.
Smbolo
Significado
A,B

El elemento B aparecer a continuacin del elemento A

A|B

Aparecer el elemento A o B pero no ambos.

Se pueden combinar el uso de los smbolos de Cardinalidad de los elementos con los de
secuencia.
Estas reglas se pondrn en la declaracin del elemento padre, seguido de los elementos
que lo componen con sus reglas asociadas.
Ejemplo. Si queremos almacenar un equipo de futbol tendramos como raz Equipo. Luego
tendramos un portero obligatoriamente, defensas, delanteros y centro campistas que
pueden aparecer mnimo una vez y muchas como mximo, entrenador que tiene que
tener seguro y segundo entrenador que puede no tenerlo pero solo tendr uno como
mximo.
<!DOCTYPE Equiopo[
<!ELEMENT Equipo (portero, defensas+, delanteros+, centrocampistas+, entrenador,
segundoEntrenador?>
< !ELEMENT portero (#PCDATA) >
< !ELEMENT defensas (#PCDATA) >
.
.
.
]>
Actividad10: Escribe el DTD para definir un correo electrnico, donde el para tiene que
aparecer seguro, el CC y el CCO no tienen por qu aparecer y siempre tienen que tener
cuerpo y asunto.

21

CFGS ASIX

M04 Llenguatges de marques


Ejemplo: Un contrato tiene una lista de clausulas. Cada una de las clausulas esta
compuesta de varios epgrafes y sus desarrollos y concluye con un nico eplogo.
<!DOCTYPE Contrato[
<! ELEMENT contrato (clausula)+>
<! ELEMENT clausula ((epgrafe, desarrollo)+, epilogo)>
<! ELEMENT epgrafe (#PCDATA)>
<! ELEMENT desarrollo (#PCDATA)>
<! ELEMENT epilogo (#PCDATA)>
]>
Contenido Mixto: Mezcla texto con elementos descendientes.
Ejemplo: queremos crear un elemento prrafo <prrafo> como el de un editor de
texto, en el que podremos tener texto sin formato, texto en negrita <negrita> o texto
en cursiva <cursiva>. Estas dos etiquetas podrn tener a su vez texto sin formato o
bien la otra etiqueta. Las reglas que describen este comportamiento son:
<! ELEMENT prrafo (negrita | cursiva | #PCDATA)*>
<! ELEMENT negrita (cursiva | #PCDATA)*>
<! ELEMENT cursiva (negrita | #PCDATA)*>
Actividad11: Escribe un modelo que cumpla el DTD anterior, hablando sobre un libro y el autor
del mismo. El titulo de la saga ira en negrita, los nombres propios en cursiva y los ttulos de
libros en cursiva y negrita.
Actividad12: Queremos representar el elemento <grupoSanguineo> que tenga como
descendiente uno solo de los cuatro grupos (A, B, AB O) y en cada caso pueden ser (+ o -) y
puede o no estar. Como representaras las reglas de validacin en un DTD.
<!ATTLIST> Es una declaracin de tipo atributo. Indica la existencia de atributos de un
elemento en el documento. Normalmente se declara un nico para cada elemento, aunque se
puede declarar uno por cada atributo perteneciente al elemento. La sintaxis es:
<!ATTLIST nombreElemento
nombreAtributo tipoAtributo carcter
nombreAtributo tipoAtributo caracter
.
>
NombreAtributo ha de ser un nombre XML valido.
tipoAtributo puede ser:
CDATA: el atributo solo incluir datos de caracteres.
ENTITY: el valor del atributo debe corresponder al nombre de una ENTITY externa sin
analizar, que tambin se declara en la misma DTD.

ENTITIES: el valor de atributo contiene varios nombres de entidades externas sin


analizar declaradas en la DTD.

Enumerado: los valores de atributo se limitan a aquellos incluidos en una lista


enumerada. Slo se analizan de manera vlida los valores que coinciden con los de la

22

CFGS ASIX

M04 Llenguatges de marques


lista. Todos los tipos de datos enumerados se incluyen entre parntesis y cada valor
aparece separado por una barra vertical (|).
Ejemplo: Queremos definir una regla para el elemento semforo, de contenido vaco
con un nico atributo color cuyos posibles valores son rojo, naranja y verde, siendo
este ltimo el valor por defecto.
<!ELEMENT semforo EMPTY>
<!ATTLIST semforo
Color (( rojo | naranja | verde) verde )>

ID: el valor del atributo debe ser nico. No puede aparecer repetido en otros elementos
o atributos empleados en el documento. Sirve para identificar de forma nica un
elemento. Un elemento solo puede tener un atributo ID. Los valores del ID tienen que
empezar con una letra y despus cualquier carcter alfanumrico.

IDREF: el atributo hace referencia al valor de otro atributo del documento, de tipo ID.
Ejemplo:
DTD
<!ATTLIST book isbn ID #IMPLIED>
<!ATTLIST review number IDREF #REQUIRED>
XML
<book isbn="A3540299521"> ... </book>
<review number="A3540299521"> ... </review>
IDREFS: representa mltiples IDs de otros elementos separados por espacios.
Ejemplo:
DTD
<!ATTLIST book isbn ID #IMPLIED>
<!ATTLIST list number IDREFS #REQUIRED>
XML
<book isbn="A3540299521"> ... </book>
<book isbn="B8990671445"> ... </book>
<list number="A3540299521 B8990671445"> ... </list>
NMTOKEN: cualquier nombre sin espacios en blanco en su interior. Los espacios en
blanco anteriores o posteriores se ignoraran.

NOTATION un nombre de notacin que debe estar declarada en el DTD. (Lo veremos
ms adelante)

El carcter puede ser:


Un valor textual entre comillas, que representa el valor por defecto para el atributo
#IMPLIED, el atributo es opcional y no se le asigna ningn valor por defecto.
#REQUIRED, el atributo es de carcter obligatorio, pero no tiene valor por defecto.
#FIXED, el atributo es de carcter obligatorio y se le asigna un valor por defecto que no
puede variar.
Actividad13: Crea un documento (oficina.xml) XML para almacenar empleados y sus jefes
directos y el documento (reglas.dtd) DTD con las reglas de validacin que han de cumplir. De

23

CFGS ASIX

M04 Llenguatges de marques


un empleado queremos conocer y ver nombre, apellidos pero internamente guardaremos su
cdigo y quien es su jefe (el cdigo de dicho jefe). El cdigo de empleado ser obligatorio y la
gente no tiene por qu tener un jefe directo. Queremos almacenar tambin si un empleado es
del tipo (externo, interno o eventual). Un empleado puede pertenecer a uno o varios
departamentos, de los que queremos conocer su nombre y planta. Y un empleado tendr o un
sueldo fijo o un sueldo fijo con pagas extras o un sueldo fijo con pagas extras ms incentivos.
<!ENTITY>
Es un elemento avanzado en el diseo de DTDs. Es una declaracin de un tipo de entidad. Hay
diferentes tipos de entidades y en funcin del tipo varia la sintaxis.
Referencias a entidades generales (internas o externas): se utilizaran dentro de un
documento XML. Su sintaxis es
<!ENTITY nombreEntidad definicinEntidad>
Ejemplo:
Declaro la entidad en la parte de las reglas.
<!ENTITY usa Estados Unidos de Amrica>
Despus podremos utilizar esta entidad definida en cualquier parte de nuestro
documento XML, utilizando la sintaxis: &nombreEntidad; El programa analizador
realizara la conversin.
<pas>
<nombre>&usa;</nombre>
..
</pas>
Referencias a entidades generales externas, ubicadas en otros archivos, paginas web,
su sintaxis es:
<!ENTITY nombreEntidad tipoUso URL>
Siendo el tipoUso privado si ponemos SYSTEM o pblico si ponemos PUBLIC.
Actividad14: Tenemos un documento juegos.txt que contiene el siguiente texto
League of Legend. Crea un documento XML que hace referencia a ese archivo de
texto, en forma de entidad externa (juego). Al visualizar el documento, la referencia a
la entidad se sustituir por el texto contenido en el archivo.

Referencias a entidades parmetro, que se usaran en el propio DTD y funcionan


cuando la definicin de las reglas del DTD se realiza en un archivo externo. Su sintaxis
es:
<!ENTITY % nombreEntidad definicionEntidad>
Ejemplo:
<!ENTITY % dimensiones alto CDATA #IMPLIED ancho CDATA #IMPLIED profundo
CDATA #IMPLIED>
<!ELEMENT objeto (nombre)>
<!ATTLIST objeto
Cdigo ID #REQUIRED

24

CFGS ASIX

M04 Llenguatges de marques


%dimensiones;>
<!ELEMENT nombre (#PCDATA)>

Referencia entidades parmetro externas, ubicadas en otros archivos, cuya sintaxis es:
<!ENTITY % nombreEntidad tipoUso FPI URL>
Siendo el tipoUso privado si ponemos SYSTEM o pblico si ponemos PUBLIC. Si es
pblico ser necesario definir el FPI, como vimos anteriormente.
Entidades no procesadas, referencian a datos que no deben ser procesados por el
analizador XML, sino por la aplicacin que lo use, como por ejemplo una imagen. Su
sintaxis es:
<!ENTITY % nombreEntidad tipoUso FPI valorEntidad NDATA tipo>
Ejemplo: Se declara una notacin de nombre JPG para el tipo MIME (extensiones
multipropsito de correo de Internet). Se declara una entidad no procesada de
nombre mediterrneo, asociada al archivo de imagen mediterraneo.jpg. Por ltimo,
se declara un elemento <mar> que cuenta con un atributo imagen que es tel tipo
ENTTY recin declarado.
En el DTD:
<!NOTATION JPG SYSTEM image/jpg>
<!ENTITY mediterraneo SYSTEM mediterraneo.jpg NDATA JPG>
<!ELEMENT mar (nombre, extensin, color)>
<!ATTLIST mar
Imagen ENTITY #IMPLIED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT extensin (#PCDATA)>
<!ELEMENT color (#PCDATA)>

Y en el XML, el valor del atributo imagen del elemento <mar> es la entidad no


procesada declarada en el DTD
<mares>
<mar imagen= mediterraneo>
<nombre> Mediterraneo</nombre>
..
</mar>
..
<mares>
<!NOTATION> Es un elemento avanzada en el diseo de los DTDs. Una notacin se usa para
especificar un formato de datos que no sea XML. Se usa con frecuencia para describir tipos
MIME, como image/jpg o image/gif.
Se utiliza para indicar que el atributo se le permite usar un valor que no haya sido declarado
como notacin en el DTD
<!NOTATION nombre [SYSTEM|PUBLIC publicID] recurso >
Sintaxis del elemento que la usa:
<!ATTLIST nombreElemento
nombreAtributo NOTATION valorPorDefecto>

25

CFGS ASIX

M04 Llenguatges de marques


Ejemplo: Se declaran 3 notaciones que corresponden a otros tantos tipos MIME de imgenes
(gif, jpg y png). Tambin se declara un elemento <mar> y sus atributos imagen, formatoImagen
este ltimo referenciado a las notaciones recin creadas. Por ltimo, se declara una entidad no
procesada que se asocia a un archivo de imagen.
En el documento DTD
<!NOTATION GIF SYSTEM image/gif>
<!NOTATION JPG SYSTEM image/jpg>
<!NOTATION PNG SYSTEM image/png>
<!ELEMENT mar (nombre)>
<!ATTLIST mar
Imagen ENTITY #IMPLIED
formatoImagen NOTATION ( GIF | JPG | PNG ) #IMPLIED>
<ENTITY mediterraneo SYSTEM mediterraneo.jpg>
En el documento XML, observamos que el valor del atributo formatoImagen es de una de sus
alternativas vlidas.
<mares>
<mar imagen=mediterraneo formatoImagen=JPG>
<nombre>mediterraneo</nombre>
</mar>
.
</mares>
Secciones condicionales:
Permiten incluir o excluir reglas en un DTD en funcin de condiciones. Slo se
pueden ubicar en DTDs externos. Su uso tiene sentido al combinarlas con
referencias a entidades parmetro.
Al igual que los subconjuntos externo e interno del DTD una seccin condicional
puede contener una o ms declaraciones completas, comentarios, instrucciones de
proceso o secciones condicionales anidadas, mezcladas con espacios en blanco.
Si la palabra clave de la seccin condicional es INCLUDE, entonces los contenidos
de la seccin condicional son parte del DTD. Si la palabra clave de la seccin
condicional es IGNORE, entonces los contenidos de la seccin condicional no hacen
lgicamente parte del DTD. Para un procesamiento confiable los contenidos de
secciones condicionales, an las ignoradas, deben ser ledos con el fin de detectar
secciones anidadas y la correcta finalizacin de la seccin condicional. Si una
seccin condicional con la palabra clave INCLUDE ocurre dentro de una
seccin condicional con la palabra clave IGNORE, ambas secciones, tanto la
externa como la interna, son ignoradas.
Para cambiar que seccin esta operativa solo tengo que poner INCLUDE en la que
tenia IGNORE y viceversa.
Si la palabra clave de la seccin condicional es una referencia a una entidad
parmetro, la entidad debe ser primero remplazada antes de que se decida incluir o
no la seccin condicional.

26

CFGS ASIX

M04 Llenguatges de marques


Ejemplo DTD:
<!ENTITY % draft INCLUDE >
<!ENTITY % final IGNORE >
<![%draft;[
<!ELEMENT book (comments*, title, body, supplements?)>
<!ELEMENT comments

(#PCDATA)>

]]>
<![%final;[
<!ELEMENT book (title, body, supplements?)>
]]>
<!ELEMENT title (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT supplements (#PCDATA)>

Actividad15: Queremos tener un XML para mandar mensajes, estos mensajes sern de dos
tipos, el corto y el largo. En los mensajes cortos queremos conocer el emisor, el receptor
(mnimo uno), el contenido y la firma digital que puede o no aparecer. Mientras que en los
largos queremos conocer tambin el asunto y la fecha de emisin. Por defecto mandaremos
mensajes cortos.
Crea el DTD que cumpla estas especificaciones y crea un XML de un mensaje largo, y como
debera estar el DTD.

2.7.2 Generacin automtica de los DTD:


Cuando los documentos XML contienen muchos datos, los DTD que los validan pueden ser
muy extensos y su escritura aburrida y costosa. Para facilitar el proceso, hay herramientas de
generacin automticas de DTD a partir de un documento XML, este proceso es denominado
inferencia.
Estas herramientas realizan deducciones gruesas de las reglas gramaticales, que el
desarrollador debe afinar despus para que se ajusten a los requisitos semnticos.
Podemos encontrar generadores on-line: www.hitsw.com/xml_utilites/default.html y en la
mayora de los editores que vimos anteriormente cuenta que esta opcin.
Acurdate que el programa generara un DTD que valide exactamente el XML que lo gener,
pero si hay reglas adicionales que no hemos puesto en el DTD de ejemplo estas no se crearan
y tendremos que hacerlo nosotros manualmente.
Cuanto ms completa sea nuestro documento de ejemplo ms preciso ser nuestro DTD y
menos arreglos manuales tendremos que realizar.
Limitaciones de los DTD.
Un DTD no es un documento XML, con lo que no podemos verificar que este bien
formado.
No se pueden fijar restricciones sobre los valores de los elementos y atributos asi
como su tipo de datos tamao, etc.
No soporta espacios de nombres.
Slo se pude enumerar los valores de los atributos, no de los elementos.
Slo se puede dar un valor por defectos para atributos no para elementos.

27

CFGS ASIX

M04 Llenguatges de marques

Existe un control limitado sobre la cardinalidades de los elementos, es decir, concretar


el nmero de veces que pueden aparecer.

Actividad16: Queremos que el DNI sea un atributo identificador obligatorio, que es estado civil
pueda ser solo Soltero Casado o Divorciado y que el elemento enActivo sea optativo. Ve
a la web de generacin automtica de DTD y completa el DTD que te devuelva con las
instrucciones necesarias dado el siguiente documento XML.
<?xml versin=1.0 encoding=UTF-8?>
<!DOCTYPE persona SYSTEM persona.dtd] >
<persona dni = k-123456 estadoCivil=Casado>
<nombre> John </nombre>
<apellidos> Connor </apellidos>
<edad> 25 </edad>
<enActivo />
</persona>

28

CFGS ASIX

M04 Llenguatges de marques


2.7.3 Validacin de documentos XML con esquemas XML
Un esquema XML es un mecanismo para comprobar la validez de un documento XML. Es una
forma alternativa a los DTDs, pero con ciertas ventajas.

Es un documento XML con lo que si que podemos comprobar que esta bien formado.
Existe una gran cantidad de tipos de datos predefinidos para elementos y atributos
que pueden ser ampliados o restringidos en funcin de nuestras necesidades.
Permiten concretar con precisin la cardinalidad de un elemento.
Permite mezclar distintos vocabularios (juegos de etiquetas) gracias a los espacios de
nombres.

Tienen el inconveniente que al ser mas complejos son ms difciles de interpretar a simple
vista como pasaba con los DTD.
En un esquema XML aparecer lo que puede contener un documento XML, elementos, los
atributos que tienen, de que tipo de datos son los elementos y los atributos, en que orden
aparecern, la cardinalidad de los elementos etc.
El esquema XML es el molde del que saldrn los documentos XML que se ajustaran a su
estructura, pero cada uno con sus datos concretos.
Las herramientas vistas anteriormente son capaces de validad documentos XML frente a un
esquema. Para la validacin on-line tenemos la web:
www.corefiling.com/opensource/schemaValidate.html
Herramientas para generar esquemas automticamente a partir de documentos XML.
Al igual que pasaba con los DTD, nuestro esquema automtico ser tan preciso como el
documento que utilizamos para generarlo, y normalmente tendremos que completarlo
manualmente.
Tenemos editores de XML con esta funcionalidad:
- SMLSpy de altova.
<oXygen/> Herramientas on-line:
http://www.flame-ware.com/products/xml-2-xsd
http://www.freematter.com/xsd-generator.html
Estructura de un esquema XML. Componentes.
Un esquema XML es un documento XML que ha de cumplir una serie de reglas;

Su elemento raz se llama <schema>


Su espacio de nombre de ser http://www.w3.org.2001/XMLSchema. Se podra no
definir un prefijo o usar uno de los ms comunes: xs o xsd.
<?xml versin=1.0?>
<xs : schema xmnls : xs =http://www.w3.org.2001/XMLSchema>
..
</xs : schema>

29

CFGS ASIX

M04 Llenguatges de marques

Al igual que en los DTD tenemos que declarar al elemento raz de nuestro XML, su
sintaxis ser: <xs : element name = nombreElementoRaiz>
Fijaros que tiene un atributo name con el nombre del elemento raz.
Al contrario que con los DTD podemos tener un esquema con ms de un elemento raz.

<?xml versin=1.0?>
<xs : schema xmlns : xs =http://www.w3.org.2001/XMLSchema>
<xs : element name=coche />
<xs : element name=barco />
</xs : schema>
Un esquema es un conjunto de declaraciones de elementos y atributos y definiciones
de tipos que sirven para fijar la estructura que debe tener un documento XML. El
orden en que se declaran los elementos, ahora llamados componentes, no es
significativo ni afecta al funcionamiento del mismo.
Para vincular el esquema con el documento XML aadiremos al elemento raz del
documento XML dos atributos:
<?xml version = 1.0 encoding = UTF-8?>
<Coches xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation = landrover.xsd>

</Coches>

Donde landrover.xsd es el documento donde esta el esquema.

Componentes bsicos de un esquema.


Los componentes imprescindibles son:
xs : schema
Es el componente de declaracin de esquema y elemento raz de todo esquema XML. Ya
hemos visto ejemplos arriba.
xs : element
Es el componente para la declaracin de elemento simple, estos elementos solo tienen valor
textual, ni otros elementos ni atributos.
Atributos principales:

name: Indica nombre del elemento, obligatorio en caso del elemento raz.
ref: indica que la descripcin del elemento se encuentra en otro lugar del esquema.
type: indica el tipo del elemento.
Los tipos de datos ms comunes en XML Schema son:
o xs:string (cadena)
o xs:decimal (nmero decimal)
o xs:integer (nmero entero)

30

CFGS ASIX

M04 Llenguatges de marques


o xs:boolean (verdadero/falso o 0/1)
o xs:date (fecha)
o anyURI (direcciones web)
<xs:element name=dia type=xs:date /> <dia>2011-09-15</dia>
<xs:element name=altura type=xs:integer/> <altura>220</ altura >
<xs:element name=nombre type=xs:string/> < nombre >Pere Puig</ nombre >
<xs:element name=tamao type=xs:oat/> <tamao>1.7E2</tamao>

default: Valor que tomar por defecto el elemento al ser procesado por alguna
aplicacin siempre que no haya recibido un valor en el documento XML. Solo se pude
usar si el contenido del elemento es textual.
fixed: indica el nico valor que puede contener el elemento, solo si el contenido es
textual.
minOccurs: indica el nmero mnimo de ocurrencias de un elemento dentro del
documento XML. Va desde el 0 hasta el unbouned (ilimitado). El elemento xs:schema
no puede usar este atributo.
maxOccurs: indica el nmero mximo de ocurrencias de un elemento dentro del
documento XML. Va desde el 0 hasta el unbouned (ilimitado). El elemento xs:schema
no puede usar este atributo.

Otros atributos:

Id: identificiador nico para el elemento.


Form especifica el formato del nombre del atributo

Actividad17: Explica el siguiente cdigo.


<?xml version=1.0?>
<xs : schema xmnls : xs =http://www.w3.org.2001/XMLSchema>
<xs : element name=coche type=xs : string maxOccurs=3/>
<xs : element name=nombre type="xs:string"/>
<xs : element name=edad type="xs:integer" default=18/>
<xs : element name=permisoConducir type="xs:boolean" default=true/>
</xs : schema>
Actividad 18: Crea el cdigo de los semforos donde el valor por defecto sea rojo, en nuestra
ciudad tenemos un mnimo de 4 semforos y un mximo de 20.

xs:atribute Es el componente de la declaracin de atributo y representa la existencia de un


atributo de un elemento en el documento XML.
Los atributos principales son:
name: nombre del atributo. Este atributo no puede aparecer al mismo tiempo que ref.
ref: referencia a la descripcin del atributo que se encuentra en otro lugar del
esquema. Si aparece este atributo no aparecern los atributos type, ni form, ni podr
contener un componente <xs : simpleType>
type: tipo del elemento.

31

CFGS ASIX

M04 Llenguatges de marques

use: indica si la existencia del atributo es opcional, obligatorio o prohibida (optional,


required, prohibited).
default: valor que tomara el atributo al se procesado por alguna aplicacin cuando en
el documento XML no tiene asignado ningn valor. No puede aparecer al mismo
tiempo que fixed.
fixed: Valor nico que pude contener al documento. No puede aparecer
simultneamente a default.
Atributos opcionales:
id: Indica identificador nico para el atributo.
<xs:attribute name="alias" type="xs:string"/>
<!-- Ahora podemos usarlo dentro de un elemento nombre -->
<nombre alias=Snake> Plissken </nombre>
Una vez creado un atributo lo podr utilizar en cualquier elemento que lo necesite.
Actividad19: Crea el atributo moneda de tipo cadena que por defecto tenga el valor euro. Un
atributo unidad de tipo de dato cadena que tenga valor fijo minutos y un elemento idEmple
de tipo de dato entero positivo y existencia obligatoria.
Tipos de datos: Como ya hemos visto anteriormente tanto atributos como elementos se les
puede asignar un tipo de datos, para concretar el valor que pueden tomar (tipo cadena,
nmerico.). Los tipos de datos se pueden organizar segn diversos criterios.

Tipos de datos predefinidos: Son los que vienen integrados en la especificacin de


los esquemas XML. Existen 44 tipos predefinidos, que se organizan de forma
jerrquica, de forma que cada tipo ser igual que su tipo padre ms alguna
particularidad que lo distinga.
Hay 16 tipos numricos, 9 de fecha y hora, 16 de texto, 2 binarios y 1 boleano.

Tipos de datos simples personales: Podemos definir tipos de datos que no han de
coincidir necesariamente con los estndares del XSD, partiendo de los predefinidos
podemos hacer que cumplan unas determinadas condiciones que necesitemos, a
estas peculiaridades las llamaremos facetas.
Para definir un tipo simple personal no se pone tipo de dato al elemento, se define
un hijo <simpleType>

<?xml version=1.0?>
<xs:schema xmnls:xs =http://www.w3.org.2001/XMLSchema>
<xs:element name=persona>
<xs:simpleType>

</xs:simpleType>
<xs:element>
</xs:schema>
Dentro del simpleType especificaremos cual es la modificacin que se quiere hacer
sobre el tipo predefinido. Las ms comunes son, crear una lista de valores, unin,
restriccin o extensin.

32

CFGS ASIX

M04 Llenguatges de marques

Tambin podemos crear un tipo simple fuera de un elemento y una vez definido
podemos asignrselos a los elementos.
<xs:simpleType name="listaDias">
<xs:list itemType="xs:date"/>
</xs:simpleType>
<xs:element name="DiasDePartido" type="listaDias"/>
<xs:element name="DiasDeCompra" type="listaDias"/>
Tipo restriction: Sirve para definir restricciones en los valores de un tipo.
Si queremos declarar un tipo contrasea que tenga un mnimo de 6 caracteres y un
mximo de 13.
<xs:simpleType name =contrasenya>
<xs:restriction base=xs:string>
<xs:minLength value =6/>
<xs:maxLength value =13/>
</ xs:restricition>
</xs:simpleType>
<xs:element name=clave type=contrasea>
Un documento xml con:
<clave>DiAmigoyEntra</clave> seria validado
<clave>12345</clave> No seria validado
Tabla de facetas para restringir rangos de valores
Faceta
maxInclusive / maxExclusive

minInclusive / minExclusive
Length
Enumeration
totalDigits
fractionDigits
Pattern

Uso

Tipos donde se usa

Especifica el lmite superior de un rango de


valores. En un caso esta incluido dicho
valor en el otro no.
Especifica el lmite inferior de un rango de
valores. En un caso esta incluido dicho
valor en el otro no.
Especfica nmero exacto de caracteres o
elementos de una lista. Ha de ser positivo
Solo permite tomar una valor especificado
en una lista de valores
Especifica el numero de dgitos de un valor
numrico
Especifica el numero de decimales que
puede tener un valor numrico
Especifica un patrn o expresin regular
que deben cumplir los valores vlidos

33

Numricos y fecha/hora

Numricos y fecha/hora
Texto
Todos
Numricos
Numricos
Texto

CFGS ASIX

M04 Llenguatges de marques

Sobre un conjunto de valores


Podemos obligar a que un valor se establezca dentro de unos lmites (Restriccin solo para
este elemento:
<xs:element name="color">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Rojo"/>
<xs:enumeration value="Verde"/>
<xs:enumeration value="Amarillo"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Podemos definir el mximo de dinero en una aplicacin (Creo un tipo de dato con esta
restriccin):
< xs:simpleType name="maxSaldo">
<xs:restriction base="integer">
< xs:maxInclusive value="9000" />
</ xs:restriction>
</ xs:simpleType>
Actividad20: Crea un tipo de datos precioChino, donde los productos solo podrn tener un
valor de hasta 10 y 50 cntimos de mnimo y solo dos decimales.
Actividad21: Crea un tipo de datos que sea DiaLaborable en el que solo puedan estar los das
de la semana laborables.
Para utilizar la faceta pattern nos basarnos en expresiones regulares que se basan en la
siguiente tabla.
Smbolo
.
\d
\D
\s
\S
\d{n}
\d{n, m}
[abc]
[a-z]
[^abc]
(a|b)
X?
X*

Equivalencia
Cualquier carcter
Cualquier digito
Cualquier carcter no digito
Caracteres no imprimibles: espacios en blanco, tabuladores
Cualquier carcter imprimible
N dgitos exactamente
De n a m dgitos.
Uno de los caracteres incluidos ( en este caso a o b o c]
Uno de los caracteres incluidos entre la a y la z
No pueden aparecer los caracteres de dentro
Aparecer o un valor o el otro
Una ocurrencia puede pasar 0 o 1 veces
Una ocurrencia puede pasar 0 o ms veces

34

CFGS ASIX

M04 Llenguatges de marques


X+
X{n}
X{n,m}
X{n,}

Una ocurrencia puede pasar 1 o mas veces


Una ocurrencia puede pasar exactamente n veces
Una ocurrencia puede pasar de n a m veces.
Una ocurrencia puede pasar de n a ms veces.

Si alguna vez queremos representar alguno de los caracteres reservados como


{,},+,* tendremos que precederlos del carcter \.
Ejemplo si queremos una expresin regular que contenga los caracteres J o Y o el smbolo +
seria: [YJ\+]
< xs:simpleType name="CodBiblioteca">
<xs:restriction base="string">
<xs:pattern value="\d{3} [A-Z]{2}"/>
</ xs:restriction>
</ xs:simpleType>
Actividad22. Crea el tipo de datos matriculaEspaolasAntigua, una letra seguida de guion,
seguido de 4 dgitos seguido de un guion seguido de 2 letras.
Crea el tipo DNI
Tipo List:
<xs:element name="partits">
<xs : simpleType>
<xs : list itemType="xs:date"/>
</xs:simpleType>
</xs : element>
Definiendo este tipo podramos validad en el XML una etiqueta que contenga el
valor:
<partidos> 10-3-2013 12-4-2013 15-6-2013 </partidos>
Tipo Union: el modificador unin sirve para que podamos mezclar tipos de datos en un
mismo elemento. Un valor es valido si es el dato es valido para al menos uno de los dos
tipos de datos que forma la unin.
Si hemos declarado el tipo smbolo (como $ o o ) y moneda es de tipo decimal solo
con dos decimales.
<xs:element name="precio">
<xs:simpleType>
<xs:union memberTypes="moneda simbolo"/>
</xs:simpleType>
/xs:element>
El xml tendiramos
<precio>25 </precio>
Actividad23: Crea un tipo de dato Talla, que tenga o los valores numricos (38-40-42) o su
equivalente en ingls (S-L-M).
Actividad24: Completa el ejemplo de precio declarando los tipos de datos smbolo y moneda.

35

CFGS ASIX

M04 Llenguatges de marques


Elementos complejos
Un elemento complejo es aquel que contenga otro elemento y/o atributos.
Hay cuatro tipos de elementos complejos:
Elementos que contienen solo otros elementos
Elementos vacos
Elementos que contienen solo texto
Elementos que contienen otros elementos y texto
En estas cuatro categoras adems se pueden incluir atributos en los elementos.
<xs:element name="alumno" type="persona"/>
<xs:complexType name="persona">
<xs:sequence>
<xs:element name="apellido" type="xs:string"/>
<xs:element name="nombre" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Esto se traduce en poder utilizar elementos como:
<persona>
<apellido>Estebanez</apellido>
<nombre>Unai</nombre>
</persona>
Se puede apreciar en el ejemplo como esto es similar a definir objetos en un lenguaje de
programacin. Adems es posible heredar, veamos como:
<xs:element name="destinatario" type="direcion"/>
<xs:complexType name="persona">
<xs:sequence>
<xs:element name="apellido" type="xs:string"/>
<xs:element name="nombre" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="direccion">
<xs:complexContent>
<xs:extension base="persona">
<xs:sequence>
<xs:element name="calle" type="xs:string"/>
<xs:element name="ciudad" type="xs:string"/>
<xs:element name="pais" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

36

CFGS ASIX

M04 Llenguatges de marques


Elementos vicios
Veamos cmo definirlos:
<xs:element name="nombre" type="nombre_t"/>
<xs:complexType name="nombre_t">
<xs:attribute name="alias" type="xs:string"/>
</xs:complexType>
Esto nos permitira definir elementos como estos:
<nombre alias=Capitn Morgan/>
Elementos que contienen solo texto
Es posible definir elemento que solo contengan texto, lo podemos hacer por ejemplo
utilizando un tipo base de schema y amplindolo:
<xs:element name="Pie">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="pais" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<pie pais=Espana>41</pie>
Elementos que contienen otros elementos y texto
Supongamos que queremos validar XMLs con este formato:
<carta>
Querido Seor:<nombre>Alex Conceiro</nombre>.
Su pedido <pedido>1032</pedido>
ser entregado el <fechaEntrega>2001-07-13</fechaEntrega>.
</carta>
Definiramos un schema como el siguiente, ojo al atributo mixed, es necesario:
<xs:element name="carta" type="tipoCarta"/>
<xs:complexType name="tipoCarta" mixed="true">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="pedido" type="xs:positiveInteger"/>
<xs:element name="fechaEntrega" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>

37

También podría gustarte