Unidad 1 lenguajes de marcas

55
XML IES Alcántara Curso 2010-2011

Transcript of Unidad 1 lenguajes de marcas

Page 1: Unidad 1   lenguajes de marcas

XML

IES Alcántara

Curso 2010-2011

Page 2: Unidad 1   lenguajes de marcas

XML• XML = eXtensible Markup Language.• Por ser un lenguaje de marcas, sus partes de distinguen

entre sí por medio de etiquetas.• Extensible = podemos crear nuestras propias etiquetas,

en lugar de estar atados a un conjunto de ellas, como ocurre en HTML.

• Sigue una sintaxis estricta, es poco tolerante a fallos.• Existen dos tipos de etiquetas:

– De apertura: <nombre_etiqueta>– De cierre: </nombre_etiqueta>

• Necesario respetar el anidamiento.

Page 3: Unidad 1   lenguajes de marcas

XML

<?xml version="1.0"?><pelicula>

El Padrino<director>Francis F. Coppola</director><actores>

<actor>Al Pacino</actor></actores>

</pelicula>

Page 4: Unidad 1   lenguajes de marcas

¿Pero para qué sirve XML?

• Imaginemos que queremos mandar el siguiente fichero a una empresa con datos de cotización en bolsa:

Page 5: Unidad 1   lenguajes de marcas

¿Pero para qué sirve XML?

• Este ejemplo genera una serie de problemas al receptor que tiene que interpretar el archivo:– ¿Qué es cada dato?– ¿Los campos van separados por comas?– ¿Están todos los campos que deberían aparecer o

falta alguno?

• Resultado: pruebas, errores, llamadas de teléfono… ¡El propio documento no nos da información! Y al cabo de unos meses, si una persona distinta abre ese mismo archivo, otra vez a rebuscar en la documentación y ver cuál era la estructura del archivo.

Page 6: Unidad 1   lenguajes de marcas

¿Pero para qué sirve XML?

• XML nos permite subsanar estos problemas de una tacada, porque nos ayuda en la integración de datos, o dicho de otro modo: XML es el medio para ayudarnos a estandarizar el intercambio de información a través de ficheros.

• Un documento XML es un documento de texto plano en el que se describe la estructura de la información que él mismo contiene.

• XML contiene, por tanto, no sólo información, sino también las estructuras de lenguaje necesarias para describir esa información, permitiendo al usuario crear sus propias etiquetas adaptadas a sus necesidades.

Page 7: Unidad 1   lenguajes de marcas

¿Pero para qué sirve XML?

• XML abre el camino para que los propios ordenadores interpreten la información de las páginas web. Con HTML esto no es posible.

• XML no contiene por sí solo información sobre el formato en que se deben representar los datos. Son necesarias hojas de estilo CSS:

Page 8: Unidad 1   lenguajes de marcas

¿Pero para qué sirve XML?

Page 9: Unidad 1   lenguajes de marcas

¿Pero para qué sirve XML?<?xml version="1.0"?><valores>

<accion><mercado>Madrid</mercado><mercadoabierto>SI</mercadoabierto><recomendacion>1</recomendacion><nombre>Aceralia</nombre><variacion>4</variacion><fecha>

<dia>12</dia><mes>05</mes><anyo>1992</anyo>

</fecha></accion>

</valores>

Page 10: Unidad 1   lenguajes de marcas

Trabajando con XML• Descargamos XMLSpy: www.altova.com

• Apartado Download xmlspy Standard Edition.

• Clave válida para 30 días: 44F4ADG-95ADY16-4PDG0DI-TS59AI1-AP997JI

• Una vez instalado elegimos: File new XML – Extensible Markup Language.

• En el siguiente cuadro de diálogo pulsamos cancel.

• Copiamos el código del archivo acciones.xml

• Elegimos View Enhanced Grid View.

Page 11: Unidad 1   lenguajes de marcas

Trabajando con XML• Se dice que un documento XML está bien formado si su

