1 cuaderno trabajo xml

57
CUADERNO DE TRABAJO Diseñadora: M. en A. N. ANA MARÍA TORRES JIMENO Abril/2011 1

Upload: marianajt

Post on 04-Jul-2015

629 views

Category:

Documents


3 download

TRANSCRIPT

Page 2: 1 Cuaderno Trabajo XML

Objetivo general del curso 3

Objetivos específicos del curso 3

Introducción 4

Tema 1. ¿Qué es XML?1.

6

Tema 2. Estructura de XML 7

Tema 3. Características de XML 8

Tema 4. Edición de archivos XML 9

Tema 5. Sintaxis XML 14

Tema 6. Construcción de archivos XML 23

Tema 7. Explotación de archivos XML a través de HTML 39

Glosario 44

Referencias Bibliográficas y Cibergráficas 45

2

Page 3: 1 Cuaderno Trabajo XML

OBJETIVO GENERAL DEL CURSO

Al final del curso el participante será capaz de crear documentos web en el lenguaje XML y explotarlos a través del lenguaje

HTML.

OBJETIVOS ESPECÍFICOS DEL CURSO

El participante identificará la diferencia entre XML y HTML, así como la aplicación de XML en el ambiente web.

Identificará la estructura de un documento XML.

Creará documentos XML aplicando la sintaxis correspondiente.

Aplicará los recursos de XML para manipular un documento web en HTML.

3

Page 4: 1 Cuaderno Trabajo XML

INTRODUCCIÓN

HTML es un lenguaje de diseño web con ciertas limitaciones, considerado como el estándar

de Internet. El avance ha sido constante y se han ido añadiendo nuevos elementos

conforme a las necesidades, adaptando HTML a los requerimientos del mercado. Sin

embargo, esto ha generado incompatibilidades de los documentos HTML en las distintas

plataformas y navegadores.

Esta necesidad ha desembocado en el desarrollo de nuevos estándares que tratan de cubrir

aquello a lo que no llega HTML.

El aumento del número de usuarios que crean sus propias páginas HTML ha hecho que

éstas aumenten también considerablemente, y con él, el número de soluciones distintas

ante los más variados problemas. Así, cada vez son más frecuentes las páginas que

contienen tablas, estadísticas, formularios repletos de datos que proceden de alguna fuente

de información estructurada.

Hasta ahora, todo lo que ha tenido que ver con el tratamiento y la manipulación de datos se

ha realizado en el servidor. Por lo general, éste busca, calcula, organiza y finalmente

transforma en HTML para devolver al cliente una bonita página repleta de información que

ya no es operativa porque el contenido de las mismas es solamente gráfico y no puede ser

reprocesado para nuevos cálculos. Esta situación origina continuas llamadas al servidor, el

4

El presente documento es el cuaderno de trabajo del participante, constituido por información teórica de los temas del curso, actividades de aprendizaje, ejemplos y las referencias bibliográficas que sirvieron de base para el desarrollo teórico del curso y la inclusión de los ejercicios.

Su objetivo es servir como un material didáctico que apoya a los integrantes de este curso de capacitación para abordar los temas que permitirán alcanzar los objetivos de aprendizaje propuestos. Su finalidad principal es: apoyar para que el participante aprenda los contenidos. Tiene una intención claramente didáctica.

Page 5: 1 Cuaderno Trabajo XML

cual tiene que cargar con la mayor parte de las tareas relacionadas con el tratamiento de la

información.

El W3C (World Wide Web Consortium) hizo pública la propuesta de estándar XML en 1998.

Este estándar nace con el propósito de dar respuesta a todas las cuestiones anteriormente

planteadas. XML permite incluir datos dentro de los documentos web, de modo que los

navegadores puedan realizar, en el mismo cliente, tareas de manipulación de los mismos,

eliminando de esta forma las continuas conexiones al servidor. De este modo muchas

aplicaciones web trabajan con HTML y XML de forma complementaria para conseguir mejores

resultados que con las soluciones clásicas.

5

Page 6: 1 Cuaderno Trabajo XML

Tema 1. Qué es XML?

XML eXtensible Mark-up Language - Lenguaje de Marcado Extensible o Formato Ampliable

XML es un lenguaje de marcado, como el lenguaje HTML, lo cual significa que utiliza

etiquetas. Pero, sorprendentemente XML no hace nada. Simplemente describe

información y la distribuye en un formato independiente de la plataforma.

XML es un sistema independiente de la plataforma porque no usa un lenguaje específico.

Las etiquetas de XML no están predefinidas, lo cual significa que cada uno escribe sus

propias etiquetas. La ventaja de esto es que XML no precisa ninguna explicación

adicional.

Por ser un lenguaje de marcado, XML sirve para modificar el significado de otros

símbolos que se envían, para dotarlos de mayor significado. Es extensible debido a que

el conjunto de símbolos no es fijo y puede ampliarse para que pueda abarcar

prácticamente cualquier ámbito en el que sea preciso identificar —marcar— cualquier

otro tipo de información.

XML no es un sustituto de HTML y su objetivo es totalmente distinto. XML fue diseñado

para describir, almacenar e intercambiar datos, mientras que HTML fue diseñado

para presentar datos en un formato legible para las personas.

En ningún caso XML es un sustituto de HTML. El primero es un lenguaje de descripción de datos y el segundo es un lenguaje utilizado para determinar y organizar la visualización de la información. Por lo tanto, ambos realizan tareas totalmente distintas, pero complementarias entre sí.

6

Nota

Page 7: 1 Cuaderno Trabajo XML

Estructura de XML

HTML utiliza un conjunto predefinido de elementos (llamados etiquetas y atributos) para

definir aspectos visuales de un documento, como el diseño de la página o el formato del

texto, y para incluir vínculos a documentos o imágenes. En HTML, está limitado a usar el

conjunto de etiquetas de HTML. Por tanto, el tipo de información que puede mostrar es

limitado. Por ejemplo, mostrar una fórmula matemática con HTML puede ser muy

