Вы находитесь на странице: 1из 45

CUADERNO DE TRABAJO

Diseñadora:
M. en A. N. ANA MARÍA TORRES JIMENO
Abril/2011

INDICE

1
Objetivo general del curso 3

Objetivos específicos del curso 3

Introducción 4

Tema 1. ¿Qué es XML? 6


1.

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
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
INTRODUCCIÓN
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.

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
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
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


No de descripción de datos y el segundo es un lenguaje utilizado para
ta determinar y organizar la visualización de la información. Por lo tanto,
ambos realizan tareas totalmente distintas, pero complementarias entre sí.

6
 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>

<documento>
Ejemplo de la Estructura de XML
<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>

7
</documento>
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
 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
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).

Figura. Árbol XML que puede contraerse.

10
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>

</table>

11
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
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.

12
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
 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
¿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>

<salary>2500</salary>

</employee>

</department>

<department>

15
<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 </,
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

16
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:

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

17
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.

18
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>

19
</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.

20
• 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.

21
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. -->

22
 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.

23
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

24
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="..."/>

25
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

26
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>

27
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.

28
 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)>

29
<!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.

30
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>

31
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)>

32
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>

33
<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.

34
 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>

35
</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>

36
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>

37
 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>

38
 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>

39
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

40
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.

41
42
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.

43
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

44
REFERENCIAS
BIBLIOGRAFICAS/CIBERGRÁFICAS

1. Manual Imprescindible de XML 2011


Germán Galeano Gil,
José Carlos Sánchez Alonso,
Pablo Díaz Márquez
Ed. Anaya Multimedia

2. Manual de XML
Alfredo Reino Romero
Ismael Zori
www.desarrolloweb.com/manuales/manual-introduccion-xml.html

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

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

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

6. http://es.wikipedia.org

45

Вам также может понравиться