sintaxis es válida:– Utiliza caracteres autorizados.– Comienza y finaliza todas las marcas.

• Pulsando el botón “check well-formedness” podemos comprobar si nuestro documento está bien formado.

• Con ayuda de este archivo, el destinatario de la información podrá interpretar el significado de cada campo.

• Pero siguen sin resolverse algunas dudas que habíamos planteado:– ¿Están todos los campos que deberían aparecer?– ¿Los valores indicados están dentro de los permitidos?

Page 12: Unidad 1   lenguajes de marcas

Trabajando con XML

• Para resolver estas cuestiones creamos un documento que define aspectos como qué debe ir en un fichero XML, en qué orden o qué es obligatorio. Este documento es nuestro DTD (Document Type Definition).

Page 13: Unidad 1   lenguajes de marcas

Objetivos de XML• Extraídos de

http://www.w3.org/TR/REC-xml/#sec-origin-goals

• 1) Directo a la red: un archivo XML contiene caracteres de texto, que son fácilmente transferibles a través de internet.

• 2) Compatible con todas las aplicaciones: XML no está ligado a ninguna tecnología concreta.

• 3) Compatible con SGML. SGML = Standard Generalized Markup Language. Concebido en los 60. Es complejo en comparación con XML, pero interesa que sean compatibles. XML es un subconjunto de SGML.

Page 14: Unidad 1   lenguajes de marcas

Objetivos de XML• 4) Fácil digestión: sencillez. Es la razón de la

popularidad de XML. Construir un analizador XML es muy sencillo: existe al menos uno para cada sistema operativo. Se ha extendido mucho.

• 5) Sin extras: el número de características opcionales de XML es 0, de modo que si un analizador puede con un documento en este formato, podrá con todos.

• 6) Alto y claro: un documento XML es legible para el ser humano, de modo que no sólo consigue ser eficaz para los procesos automáticos, sino que existe la posibilidad de que nosotros mismos interpretemos esos documentos.

Page 15: Unidad 1   lenguajes de marcas

Objetivos de XML• 7) Lo quiero para ya: diseñar un documento XML es

rápido.

• 8) Formalidad: XML está bien formado, y su sintaxis es conforme a la forma extendida de Backus-Naur, usada para describir las gramáticas de los lenguajes de programación.

• 9) Lápiz y papel: crear documentos XML debe ser sencillo, y se debe poder hacer desde un editor de textos o desde un programa complejo.

• 10) Lo importante es comprenderse: XML no permite simplificaciones, aunque haya que escribir más etiquetas de las que serían necesarias.

Page 16: Unidad 1   lenguajes de marcas

Documentos XML bien formados

• XML se basa en el concepto de que un documento se compone de una serie de entidades (u objetos).– Cada entidad contiene uno o más elementos.– Cada elemento está caracterizado por cero o más atributos (o

propiedades).

• Los posibles elementos y sus propiedades están especificados en el DTD (Document Type Definition). Usando DTDs cada empresa puede definir su propio lenguaje para los documentos que suele usar habitualmente.

Page 17: Unidad 1   lenguajes de marcas

Documentos XML bien formados

• Un documento XML se dice que está bien formado si satisface un conjunto de reglas que permite que una herramienta XML lo analice correctamente.

• Un documento XML es válido si está bien formado y satisface las reglas que le impone su DTD.

• Podemos indicar comentarios dentro de un documento XML situándolo entre los símbolos <!-- y -->. Los comentarios pueden incluir aclaraciones, nombre del autor, fecha de creación, trabajo pendiente por hacer…

• Los comentarios pueden estar en cualquier parte del documento, pero ojo, también viajan a través de internet, y si son excesivos pueden consumir mucho ancho de banda.

Page 18: Unidad 1   lenguajes de marcas

Documentos XML bien formados

<!-- Este documento NO está bien formado --><?xml version=“1.0”?><mensaje>Hola & adios</mensaje>