complicado.

XML resuelve este tipo de problemas mediante la extensibilidad: puede "inventar" sus

propias etiquetas y su propia estructura del documento. Se pueden añadir o eliminar

elementos sin que esto afecte a la estructura global del documento.

El aspecto de XML es muy parecido al de cualquier documento HTML. Los datos contenidos

en las páginas XML están estructurados mediante etiquetas del tipo:

<concepto> … </concepto>

Ejemplo de la Estructura de XML

7

<documento>

<libro>

<titulo>El fin de la Eternidad</titulo>

<autor>Isaac Asimov</autor>

</libro>

<libro>

<titulo>Building Cocoa Applications</titulo>

<subtitulo>A Step-by-Step Guide</subtitulo>

<autor>Simson Garfinkel</autor>

<autor>Michael Mahoney</autor>

</libro>

</documento>

Page 8: 1 Cuaderno Trabajo XML

Como puede observar, XML también utiliza etiquetas, pero a diferencia de lo que ocurre con

el lenguaje HTML, estas etiquetas permiten describir el contenido en lugar de representarlo.

Puesto que se trata de describir los datos, y éstos pueden ser de la más diversa índole, XML

le permite crear sus propias etiquetas, así como los atributos de las mismas. La única

restricción que se debe atender es un conjunto de normas de sintaxis muy estrictas, que

están pensadas para garantizar la consistencia de los datos representados.

Características de XML

En el ejemplo anterior, se pueden observar varias de las características de XML:

Se utilizan etiquetas, entre llaves angulares < >, para marcar, esto es, calificar, la

información a la que rodean.

Hay dos tipos de etiquetas, las de apertura, < >, y las de cierre. En realidad, hay un tercer

tipo, las de autocierre, que no rodean a ninguna otra información, y que son, por ejemplo,

así: <br />.

Las etiquetas no se entrecruzan, esto es, la última en abrirse siempre ha de ser la

primera en cerrarse.

El archivo XML es fácil de leer, no sólo para un ordenador, sino también para una

persona; en efecto, cualquiera puede entender que la información anterior se refiere a un

par de libros, y que los títulos y autores estaban agrupados jerárquicamente. Uno de los

libros sólo tenía título y autor, y el otro tenía título, subtítulo, e incluso un par de autores.

8

Page 9: 1 Cuaderno Trabajo XML

Edición de archivos XML

Puede escribir un documento XML nuevo en Dreamweaver y luego obtener una vista previa

en un navegador.

Para crear un documento XML nuevo en Dreamweaver, haga clic en el menú Archivo y

seleccione Nuevo. En la ventana Nuevo documento, seleccione la categoría Página básica y

luego seleccione XML en la lista de páginas básicas.

9

Page 10: 1 Cuaderno Trabajo XML

A continuación, haga clic en el botón Crear. Dreamweaver creará un documento que

contiene una línea similar a la siguiente:

<?xml version="1.0" encoding="iso-8859-1"?>

Esta línea es la declaración XML y debe incluirse al principio de cada documento XML. Esta

línea indica la versión de XML y el juego de caracteres utilizado en el documento.

Escriba el texto en el nuevo documento XML después de la primera línea. Podrá observar

que Dreamweaver incluye color en la sintaxis para los documentos XML:

Figura. Color en la sintaxis del código XML

Guarde el documento XML y obtenga una vista previa en el navegador. Podrá observar que

su navegador también colorea el código y muestra el documento XML como un árbol que

puede contraerse (si su navegador admite XML).

10

Page 11: 1 Cuaderno Trabajo XML

Figura. Árbol XML que puede contraerse.

Nota: la mayoría de los navegadores admiten XML de forma

predeterminada.

Si hace clic en el signo menos al lado de cada etiqueta podrá contraer el elemento. Para

expandir un elemento, haga clic en el signo más situado junto al elemento.

Figura. El árbol XML puede expandirse y contraerse haciendo clic en el signo más y

en el signo menos.

El mismo ejemplo se podría escribir en HTML de la siguiente forma:

<table>

<tr>

<td>John Doe</td>

<td>Software Analyst</td>

<td>2000</td>

</tr>

<tr>

<td>Jane Fletcher</td>

<td>Designer</td>

<td>2500</td>

</tr>

11

Page 12: 1 Cuaderno Trabajo XML

</table>

Si carga la página en el navegador, ésta tendrá el aspecto de una tabla HTLM clásica.

Figura. El mismo contenido mostrado ahora con marcas de HTML

Las etiquetas en el ejemplo anterior fueron diseñadas específicamente para describir la

información relacionada con los empleados de una empresa. Si compara los dos ejemplos,

apreciará que XML se basa en el contenido, mientras que HTML se basa en el formato: los

nombres de las etiquetas XML describen los datos en las propias etiquetas, mientras que las

etiquetas HTML describen la presentación de los datos en las etiquetas.

El objetivo del ejemplo anterior es ilustrar algunas diferencias importantes entre XML y

HTML. Sin embargo, debería tener en cuenta que XML no ha sido diseñado como un

sustituto de HTML, y que no todos los documentos XML pueden convertirse en un

documento HTML.

La portabilidad de XML es consecuencia de que es el propio desarrollador el que define las

etiquetas y los atributos. No se necesitan bibliotecas ni servidores de aplicaciones

especiales para leer un documento XML (aunque su entorno de desarrollo puede necesitar

una configuración especial para ser sensible a XML). Los documentos XML son archivos de

texto normal, por lo que no requieren un software propietario para interpretarlos, como

ocurre con la mayoría de los archivos binarios. Esto significa que puede usar el Bloc de

notas para abrir y editar un archivo XML.

La portabilidad de XML también resulta útil en aplicaciones de comercio electrónico entre

empresas, donde las empresas necesitan intercambiar una gran cantidad de información

financiera de forma independiente de la plataforma. Diversas aplicaciones

12

Page 13: 1 Cuaderno Trabajo XML

utilizan SOAP*(Protocolo sencillo de acceso a objetos), un protocolo muy popular basado en

XML, para intercambiar este tipo de información a través de Internet. Estas aplicaciones

basadas en XML que se utilizan para compartir información se denominan servicios Web.

Debido a que XML separa el contenido de la presentación, es necesario usar otra aplicación

para presentar datos, es decir, todos los requisitos de procesamiento o formato deben ser

manejados por un documento XSL independiente (Lenguaje ampliable de hojas de estilos).

Una hoja de estilos XSL especifica la presentación de los datos contenidos en un archivo

XML. A la hora de mostrar los datos, XML y XSL se combinan y aplican el formato adecuado

a los datos.

Si tiene en cuenta las tres ventajas más destacadas de XML, entenderá inmediatamente en

qué contextos debería usar XML:

En aplicaciones que manejan gran cantidad de datos y, a la vez, necesitan ser flexibles y

ampliables. Por ejemplo, sitios Web, listas de ofertas de empleo o aplicaciones financieras.

En aplicaciones donde la presencia de contenidos redundantes sea un peligro, como en

sistemas de administración de contenido, bibliotecas de documentos o sistemas de

seguimiento de sitios Web.

En aplicaciones donde es necesario intercambiar gran cantidad de datos a través de

distintas plataformas, como las aplicaciones B2B, clientes de correo electrónico compatibles

con servidores de noticias o dispositivos móviles.

En aquellas situaciones donde la información debe estar disponible para un gran número de

clientes. Por ejemplo, titulares de noticias, comunicados de prensa de empresas, avisos y

anuncios importantes, marcadores, listas de reproducción, calendarios de eventos o listas

de correo.

En la actualidad, XML se usa habitualmente para transferir datos entre diferentes

aplicaciones de bases de datos.

13

Page 14: 1 Cuaderno Trabajo XML

Sintaxis de XML

La sintaxis es bastante simple y sus reglas son claras y sencillas. Un documento XML está

formado por una declaración XML y un elemento raíz o una etiqueta que contiene varios

elementos anidados. Para empezar, enumeraré las reglas de sintaxis más importantes:

Todos los documentos XML deben tener un elemento raíz.

Todos los elementos XML deben tener una etiqueta de cierre.

Las etiquetas distinguen entre mayúsculas y minúsculas.

Todos los elementos XML deben estar anidados correctamente.

Los atributos deben estar incluidos en la etiqueta de apertura y deben ser escritos entre

comillas.

Todos los documentos XML deben empezar con la declaración XML. Si utiliza Dreamweaver

para crear sus propios documentos XML, la declaración XML se añade automáticamente.

Las aplicaciones que llaman al documento XML utilizan la declaración XML con el fin de leer

e interpretar correctamente la información. De forma predeterminada, Dreamweaver crea

documentos XML que cumplen la especificación 1.0 y utilizan el juego de caracteres iso-

8859-1 (Latin-1/West European). La declaración XML no es un elemento y no se trata como

parte de un documento XML.

El siguiente aspecto a considerar es que el documento debería contener un único elemento

raíz. En el ejemplo anterior, el elemento raíz es <department>. Imagínese, sin embargo, que

la empresa tiene más de un departamento.

14

Page 15: 1 Cuaderno Trabajo XML

¿Se podría añadir un segundo elemento<department> al documento, como el que se

muestra a continuación?

<?xml version="1.0" encoding="iso-8859-1"?>

<department> </department>

<department> </department>

No. En este caso, tendría que definir un nuevo elemento raíz: <company>. El nuevo elemento

raíz puede tener ahora todos los elementos hijo (departamentos) que se deseen:

<company>

<department>

<employee>

<name>John Doe</name>

<job>Software Analyst</job>

<salary>2000</salary>

</employee>

<employee>

<name>Jane Fletcher</name>

<job>Designer</job>

15

Page 16: 1 Cuaderno Trabajo XML

<salary>2500</salary>

</employee>

</department>

<department>

<employee>

</employee>

</department>

</company>

El resto de los elementos hijo debe incluirse en el ámbito de la etiqueta raíz.

En HTML se pueden utilizar elementos con una única etiqueta como <hr> o <br>. Sin

embargo, en XML, todos los elementos deben tener una etiqueta de cierre. Si se omite la

etiqueta de cierre, el navegador devolverá un error similar a éste:

The following tags were not closed: department. Error processing

resource 'http://www.domain.org/company.xml'.

Una de las nuevas funciones de Dreamweaver es la terminación automática de código

predeterminada, que también está disponible para los archivos XML. Si se escribe lo

siguiente:

<company>

<department>

<employees>

Dreamweaver cerrará automáticamente las etiquetas cuando se escriba </. En el ejemplo

anterior, la primera vez que se escriba </, Dreamweaver insertará </item>. La próxima vez

que se escriba </, Dreamweaver insertará </items>. La siguiente vez que se escriba </,

16

Page 17: 1 Cuaderno Trabajo XML

Dreamweaver insertará </root>. Dreamweaver interpreta la posición en la que se encuentra

en la página y cierra la etiqueta de forma correspondiente. La terminación automática de

código puede ayudarle enormemente a producir documentos XML bien escritos,

especialmente si no es un experto en código.

Además, los nombres de etiquetas distinguen entre mayúsculas y minúsculas. Por lo tanto,

<Department> es un elemento totalmente distinto a <department> o a <DEPARTMENT>.

Obviamente, las etiquetas de apertura y cierre de un mismo elemento deben escribirse con el

mismo tipo de letras (mayúsculas o minúsculas). El siguiente ejemplo muestra un par de

etiquetas no válidas en XML:

<JOB>Software Analyst </job>

Como hemos visto antes, los elementos XML se relacionan mediante relaciones padre-hijo. En

el ejemplo anterior, <employee> es un hijo de <department>, el cual, a su vez, es un hijo del

elemento raíz único, <company>. Para preservar estas relaciones, los elementos deben estar