<!-- Este documento está bien formado --><!-- Pero no es válido: le falta su DTD --><?xml version=“1.0”?><mensaje>Hola y adios</mensaje>

Page 19: Unidad 1   lenguajes de marcas

Documentos XML bien formados• A lo largo del documento encontramos etiquetas =

anotaciones entre los símbolos < y >:– Etiqueta de comienzo (o de apertura): <nombre_etiqueta>– Etiqueta de fin (o de cierre): </nombre_etiqueta>

• Un nombre de etiqueta debe empezar por una letra, un guión bajo o dos puntos. Después del primer carácter se puede usar el guión normal.

• Los elementos están delimitados por etiquetas de comienzo y fin en el caso de que tengan contenido:

<mensaje>Hola</mensaje>• Los elementos están delimitados por una etiqueta de

elemento vacío si no tienen contenido. El sentido que tiene la etiqueta vacía es que ella misma tiene significado, o es obligatoria:

<imagen/>

Page 20: Unidad 1   lenguajes de marcas

Documentos XML bien formados

• Los documentos XML son sensibles a mayúsculas y minúsculas, por lo que <FICHA> es una etiqueta distinta a <ficha>. Es recomendable seguir siempre el mismo patrón de nomenclatura: siempre mayúsculas, siempre minúsculas, inicial en mayúscula, etc.

• Todos los espacios y retornos de carro se tienen en cuenta (no así en HTML, como veremos).

• Existen una serie de caracteres reservados que no se pueden utilizar porque forman parte de la sintaxis de XML. Son los siguientes: <, >, &, “ y ‘

• Si los queremos utilizar debemos hacer uso de entidades: &lt, &gt, &amp, &quot y &apos.

Page 21: Unidad 1   lenguajes de marcas

Documentos XML bien formados

• Un archivo XML consta de tres partes:– Prólogo:

• Indica el tipo de documento y sus características.• <?xml version=“1.0”?>• W3C recomienda no indicar la versión 1.1 salvo

que se haga uso de las novedades que ésta añade.

– Cuerpo:• Va siempre entre etiquetas raíz. Ejemplo:

<valores> y </valores>– Epílogo (es opcional):

• Contiene instrucciones de proceso y comentarios. Lo recomendable es que esas instrucciones de proceso aparezcan en el prólogo, y así no tener que contar con epílogo.

Page 22: Unidad 1   lenguajes de marcas
Page 23: Unidad 1   lenguajes de marcas

DTDs• DTD = Document Type Definition.• Como su nombre indica, el DTD define qué contenido deben

tener los documentos XML asociados y en qué orden.• Actúa como una “plantilla” que sirve para determinar la

validez de un archivo XML.• Ejemplo: queremos crear archivos XML con listas de

medicamentos. Podemos definir un DTD que sirva como “modelo” para cada documento de medicamentos que creemos. Todos los archivos XML que sean conformes a esa definición serán considerados documentos descriptivos válidos de medicamentos.

• El DTD no guarda información concreta sobre medicamentos, sino sobre qué estructura debe tener un documento XML que se ocupe de listar medicamentos.

• Si en otro momento queremos crear archivos XML con listas de inmuebles, por ejemplo, el DTD creado para medicamentos no valdrá, y tendremos que generar uno nuevo.

• Usando DTDs cada empresa puede definir su propio lenguaje para los documentos que suele usar habitualmente.

Page 24: Unidad 1   lenguajes de marcas

DTDs

• El DTD puede ser:– Interno al documento XML: está incluido en el propio

documento.– Externo al documento XML: aparece como fichero aparte, lo

cual permite que pueda ser referenciado por varios documentos XML.

– Mixto: el DTD está especificado de las dos formas anteriores.

• La forma de organizar un DTD es “relativamente” libre, aunque es conveniente seguir en él el mismo orden en el que se van a presentar los objetos en el documento XML.

Page 25: Unidad 1   lenguajes de marcas

DTD incrustado• Es interno al documento XML que valida.• Aparece en el prólogo, es decir, antes de la etiqueta raíz.• Ejemplo:

<!-- Aquí empieza el prólogo --><?xml version="1.0" standalone="yes"?>

<!-- Aquí comienza la definición del DTD --><!-- Seguimos estando en el prólogo --><!DOCTYPE pelicula [

<!ELEMENT pelicula (titulo)><!ELEMENT titulo (#PCDATA)>

]>

<!-- Finaliza la definición del DTD --><!-- Finaliza también el prólogo, al aparecer a continuación la etiqueta raíz -->

<pelicula><titulo>El Padrino</titulo>

</pelicula>

Page 26: Unidad 1   lenguajes de marcas

DTD incrustado

• Aparece en el prólogo del documento XML al que hace referencia.

• Comienza por: <!DOCTYPE nombre [• Y finaliza por: ]>

• El atributo “standalone” del prólogo inicializado al valor “yes” indica que el documento es autosuficiente y no necesita de otros elementos externos. Incluyéndolo proporcionamos una ayuda extra al analizador del documento, que ya sabe que no va a tener que buscar en ninguna fuente externa el DTD ningún otro elemento.

Page 27: Unidad 1   lenguajes de marcas

DTD externo• Usar un DTD interno es interesante sólo si ese documento XML es el único que

va a utilizarlo.• Pero si el DTD va a ser compartido por muchos documentos XML, es preferible

que se encuentre en un lugar común en lugar de repetirse en cada documento. Así ahorramos espacio en los documentos y también, cualquier cambio que deba realizarse, se tendrá que hacer sólo en el DTD externo.

• Además, el DTD podría ubicarse en un servidor web, de modo que cualquiera podría validar el documento que está creando, asegurándose así de que está utilizando la última versión del documento.

• Un DTD externo consta de un prólogo, del mismo modo que hemos visto antes, y a continuación, la definición en sí del DTD, con etiquetas como <!ELEMENT.

• En el documento XML que queremos validar con el DTD tendremos que incluir la declaración siguiente, para vincular ese documento con el DTD definido:

– <!DOCTYPE pelicula SYSTEM “c:\documentos\filmoteca.dtd”> (si el DTD está en esa ruta)

– <!DOCTYPE pelicula SYSTEM “http://www.mipagina.es/filmoteca.dtd”> (si el DTD está en esa página web)

Page 28: Unidad 1   lenguajes de marcas

DTD externo• Si el DTD comienza con un prólogo, podría empezar,

por ejemplo, por la línea:<?xml version="1.0" encoding="UTF-8"?>

• A partir de ahí comienza la definición del contenido:

• Declaración de ELEMENTOS: las etiquetas que hemos utilizado hasta ahora en nuestros documentos XML básicos delimitan elementos. Su declaración en un archivo DTD se hace de la siguiente forma:

<!ELEMENT identificador (tipo_de_contenido)>

• El primer <!ELEMENT que aparece se refiere a la etiqueta raíz.

Page 29: Unidad 1   lenguajes de marcas

DTDs

• <!ELEMENT identificador (tipo_de_contenido)>

• Ejemplos:

• <!ELEMENT nombre_vía (#PCDATA)>• <!ELEMENT número (#PCDATA)>• <!ELEMENT dirección (nombre_vía, número, cp,

localidad)>• <!ELEMENT inmueble (código, dirección, precio,

superficie, teléfono)>

Page 30: Unidad 1   lenguajes de marcas

DTDs• Los tipos de contenidos que podemos indicar son:• 1) #PCDATA (Parser Character Data): indica un

contenido de tipo “dato analizable” (por ejemplo, un número o una palabra). Ejemplo:

<!ELEMENT sueldo (#PCDATA)>

• 2) Otro elemento o elementos (si son varios aparecen separados por comas). Ejemplo:

• <!ELEMENT clase (profesor)>• <!ELEMENT clase (profesor,aula)>• <!ELEMENT dirección (nombre_vía, número, cp,

localidad)>

Page 31: Unidad 1   lenguajes de marcas

DTDs

• 3) EMPTY: el elemento no tiene contenido (se llama elemento vacío). Ejemplo:

<!ELEMENT salto-de-página EMPTY>

• 4) ANY: el elemento puede tener cualquier contenido: #PCDATA, otros elementos… No es muy conveniente utilizarlo, por ser demasiado genérico. Ejemplo:

<!ELEMENT batiburrillo ANY>

Page 32: Unidad 1   lenguajes de marcas

DTDs• 5) MIXED: el elemento puede tener tipos de

contenido diversos, pero al contrario que con ANY, esos contenidos deben estar debidamente especificados. Ejemplos:

<!ELEMENT identificador (nif | nie)>(significa que el elemento “identificador” puede estar

compuesto O por un “nif” O por un “nie”)

<!ELEMENT postre (sorbete, (helado | tarta))>(significa que el elemento “postre” está compuesto por

un “sorbete” y además un “helado” o una “tarta”, pero nunca estos dos últimos simultáneamente)

Page 33: Unidad 1   lenguajes de marcas

DTDs• En la especificación de contenido se puede

incorporar un símbolo de frecuencia:– Ninguno = el elemento aparece sólo una vez.– + = el elemento aparece 1 ó más veces.– * = el elemento es opcional y aparece 0 ó más veces.– ? = el elemento es opcional y aparece 0 ó 1 vez.

• Ejemplos:– <!ELEMENT libro (prólogo?, capítulo+)>– <!ELEMENT resolución (descripción, alegaciones*)>– <!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>

Page 34: Unidad 1   lenguajes de marcas

¿Cómo validar un archivo XML?

• En primer lugar, definimos su DTD.

• A continuación utilizamos alguno de los siguientes recursos:– Página web de validación.– Programa editor.– Herramienta de programación.

Page 35: Unidad 1   lenguajes de marcas

¿Cómo validar un archivo XML?

• Validación mediante página web:• Buscamos una web de validación. Ejemplo:

http://validator.w3.org• Normalmente sirven para comprobar la validez de

cualquier documento elaborado con cualquier lenguaje de marcas (XML, HTML…).

• En el caso de XML, el DTD debe estar incrustado en el documento XML para poder validarlo desde esta dirección.

• Permite validar cualquiera de los siguientes casos:– Una dirección web (validate by URI).– Un documento previamente subido (validate by file upload).– Un documento directamente escrito en la página (validate by

direct input).

Page 36: Unidad 1   lenguajes de marcas

¿Cómo validar un archivo XML?

Page 37: Unidad 1   lenguajes de marcas

¿Cómo validar un archivo XML?

• Validación mediante programa editor:• Ejemplos:

– Windows: XMLSpy.– Linux: Conglomerate.

• Validación mediante herramienta de programación:– La forma más versátil y compleja (será vista

posteriormente).

Page 38: Unidad 1   lenguajes de marcas

Más sobre XML: Atributos• Las etiquetas pueden aprovecharse para incluir otros

datos utilizando ATRIBUTOS.• La etiqueta denota el nombre del elemento, y el

atributo, sus propiedades.• Los atributos sólo pueden indicarse en las etiquetas de

apertura, no en las de cierre.• Un atributo está formado por el nombre del mismo y el

valor que toma, separados por el signo de igualdad =. El valor del atributo debe estar entre comillas, simples o dobles.

• Un atributo debe tomar valor siempre.• Ejemplo: en el prólogo encontramos los atributos version

y encoding:<?xml version="1.0" encoding="UTF-8"?>

Page 39: Unidad 1   lenguajes de marcas

¿Para qué utilizar los atributos?• Usamos los atributos principalmente para diferenciar

entre elementos del mismo tipo.• En el siguiente ejemplo utilizamos atributos para

distinguir los actores protagonistas de los secundarios:

<?xml version=“1.0”?><películas>

<película><título>El Padrino</título><actores>