correctamente anidados. En HTML, las etiquetas pueden entrelazarse, como se muestra en el

siguiente ejemplo. Sin embargo, esto no es posible en XML, ya que los elementos deben estar

siempre anidados de forma jerárquica.

<b>This text is <i> emphasized </b> and italic</i>.

Esto es perfectamente válido en HTML y se muestra en un navegador del siguiente modo:

17

Page 18: 1 Cuaderno Trabajo XML

Figura . Un anidamiento de este tipo es válido en HTML pero no en XML

18

Page 19: 1 Cuaderno Trabajo XML

En XML, el contenido o la información real se almacena en los elementos y/o en sus atributos.

Un elemento puede contener texto sencillo, otros elementos o ambos. Por ejemplo, el

siguiente elemento:

<employee>

<name>John Doe</name>

<job>Software Analyst</job>

<salary>2000</salary>

</employee>

se puede escribir también del siguiente modo:

<employee>

John Doe

<job>Software Analyst</job>

<salary>2000</salary>

</employee>

Esto significa que el elemento employee tiene un contenido mixto: texto sencillo y otros

elementos.

19

Page 20: 1 Cuaderno Trabajo XML

También se permite el uso de elementos vacíos. El siguiente elemento se podría interpretar

como "tenemos una oferta de empleo, pero todavía estamos buscando a la persona

adecuada".

<employee></employee>

El mismo elemento se podría escribir de otra forma utilizando atributos:

<employee job="Software Analyst">

John Doe

<salary>2000</salary>

</employee>

En XML, se llama atributos a las propiedades de un elemento. Los atributos describen sus

características. Se pueden utilizar comillas sencillas (' ') o dobles (" ") para marcar los valores

de los atributos. Como se puede ver en los ejemplos anteriores, los mismos datos se pueden

almacenar como elementos hijo o como atributos. Entonces, ¿qué método es mejor? En

teoría, los atributos se deberían utilizar sólo para proporcionar información adicional sobre los

datos; es decir, cuando se necesitan metadatos. Por ejemplo:

<employee id="31">

<name>John Doe</name>

<job>Software Analyst</job>

<salary>2000</salary>

20

Page 21: 1 Cuaderno Trabajo XML

</employee>

El ID del empleado (employee id) no es relevante en este caso para los datos. Sin embargo,

este ID puede ser usado por un software que procese XML para identificar al empleado con

mayor rapidez. Este tipo de información se denomina metadatos, es decir, datos sobre los

datos.

Usar atributos en lugar de elementos tiene también ciertas desventajas. La estructura global

del documento XML es menos clara y menos ampliable. Además, los atributos no pueden

tener múltiples valores y resulta más complicado trabajar con ellos. Imagine por ejemplo que

la información de un empleado se almacenara de la siguiente manera:

<employee name="John Doe" job="Software Analyst" salary="2000"></employee>

Esto iría totalmente en contra del propósito de un documento XML: mostrar la información

bien estructurada y fácil de intercambiar.

¿Qué tipo de nombres se pueden utilizar?

Es posible que se haga la siguiente pregunta: ¿puedo usar cualquier nombre para un

elemento?" La respuesta es Sí y No.

Se puede utilizar cualquier cosa como nombre de un elemento, puesto que no existen

palabras reservadas en XML, PERO se deben seguir unas sencillas reglas de asignación de

nombres:

Los nombres pueden contener cualquier carácter alfanumérico, pero no pueden

comenzar con un número o un carácter de puntuación.

Los nombres no pueden contener espacios.

21

Page 22: 1 Cuaderno Trabajo XML

Los nombres no pueden comenzar con las letras xml, ya que se podría confundir con una

definición de un documento XML.

No se deben usar caracteres ":" en los nombres de elementos.

Aunque está permitido utilizar los caracteres "." y "-" en los nombres de elementos, yo no lo

recomendaría. La aplicación que procesa el archivo XML podría interpretar estos signos

como operadores. Si necesita usar un nombre largo, puede sustituir los símbolos anteriores

por el carácter "_", como se muestra en el siguiente ejemplo:

<employee>

<first_name>John</first_name>

<last_name>Doe</last_name>

<job>Software Analyst</job>

<salary>2000</salary>

</employee>

¿Se puede usar cualquier cosa como contenido de un elemento?

Sí, prácticamente cualquier cosa. También se pueden utilizar caracteres que no sean en

inglés, pero asegúrese de que selecciona el juego de caracteres correcto y de que la

aplicación cliente que procesa el documento XML admite contenido que no esté en inglés.

Además, a diferencia de lo que ocurre en HTML, se conservan los espacios en blanco que

aparecen dentro del contenido. Esto significa que se pueden escribir varios espacios

seguidos sin que éstos sean eliminados.

22

Page 23: 1 Cuaderno Trabajo XML

Todos los lenguajes de programación o de formato permiten el uso de comentarios, así que

XML también lo permite. La sintaxis es igual que en HTML:

<!-- This employee deserves a raise. -->

23

Page 24: 1 Cuaderno Trabajo XML

Construcción de archivos XML

Cada documento XML posee una estructura lógica y una física. La estructura lógica del

documento es una serie de declaraciones, elementos, comentarios, etc. que se indican en el

documento mediante marcas explícitas. La estructura física del documento es una serie de

unidades llamadas entidades, es decir, indica los datos que contendrá el documento. Las

estructuras lógica y física deben anidarse de forma correcta.

Documentos XML bien formados

Los documentos denominados como «bien formados» son aquellos que cumplen con todas

las definiciones básicas de formato y pueden, por lo tanto, analizarse correctamente por

cualquier analizador sintáctico (parser) que cumpla con la norma:

Los documentos XML sólo permiten un elemento raíz del que todos los demás sean parte,

es decir, solo pueden tener un elemento inicial.

Los valores atributos en XML siempre deben estar encerrados entre comillas simples o

dobles.