<actor papel=“protagonista”>Al Pacino</actor><actor papel=“secundario”>Diane Keaton</actor>

</actores></película>

</películas>

Page 40: Unidad 1   lenguajes de marcas

¿Para qué utilizar los atributos?• Ejemplo: distinguir los trabajadores fijos de los

eventuales:

<?xml version=“1.0”?><trabajadores>

<trabajador situación=“fijo”>Pepe Gómez</trabajador><trabajador situación=“eventual”>Antonio

Marín</trabajador></trabajadores>

Page 41: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD• Declaración con un formato similar a la de los

elementos, pero algo más compleja:

<!ATTLIST elemento atributo tipo vpredeterminado>

– elemento es el nombre del elemento cuyos atributos queremos definir.

– atributo es el nombre del atributo.– tipo es el tipo de valores que podrán tener el atributo.– vpredeterminado (opcional) es el valor predeterminado que

tendrá ese atributo.

• Para cada atributo de un elemento utilizaremos un ATTLIST distinto.

Page 42: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD• Ejemplo:

<película título=“El Padrino” duración=“180”/>• La línea correspondiente a ese elemento en el DTD

sería:<!ELEMENT película EMPTY>

(ya que estamos hablando de un elemento vacío).

• Los atributos se definirían así:<!ATTLIST película título CDATA “”><!ATTLIST película título CDATA “”>

• Y el documento completo sería…

Page 43: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD

<?xml version=“1.0”?>

<!DOCTYPE película [

<!ELEMENT película EMPTY>

<!ATTLIST película título CDATA “”>

<!ATTLIST película duración CDATA “”>

]>

<película título=“El Padrino” duración=“180”/>

Page 44: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD• Los valores predeterminados que puede tener un

atributo son:– #IMPLIED indica que es opcional aplicar un valor a un atributo,

es decir, se trata de un atributo opcional y no indicamos ningún valor predeterminado.

– #REQUIRED indica que es obligatorio asignar un valor al atributo. Es decir: el atributo debe obligatoriamente aparecer.

– #FIXED valor indica que el valor del atributo debe ser el indicado y no es posible cambiarlo.

– valor indica que el valor asignado es el predeterminado.

• Ejemplos:<!ATTLIST imagen ancho CDATA #REQUIRED> <!ATTLIST alumno nota CDATA “5”> <!ATTLIST persona edad CDATA #IMPLIED>

Page 45: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD• También podemos indicar una lista de posibles valores

para el atributo.

• Ejemplo: queremos incluir un atributo con una calificación para cada película, del 1 al 5, con valor predeterminado 3. Lo haríamos de la siguiente forma:

<!ATTLIST película nota (1 | 2 | 3 | 4 | 5) “3”>

• Por lo que estas definiciones serían válidas:<película título=“El Padrino” nota=“5”/><película título=“El Padrino”/>

• Pero ésta no:<película título=“El Padrino” nota=“7”/>

Page 46: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD<?xml version=“1.0”?><!DOCTYPE película [

<!ELEMENT película EMPTY><!ATTLIST película título CDATA “”><!ATTLIST película duración CDATA “”><!ATTLIST película nota (1 | 2 | 3 | 4 | 5) “3”>

]><película título=“El Padrino” duración=“180”/>

Page 47: Unidad 1   lenguajes de marcas

Definición de atributos en un DTD

• Los tipos de datos principales que pueden ir asociados a un atributo son:– CDATA un valor cualquiera– (valor1 | valor2 | … ) un valor dentro del rango

enumerado.– ID un valor único.– IDREF un valor único previamente indicado.– IDREFS varios IDREF.– NMTOKEN un nombre con sólo caracteres XML válidos

(letras, números, puntos, guiones, subrayados y los dos puntos)

– NMTOKENS varios NMTOKEN.

Page 48: Unidad 1   lenguajes de marcas

Codificación• El Estándar Unicode es un estándar de codificación de

caracteres diseñado para facilitar el tratamiento informático de textos de múltiples lenguajes y disciplinas técnicas (ejemplo: música) además de textos clásicos de lenguas muertas.

• Unicode define tres formas de codificación con el nombre UTF (Formato de Transformación Unicode, Unicode Transformation Format): UTF-8, UTF-16 y UTF-32. Las formas de codificación simplemente describen el modo en que se representan los códigos.

• Cuando escribimos en el prólogo encoding=“UTF-8” estamos indicando que el documento está codificado en formato UNICODE (podemos utilizar acentos, eñes, etc.).

• http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt• http://www.fileformat.info/info/unicode/

Page 49: Unidad 1   lenguajes de marcas

Entidades• Están delimitadas por el & y el ;• El analizador las sustituye por el valor que corresponda.• Existen 5 entidades predeterminadas, que nos permiten

utilizar otros tantos símbolos en nuestros documentos XML:

NOMBRE CARÁCTER ALIAS

Ampersand & &amp;

Menor que < &lt;

Mayor que > &gt;

Comillas simples ‘ &apos;

Comillas dobles “ &quot;

Page 50: Unidad 1   lenguajes de marcas

Entidades• Ejemplo:

<?xml version=“1.0” encoding=“UTF-8”?><película>Tango &amp; Cash</película>

• No utilizaremos únicamente las entidades predeterminadas. Podemos crear las nuestras para:– Insertar caracteres especiales.– Simplificar textos largos y repetitivos.– Incluir ficheros externos en los documentos.

• Véamoslo:

Page 51: Unidad 1   lenguajes de marcas

Caracteres especiales• Se declaran de la siguiente forma:

<!ENTITY nombre valor_de_sustitución>• Ejemplo: supongamos que queremos almacenar un

precio en euros:<precio>19,95 &#x20ac;</precio>

(&#x20ac es el código UNICODE del símbolo del euro).• Simplificaremos la tarea de indicar el euro usando la

siguiente nomenclatura:<!ENTITY euro “&#x20ac;”>

• A partir de este momento podremos incluir el símbolo del euro así:

<precio>19,95 &euro</precio>

• El documento completo sería:

Page 52: Unidad 1   lenguajes de marcas

Caracteres especiales<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE precio [

<!ELEMENT precio (#PCDATA)>

<!ENTITY euro "&#x20ac;">

]>

<precio>19,95 &euro;</precio>

Page 53: Unidad 1   lenguajes de marcas

Textos que se repiten• Supongamos que queremos incluir para cada película

una frase de recomendación: “Obra maestra”, “Muy mala”, etc.

• Nos creamos las entidades:<!ENTITY om “Obra maestra”><!ENTITY mm “Muy mala”>

• Pudiéndolas utilizar de la siguiente manera:<película>

<título>El Padrino</título><calificación>&om;</calificación>

</película>

Page 54: Unidad 1   lenguajes de marcas

Incluir ficheros externos• Supongamos que tenemos el siguiente documento xml:

<?xml version=“1.0” encoding=“UTF-8”?><notas>

<nota>El propietario no se hace responsable de las opiniones vertidas por los autores.</nota></notas>

• En el ejemplo de la diapositiva anterior podemos incluir la línea:<!ENTITY notas SYSTEM “notas.xml”>

• De manera que siempre que usemos la entidad &notas; se sustituirá su valor por el contenido del archivo (el archivo “notas.xml” está en el mismo directorio que el archivo actual).

Page 55: Unidad 1   lenguajes de marcas

Conclusiones DTD• Nos permiten crear documentos XML válidos y lograr la

uniformidad en cuanto a su formato.• Utilizar DTD para validar documentos XML ahorra el

tiempo y esfuerzo de una revisión manual, porque se puede hacer de forma automática.

• No es perfecto: por ejemplo, no se puede restringir el tipo de datos de los elementos, ya que se supone que todo es texto. Nos es posible restringir el tipo de datos a los números enteros, por ejemplo.

• Existe un sistema de validación más potente: los esquemas, que veremos más adelante.