El XML es sensible a mayúsculas y minúsculas. Existe un conjunto de caracteres llamados

espacios en blanco (espacios, tabuladores, retornos de carro, saltos de línea) que los

procesadores XML tratan de forma diferente en el marcado XML.

Es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos

particulares, etc.

Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan

marcas; son partes del documento que el procesador XML espera entender. El resto del

documento entre marcas son los datos «entendibles» por las personas.

24

Page 25: 1 Cuaderno Trabajo XML

Partes de un documento XML

Un documento XML está formado por el prólogo y por el cuerpo del documento, así como

texto de etiquetas que contiene la referencia opcional a la que se refiere el documento.

Prólogo

Aunque no es obligatorio, los documentos XML pueden empezar con unas líneas que

describen la versión XML, el tipo de documento y otras cosas.

El prólogo de un documento XML contiene:

Una declaración XML. Es la sentencia que declara al documento como un documento

XML, es decir, define la versión de XML usada. Hasta ahora sólo hay una, la "1.0" Además,

en la "declaración XML" especificamos la codificación del documento, que puede ser, por

ejemplo, US-ASCII (7 bits) o UTF-8 (código Unicode del que el ASCII es un subconjunto),

UCS-2, EUC-JP, Shift_JIS, Big5, ISO-8859-1 hasta ISO- 8859-7. En general, y para uso

con lenguajes europeos (incluyendo el juego de caracteres especiales del castellano,

usamos UTF-7 o ISO-8859-1) Además, se puede incluir una declaración de documento

autónomo ( standalone), que controla qué componentes de la Declaración de Tipo de

Documento (DTD – Document Type Definition) son necesarios para completar el

procesamiento del documento.

Una declaración de tipo de documento. Enlaza el documento con su DTD (Document Type

Definition/Definición de Tipo de Documento), o el DTD puede estar incluido en la propia

declaración o ambas cosas al mismo tiempo.

Dicha declaración define qué tipo de documento estamos creando para ser procesado

correctamente. Es decir, definimos que Declaración de Tipo de Documento valida y define los

datos que contiene nuestro documento XML.

En ella se define el tipo de documento, y dónde encontrar la información sobre su Definición

de Tipo de Documento, mediante un identificador público (PUBLIC) que hace referencia a

25

Page 26: 1 Cuaderno Trabajo XML

dicha DTD, o mediante un Identificador Universal de Recursos (URI) precedido por la palabra

SYSTEM.

Ejemplos:

<?xml version="1.0" encoding="UTF-7" standalone="yes"?><!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"><!DOCTYPE HTML PUBLIC "-/ /W3C/ /DTD HTML 3.2 Final/ /EN">

<!DOCTYPE LABEL SYSTEM "http://www.empresa.com/dtds/label.dtd">

Uno o más comentarios e instrucciones de procesamiento.

Cuerpo

A diferencia del prólogo, el cuerpo no es opcional en un documento XML, el cuerpo debe

contener un y solo un elemento raíz, característica indispensable también para que el

documento esté bien formado.

Elementos

Los elementos XML pueden tener contenido (más elementos, caracteres o ambos), o bien ser

elementos vacíos.

Un elemento con contenido es, por ejemplo:

<nombre>Juan Pérez</nombre>

Siempre empieza con una <etiqueta> que puede contener atributos o no, y termina con una </etiqueta> que debe tener el mismo nombre. Al contrario que HTML, en XML siempre se debe "cerrar" un elemento.

Un elemento vacío es, por ejemplo:

<identificador DNI="23123244"/>

<linea-horizontal/>

Al no tener una etiqueta de "cierre" que delimite un contenido, se utiliza la forma

<etiqueta/>, que puede contener atributos o no. La sintaxis de HTML permite etiquetas

vacías tipo <hr> o <img src="...">. En HTML reformulado para que sea un documento

XML bien-formado, se debería usar <hr/> o <img src="..."/>

26

Page 27: 1 Cuaderno Trabajo XML

Atributos

Los elementos pueden tener atributos, que son una manera de incorporar características o

propiedades a los elementos de un documento. Deben ir entre comillas.

Por ejemplo, un elemento «estudiante» puede tener un atributo «Mario» y un atributo

«tipo», con valores «toma helado» y «mexicano» respectivamente.

<Estudiante Mario=" toma helado" tipo=" mexicano">Esto es un día que

Mario va paseando…</Estudiante>

Entidades predefinidas

En XML 1.0, se definen cinco entidades para representar caracteres especiales y que no se

interpreten como marcado por el procesador XML. Es decir, que así podemos usar el

carácter "<" sin que se interprete como el comienzo de una etiqueta XML, por ejemplo.

Secciones CDATA

Existe otra construcción en XML que permite especificar datos, utilizando cualquier carácter,

especial o no, sin que se interprete como marcado XML. La razón de esta construcción

llamada CDATA (Character Data) es que a veces es necesario para los autores de

27

Page 28: 1 Cuaderno Trabajo XML

documentos XML, poder leerlo fácilmente sin tener que descifrar los códigos de entidades.

Especialmente cuando son muchas.

Como ejemplo, el siguiente (primero usando entidades predefinidas, y luego con un bloque

CDATA):

<parrafo>Lo siguiente es un ejemplo de HTML.</html><ejemplo>&lt;HTML>&lt;HEAD>&lt;TITLE>Rock &amp; Roll&lt;/TITLE>&lt;/HEAD></ejemplo>

<ejemplo><![CDATA[<HTML><HEAD><TITLE>Rock & Roll</TITLE></HEAD>]]>

</ejemplo>

Comentarios

Comentarios a modo informativo para el programador que han de ser ignorados por el

procesador. Los comentarios en XML tienen el siguiente formato:

<!--- Esto es un comentario ---> <!-- Otro comentario -->

Declaración de documento Standalone

En la parte del prólogo dentro de la "declaración" se puede incluir una declaración de

documento Standalone que controla que componentes de la DTD son necesarios para

completar el procesamiento del documento.

Ejemplo:

<?xml version="1.0" standalone='yes'?>

<nombre>Ricardo</nombre>

28

Page 29: 1 Cuaderno Trabajo XML

El valor "yes" indica que no existen declaraciones de marcas externas a la entidad

documento. El valor "no" indica que existe o que pueden haber dichas declaraciones de

marcas. La declaración de un documento Standalone sólo denota la presencia de

declaraciones externas.

Ejercicios

Ejercicio 1: Hacer un documento standalone de XML sobre una base de datos de alumnos

usando sólo elementos con contenido (por ejemplo, nombre, apellidos, dirección, matricula,

e-mail). Prueba que esté bien formado en el Internet Explorer o en el Mozilla.

Ejercicio 2: Pasar el anterior documento XML a elementos sin contenido, usando atributos.

Prueba que esté bien formado en el Internet Explorer o en el Mozilla.

29

Page 30: 1 Cuaderno Trabajo XML

Document Type Definitions (DTDs)

La Definición de Tipo de Documento nos permitiría, por ejemplo, crear un DTD que defina una

tarjeta de visita A partir de ese DTD, tendríamos una serie de elementos XML que nos

permitirían definir tarjetas de visita. La DTD define los tipos de elementos, atributos y

entidades permitidas, y puede expresar algunas limitaciones para combinarlos.

Los documentos XML que se ajustan a su DTD, se denominan "válidos". El concepto de

"validez" no tiene nada que ver con el de estar "bien-formado". Un documento "bien formado"

simplemente respeta la estructura y sintaxis definidas por la especificación de XML. Un

documento "bien-formado" puede además ser "válido" si cumple las reglas de una DTD

determinado.

La DTD puede residir en un fichero externo, y quizá compartido por varios documentos. O

bien, puede estar contenida en el propio documento XML, como parte de su declaración de

tipo de documento.

Eemplo:

<!ELEMENTO EJEMPLO (#PCDATA)>

<!-- ¡Esto es un comentario! -->

]>

<EJEMPLO>texto texto texto

<!-- Otro comentario -->

</EJEMPLO>

<!—Un comentario más -->

<!DOCTYPE etiqueta[

<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>

<!ELEMENT nombre (#PCDATA)>

<!ELEMENT calle (#PCDATA)>

<!ELEMENT ciudad (#PCDATA)>

30

Page 31: 1 Cuaderno Trabajo XML

<!ELEMENT pais (#PCDATA)>

<!ELEMENT codigo (#PCDATA)>

]>

<etiqueta>

<nombre>Fulano Mengánez</nombre>

<calle>c/ Mayor, 27</calle>

<ciudad>Valderredible</ciudad>

<pais>España</pais>

<codigo>39343</codigo>

</etiqueta>

La declaración del tipo de documento comienza en la primera línea y termina con "]>". Las

declaraciones DTD son las líneas que empiezan con "<!ELEMENT" y se denominan

declaraciones de tipo elemento. También se pueden declarar atributos, entidades y

anotaciones para una DTD.

En el ejemplo anterior, todas las declaraciones DTD que definen "etiqueta" residen dentro del

documento. Sin embargo, la DTD se puede definir parcial o completamente en otro lugar. Por

ejemplo:

<?xml version="1.0"?>

<!DOCTYPE coche SYSTEM "http://www.sitio.com/dtd/coche.dtd">

<coche>

<modelo>...</modelo>

...

</coche>

Declaraciones de tipo de elemento

Las declaraciones de tipo de elemento deben empezar con "<!ELEMENT" seguidas por el

identificador genérico del elemento que se declara. A continuación tienen una especificación

de contenido.

31

Page 32: 1 Cuaderno Trabajo XML

Por ejemplo:

<!ELEMENT receta (titulo, ingredientes, procedimiento)>

En este ejemplo, el elemento <receta> puede contener dentro elementos <titulo>,

<ingredientes> y <procedimiento>, que, a su vez, estarán definidos también en la

DTD y podrán contener más elementos.

Siguiendo la definición de elemento anterior, este ejemplo de documento XML sería válido:

<receta>

<titulo>...</titulo>

<ingredientes>...</ingredientes>

<procedimiento>...</procedimiento>

</receta>

Pero no este:

<receta>

<parrafo>Esto es un párrafo</parrafo>

<titulo>...</titulo>

<ingredientes>...</ingredientes>

<procedimiento>...</procedimiento>

</receta>

La especificación de contenido puede ser de cuatro tipos:

EMPTY

Puede no tener contenido. Suele usarse para los atributos.

<!ELEMENT salto-de-pagina EMPTY>

ANY

Puede tener cualquier contenido. No se suele utilizar, ya que es conveniente estructurar

adecuadamente nuestros documentos XML.

<!ELEMENT batiburrillo ANY>

32

Page 33: 1 Cuaderno Trabajo XML

Mixed

Puede tener caracteres de tipo datos o una mezcla de caracteres y sub-elementos

especificados en la especificación de contenido mixto.

<!ELEMENT enfasis (#PCDATA)>

<!ELEMENT parrafo (#PCDATA|enfasis)*>

Por ejemplo, el primer elemento definido en el ejemplo (<enfasis>) puede contener datos

de carácter (#PCDATA). Y el segundo (<parrafo>) puede contener tanto datos de

carácter (#PCDATA) como sub-elementos de tipo <enfasis>.

Element

Sólo puede contener sub-elementos especificados en la especificación de contenido.

<!ELEMENT mensaje (remite, destinatario, texto)>

Para declarar que un tipo de elemento tenga contenido de elementos se especifica un

modelo de contenido en lugar de una especificación de contenido mixto o una de las claves

ya descritas.

Modelos de contenido

Un modelo sencillo puede tener un solo tipo de sub-elemento:

<!ELEMENT aviso (parrafo)>

Esto indica que <aviso> sólo puede contener un solo <parrafo>.

<!ELEMENT aviso (titulo, parrafo)>

La coma, en este caso, denota una secuencia. Es decir, el elemento <aviso> debe

contener un <titulo> seguido de un <parrafo>.

<!ELEMENT aviso (parrafo | grafico)>

33

Page 34: 1 Cuaderno Trabajo XML

La barra vertical "|" indica una opción. Es decir, <aviso> puede contener o bien un

<parrafo> o bien un <grafico>. El número de opciones no está limitado a dos, y se

pueden agrupar usando paréntesis.

<!ELEMENT aviso (titulo, (parrafo | grafico))>

En este último caso, el <aviso> debe contener un <titulo> seguido de un <parrafo> o

de un <grafico>. Además, cada partícula de contenido puede llevar un indicador de

frecuencia, que siguen directamente a un identificador general, una secuencia o una opción,

y no pueden ir precedidos por espacios en blanco.

Para entender esto, vamos a ver un ejemplo.

<!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>

En este caso, <aviso> puede tener <titulo>, o no (pero sólo uno), y puede tener cero o

más conjuntos <parrafo><grafico>, <parrafo><parrafo><grafico>, etc.

Declaraciones de lista de atributos

Los atributos permiten añadir información adicional a los elementos de un documento. La

principal diferencia entre los elementos y los atributos, es que los atributos no pueden

contener sub-atributos. Se usan para añadir información corta, sencilla y desestructurada.

<mensaje prioridad="urgente">

<de>Alfredo Reino</de>

<a>Hans van Parijs</a>

34

Page 35: 1 Cuaderno Trabajo XML

<texto idioma="holandés">

Hallo Hans, hoe gaat het?

...

</texto>

</mensaje>

Otra diferencia entre los atributos y los elementos, es que cada uno de los atributos sólo se puede especificar una vez, y en cualquier orden.

En el ejemplo anterior, para declarar la lista de atributos de los elementos <mensaje> y<texto> haríamos lo siguiente:

<!ELEMENT mensaje (de, a, texto)>

<!ATTLIST mensaje prioridad (normal | urgente) normal>

<!ELEMENT texto(#PCDATA)>

<!ATTLIST texto idioma CDATA #REQUIRED>

Las declaraciones de los atributos empiezan con "<!ATTLIST", y a continuación del

espacio en blanco viene el identificador del elemento al que se aplica el atributo. Despues

viene el nombre del atributo, su tipo y su valor por defecto. En elejemplo anterior, el atributo

"prioridad" puede estar en el elemento <mensaje> y puede tener el valor "normal" o

"urgente", siendo "normal" el valor por defecto si no especificamos el atributo. El

atributo "idioma", pertenece al elemento texto, y puede contener datos de carácter

(CDATA). Es más, la palabra #REQUIRED significa que no tiene valor por defecto y que es

obligatorio especificar este atributo.

35

Page 36: 1 Cuaderno Trabajo XML

Extended Style Language (XSL)

Un mismo documento XML puede tener varias hojas de estilo XSL que lo muestren en

diferentes formatos (HTML, PDF, RTF, VRML, PostScript, sonido, etc.).

La aplicación de una hoja de estilo XSL a un documento XML puede ocurrir tanto en el

origen (por ejemplo, un servlet que convierta de XML a HTML para que sea mostrado a un

navegador conectado a un servidor de web), o en el mismo navegador (como es el caso del

MS IE5, y Netscape 5).

Básicamente, XSL es un lenguaje que define una transformación entre un documento XML

de entrada, y otro documento XML de salida.

Una hoja de estilo XSL es una serie de reglas que determinan cómo va a ocurrir la

transformación. Cada regla se compone de un patrón (pattern) y una acción o plantilla

(template). De este modo, cada regla afecta a uno o varios elementos del documento XML.

El efecto de las reglas es recursivo, para que un elemento situado dentro de otro elemento

pueda ser también transformado. La hoja de estilo tiene una regla raiz que, además de ser

procesada, llama a las reglas adecuadas para los elementos hijos.

Ejemplo:

<libro>

<titulo>Un título cualquiera</titulo>

<capitulos>

<capitulo>

<titulo>Capítulo 1</titulo>

<parrafo>....</parrafo>

<parrafo>....</parrafo>

36

Page 37: 1 Cuaderno Trabajo XML

</capitulo>

<capitulo>

<titulo>Capítulo 2</titulo>

...

</capitulo>

</capitulos>

</libro>

Queremos convertir este documento XML en HTML bien-formado, de la siguiente manera:

<HTML>

<HEAD>

<TITLE>Un título cualquiera</TITLE>

</HEAD>

<BODY>

<H1>Un título cualquiera</H1>

<HR>

<H2>Capítulo 1</H2>

<P>...</P>

<P>...</P>

<HR>

<H2>Capítulo 2</H2>

<P>...</P>

</BODY>

</HTML>

37

Page 38: 1 Cuaderno Trabajo XML

La hoja de estilo XSL necesaria sería algo parecido a lo siguiente:

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="libro">

<HTML>

<HEAD>

<TITLE><xsl:process select="titulo"/></TITLE>

</HEAD>

<BODY>

<H1><xsl:process select="titulo"/></H1>

<xsl:process select="capitulos"/>

</BODY>

</HTML>

</xsl:template>

<xsl:template match="capitulos">

<xsl:process select="capitulo">

</xsl:template>

<xsl:template match="capitulo">

<HR/>

<H2><xsl:process select="titulo"/></H2>

<xsl:process select="parrafo"/>

</xsl:template>

<xsl:template match="parrafo">

<P><xsl:process-children/></P>

</xsl:template>

</xsl:stylesheet>

38

Page 39: 1 Cuaderno Trabajo XML

Ejercicios

1. Analice el siguiente código, transcríbalo a un editor de XML, describa a que se refiere cada una de sus líneas utilizando comentarios sobre el código, idéntelo de manera correcta, pruébelo a través de un parser:

<?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?>

<ficha>

<nombre> Gabriel </nombre>

<apellido> Molina </apellido>

<direccion> Alfredo Vargas #36 </direccion>

</ficha>

2. Considerando el ejemplo anterior, modifíquelo a fin de poder insertar una ficha

más de otra persona.

3. Realizar el análisis del siguiente documento XML, generando el árbol que

representa su estructura en un editor de XML:

<?xml version="1.0"?>

<libro>

<titulo>El Ingenioso Hidalgo Don Quixote de la Mancha</titulo>

<autor>Miguel de Cervantes Saavedra</autor>

<fecha><publicacion>1605</publicacion><edicion>2009</edicion></fecha>

<localizacion><estanteria>B</estanteria><fila>7</fila></localizacion>

</libro>

39

Page 40: 1 Cuaderno Trabajo XML

Explotación de archivos XML a través de HTML

Para mostrar un archivo XML usando HTML no es posible hacerlo de forma directa, para

eso tenemos que usar otro lenguaje de programación, como por ejemplo, algo de JavaScript

Python, Perl, etc.

En este ejemplo mostraremos el Ejemplo   de “Catálogo de CDs” en XML , en una página HTML usando HTML y Javascript.

Lo primero que haremos será guardar el Ejemplo   de Catálogo de CD en XML como catalogo.xml, y crear un archivo .html con el nombre que queramos, y le pondremos lo siguiente:

Documento XML:

<CATALOGO>

    <CD>

        <TITULO>Tinta roja</TITULO>

        <ARTISTA>Andres Calamaro</ARTISTA>

        <ORIGEN>AR</ORIGEN>

        <PRECIO>5.90</PRECIO>

        <ANO>2006</ANO>

    </CD>

    <CD>

        <TITULO>La Lengua Popular</TITULO>

        <ARTISTA>Andres Calamaro</ARTISTA>

        <ORIGEN>AR</ORIGEN>

        <PRECIO>9.90</PRECIO>

        <ANO>2007</ANO>

    </CD>

</CATALOGO>

40

Page 41: 1 Cuaderno Trabajo XML

Código JavaScript:

<html>

<body>

<script type="text/javascript">

var xmlDoc=null;

if (window.ActiveXObject)

{// code for IE

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

}

else if (document.implementation.createDocument)

{// code for Mozilla, Firefox, Opera, etc.

xmlDoc=document.implementation.createDocument("","",null);

}

else

{

alert('Tu navegador no soporta esta funcion');

}

if (xmlDoc!=null) 

{

xmlDoc.async=false;

xmlDoc.load("catalogo.xml");

var x=xmlDoc.getElementsByTagName("CD");

document.write("<table border='1'>");

document.write("<thead>");

document.write("<tr><th>Artista</th><th>Album</th></tr>");

document.write("</thead>");

document.write("<tfoot>");

document.write("<tr><th colspan='2'>Esta es mi coleccion de

41

Page 42: 1 Cuaderno Trabajo XML

albums</th></tr>");

document.write("</tfoot>");

for (var i=0;i<x.length;i++)

document.write("<tr>");

document.write("<td>");

document.write(x[i].getElementsByTagName("ARTISTA")

[0].childNodes[0].nodeValue);

document.write("</td>");

document.write("<td>");

document.write(x[i].getElementsByTagName("TITULO")

[0].childNodes[0].nodeValue);

document.write("</td>");

document.write("</tr>");

}

document.write("</table>");

}

</script>

</body>

</html>

 

Y con este codigo, nos mostraría una tabla, con el titulo ARTISTA, y ALBUM, y luego los

respectivos datos del XML. Podremos modificarlo, y agregar, editar, o eliminar, etc.

42

Page 43: 1 Cuaderno Trabajo XML

43

Page 44: 1 Cuaderno Trabajo XML

Como ya hemos podido suponer, el empleo de tecnología XML, al ser un estándar

internacional público, no nos ata a una plataforma o sistema de desarrollo concreto. Lo

mismo se puede usar Perl bajo UNIX para generar documentos XML a partir de una base de

datos, como usar Python en Windows NT para servir documentos HTML a navegadores web

a partir de un documento XML.

Dicho esto, hay que decir que JAVA se posiciona como una opción interesante a la hora de

desarrollar aplicaciones usando XML.

Por ejemplo, a partir de fuentes de datos en XML, podemos escribir un servlet que analice

sintácticamente el XML, y que genere un árbol DOM (Document Object Model). Una vez

generado el árbol DOM, podemos ir extrayendo la información que contiene e ir generando

un documento HTML de acuerdo con ciertas reglas de formato, de modo que pueda ser

visualizado por un navegador web.

44

Page 45: 1 Cuaderno Trabajo XML

GLOSARIO

XML.- eXtensible Mark-up Language - Lenguaje de Marcado Extensible

SOAP.- Protocolo sencillo de acceso a objetos.

XSL.- Lenguaje ampliable de hojas de estilos.

B2B.- Bussiness to Bussiness

DTD.- Definición de Tipo de Documento

Servlet.- Pequeño programa que corre en un servidor. Por lo general

son aplicaciones Java que corren en un entorno de servidor web. Esto

es análogo a una aplicación Java que corre en un navegador.

Parser.- Un analizador sintáctico (en inglés parser) es una de las partes de un

compilador que transforma su entrada en un árbol de derivación.

W3C.- World Wide Web Consortium

45

Page 46: 1 Cuaderno Trabajo XML

REFERENCIAS BIBLIOGRAFICAS/CIBERGRÁFICAS

1. Manual Imprescindible de XML 2011Germán Galeano Gil,José Carlos Sánchez Alonso,Pablo Díaz MárquezEd. Anaya Multimedia

2. Manual de XMLAlfredo Reino RomeroIsmael Zoriwww.desarrolloweb.com/manuales/manual-introduccion-xml.html

3. http://flanagan.ugr.es/xml/

4. http://geneura.ugr.es/~jmerelo/XSLT/

5. A Byte of Pythonv1.92 (for Python 3.0)

6. http://es.wikipedia.org

46