XML, el lenguaje universal |
|
|
Este tutorial fué
extraído de Ramon.org
XML
Ramón Montero (ramon@ramon.org)
La mayoría de la gente ha oído hablar del XML, siendo muy corriente que se
tenga la idea de que es una especie de HTML avanzado, por lo que siempre que
sale el tema del XML surgen dos cuestiones fundamentales: ¿qué es exactamente el
XML? y ¿tiene alguna aplicación en la actualidad?. Aunque XML da para varios
tratados, en este artículo se va a explicar lo más importante de dichas
cuestiones, y de paso, vamos a aprender un buen número de siglas nuevas.
Apartados:
Lenguajes
de marcas - HTML - ¿Qué es
XML? - DTD/Esquema
- CSS/XSL
- XLink/XPointer
- Parser/DOM
- Aplicaciones
de XML - Aclaraciones
Nota: Para comprobar los ejemplos que
siguen a continuación, es imprescindible disponer de un navegador/visualizador
compatible con XML, como Microsoft Internet Explorer 5.
El mayor error consiste en considerar a XML una versión extendida de HTML.
Sus iniciales provienen de Extensible Markup Language, o lo que es lo
mismo, "lenguaje de marcas ampliable", pero como para la mayoría de la gente, el
único lenguaje de marcas que conoce es el HTML (HyperText Markup
Language), da por hecho que XML es una ampliación de HTML. Es por tanto
imprescindible empezar hablando de los lenguajes de marcas.
Lenguajes de marcas
En los años 60 (¿por qué se hicieron tantas cosas en los 60?), IBM intentó
resolver sus problemas asociados al tratamiento de documentos por diferentes
plataformas a través de lo que denominó GML (Generalized Markup Language,
lenguaje de marcas generalizado).
El problema es que cada aplicación utiliza sus propias marcas para describir
las entidades de los documentos. Las "marcas" son los códigos que indican al
programa cómo debe tratar a su contenido, y así, si se desea que un texto
aparezca en cursiva, cada aplicación introduce al principio y al final del texto
correspondiente una marca que le permita mostrarlo en pantalla e imprimirlo
adecuadamente. Lo mismo ocurre con las tablas, los márgenes, las imágenes, los
tipos de letra, los enlaces, etc.
Los usuarios de WordPerfect conocen perfectamente este sistema de marcas, ya
que las aprovechan desde las primeras versiones del programa para controlar a la
perfección sus documentos. Word también permite tratar algunas de las marcas que
utiliza, aunque muchas menos de las que en realidad utiliza internamente. No
obstante, las marcas que utiliza cada sistema propietario son intratables
directamente desde el código interno del archivo que describe el documento.
Conocer las marcas que utiliza cada programa de tratamiento de documentos
hace posible diseñar filtros que permiten pasar la información de unos formatos
de marcas a otros sin perder el diseño. La forma que IBM creó para solventar
este problema se basaba en tratar con marcas accesibles desde documentos
universales TXT, o sea, en código ASCII, haciendo así posible su tratamiento
desde cualquier sistema.
Más tarde, GML cayó en manos de ISO, que lo convirtió en un estándar oficial
en los 80 (ISO 8879), denominándose SGML (Standard Generalized Markup
Language, lenguaje de marcas generalizado estándar). Esta norma de carácter
general se aplica desde entonces para diseñar lenguajes de marcas específicos,
cuyos ejemplos más conocidos son el HTML y el RTF (Rich Text Format,
formato de texto enriquecido). En la figura
1 se puede ver un mismo documento formateado con dos lenguajes de marcas
diferentes.
Fue a finales de los 80 cuando Tim Berners-Lee aplicó las normas del SGML
para diseñar el HTML como solución para publicar las investigaciones de muy
diversas fuentes y autores que se producían en el CERN.
Los lenguajes de marcas no son equivalentes a los lenguajes de programación,
aunque se definan igualmente como "lenguajes". Son sistemas complejos de
descripción de información, normalmente documentos, que si se ajustan a SGML, se
pueden controlar desde cualquier editor ASCII. Las marcas más utilizadas suelen
describirse por textos descriptivos encerrados entre signos de "menor" (<) y
"mayor" (>), siendo lo más usual que existan una marca de principio y otra de
final, y así por ejemplo, la siguiente marcación: <NOMBRE>Duna</NOMBRE>, deja bien
claro que "Duna" no es la descripción de una acumulación de arena, sino que
corresponde a un nombre, y de paso, nos indica con claridad el principio <NOMBRE> y el final </NOMBRE> de la marcación.
Existe la posibilidad de aprovechar la etiqueta para incluir atributos
internos, ahorrando así otras etiquetas. En el ejemplo:
<LIBRO Nº="1">El
Quijote</LIBRO>
La utilización del atributo "Nº" nos permite evitar que sea más complejo:
<LIBRO> <Nº>1</Nº> <TITULO>El
Quijote</TITULO> </LIBRO>
La importancia de "marcar" adecuadamente la información se puede ver con un
simple ejemplo. Si se nos presenta la siguiente información:
Légendes traditionnelles de la Bretagne O.- L.
Aubert Les légendes du Faouët C'est à l'intérieur de la Bretagne qu'il
faut aller, si l'on veut avoir une idée de ce qu'était jadis la
Celtie.
Seguramente tendremos problemas para entender de qué se trata, aunque sepamos
francés. Ahora bien, si se nos presenta la información de la siguiente
forma:
<LIBRO> <TITULO>Légendes
traditionnelles de la Bretagne</TITULO> <AUTOR>O.-
L. Aubert</AUTOR> <CAPITULO ORDEN="30">Les légendes
du Faouët</CAPITULO> <PARRAFO ORDEN="1">C'est à
l'intérieur de la Bretagne qu'il faut aller, si l'on veut avoir une idée de ce
qu'était jadis la
Celtie.</PARRAFO> </LIBRO>
Es muy fácil comprender de qué va la información, aunque no sepamos francés y
no entendamos los detalles.
Se puede decir que existen tres utilizaciones básicas de los lenguajes de
marcas: los que sirven principalmente para describir su contenido, los que
sirven más que nada para definir su formato y los que realizan las dos funciones
indistintamente. Las aplicaciones de bases de datos son buenas referencias del
primer sistema, los programas de tratamiento de textos son ejemplos típicos del
segundo tipo, y aunque no lo parezca, el HTML es la muestra más conocida del
tercer modelo.
Como la mayoría de los lectores estarán pensando que hay un error y que el
HTML debe encasillarse en el segundo patrón, no queda más remedio que hablar un
poco sobre el HTML.
HTML
El lenguaje HTML es originariamente un subconjunto del más completo SGML,
especializado en la descripción de documentos en pantalla a través de marcas
(tags, etiquetas). El proyecto inicial se basaba en una colección de
etiquetas que permitían describir documentos de texto y vínculos de hipertexto
que permitían desplazarse entre diferentes documentos, siempre con independencia
de la máquina. Conociendo las normas de actuación de estas etiquetas y
disponiendo de un sencillo editor ASCII de textos, se pueden confeccionar
fácilmente documentos HTML.
La facilidad de uso y la particularidad de que no es propiedad de nadie, hizo
al HTML el sistema idóneo para compartir información en Internet. La expansión
de Internet le ha dado una posición de privilegio y ha hecho que la idea inicial
se modifique considerablemente.
En principio, la intención de HTML era que las etiquetas fueran capaces de
marcar la información de acuerdo con su significado, sin importar cómo se
mostraban en la pantalla. Lo importante era el contenido y no la forma, o sea,
que era un lenguaje de marcas orientado a describir los contenidos. En otras
palabras: el título del documento, los títulos de los apartados, el autor del
documento, los textos resaltados,..., eran marcados por las etiquetas TITLE, Hx,
ADDRESS, STRONG, etc., dejando a cada visualizador (browser) la tarea de
formatear el documento según su criterio.
Esto daba lugar a que una aplicación podía presentar una etiqueta H2 como
texto centrado, con tamaño de 20 puntos y color rojo, mientras otra lo podía
mostrar alineado a la izquierda, con tipo de letra Arial de 16 puntos y color
Azul, por ejemplo. Una etiqueta STRONG podría tomarse como cursiva, negrita o
color verde, por ejemplo, según la interpretase el visualizador empleado.
Esto producía presentaciones diferentes, pero permitía controlar fácilmente
su contenido. Si una persona o un motor de búsqueda quería conocer el título del
documento, el autor de la página o las cabeceras de los capítulos, siempre
buscaba en el código las etiquetas TITLE, ADDRESS o Hx. Además, si a alguien no
le gustaba la idea de dejar a cada aplicación la decisión de cómo mostrar el
contenido de las etiquetas, siempre le quedaba la posibilidad de controlar el
formato del documento con descripciones particulares, como es el caso de las
hojas de estilo en cascada (CSS).
Por diversos motivos, los creadores de los navegadores fueron añadiendo más
etiquetas HTML dirigidas a controlar la presentación, como FONT, I, CENTER,
xCOLOR, etc., y los usuarios las utilizaron para que sus documentos estuviesen
perfectamente formateados, sin permitir diferencias importantes entre
visualizadores distintos, por lo que HTML pasó a ser un lenguaje de marcas más
dirigido al control de la presentación. Ahora es más difícil encontrar al autor
o las cabeceras de los capítulos de un documento, pues todos los textos se
describen con P y FONT, sobre todo si se utilizan los editores WYSIWYG
(Microsoft FrontPage, Netscape Composer) que proliferan por doquier.
Si a esto le añadimos que para facilitar la vida a los usuarios, los
analizadores sintácticos de las marcas que incluyen los navegadores permitieron
saltarse algunas normas sin que el propio usuario lo notase (por ejemplo,
permiten trabajar solo con la etiqueta <P>, cuando lo correcto es que se necesite las
etiquetas de principio y de final: <P> y
</P>), dando como resultado que HTML ya
no es un lenguaje que sigue las normas estrictas del SGML.
En las figura 2 y figura
3 se puede ver la transformación del HTML, que en un principio era un
subconjunto de SGML (2),
pero que ahora es una entidad con mucha autonomía propia (3),
más difícil de controlar.
Llegados a un punto en el que HTML dejó de servir para su función inicial, no
le ha quedado más remedio al Consorcio World Wide Web (W3C) la descripción de un
nuevo subconjunto del SGML que sirva para describir contenidos de documentos, al
que ha denominado XML, publicando las especificaciones de la versión 1.0 en
1998. Se puede decir por tanto que XML es más un "SGML light" que un "HTML
plus".
Creo que ya podemos empezar a hablar de XML con un poco de visión
retrospectiva de los motivos de su aparición.
¿Qué es XML?
En primer lugar hay que olvidarse un poco de HTML (solo un poco) para
entender mejor XML. En la situación actual, en teoría, HTML es un subconjunto de
XML especializado en presentación de documentos para la Web (ver la figura
4), mientras que XML es un subconjunto de SGML especializado en gestión de
información para la Web. En la práctica, HTML está un poco dentro de XML (que a
su vez es parte de SGML) y otro poco fuera de SGML (ver la figura
5). Para reconducir esta situación, el grupo W3C ha dictado reglas expresas
para distinguir el HTML que sigue a rajatabla las normas de XML, denominándolo
XHTML (eXtendible HyperText Markup Language), que no es más que una
reformulación de HTML 4 dentro de las normas de XML (ver la figura
6).
La particularidad más importante del XML es que no posee etiquetas prefijadas
con anterioridad, ya que es el propio diseñador el que las crea a su antojo,
dependiendo del contenido del documento. De esta forma, los documentos XML con
información sobre libros tienen etiquetas como <AUTOR>, <EDITORIAL>, <Nº_DE_PÁGINAS>, <PRECIO>, <ISBN>, etc., mientras que los documentos XML
relacionados con educación incluyen etiquetas del tipo de <ASIGNATURA>, <ALUMNO>, <CURSO>, <NOTA>, etc.
Esta característica proporciona una gran facilidad de control de cualquier
documento, y así por ejemplo, la información incluida por un código típico HTML
como el siguiente:
<TABLE>
<TR>
<TD>Título</TD>
<TD>Autor</TD>
<TD>Precio</TD> </TR>
<TR>
<TD>AutoSketch</TD>
<TD>Ramón Montero</TD>
<TD>2.500</TD> </TR>
<TR> <TD>Windows
98</TD> <TD>Jaime de
Yraolagoitia</TD>
<TD>3.250</TD> </TR>
<TR> <TD>Web
Graphics</TD> <TD>Ron
Wodaski</TD>
<TD>8.975</TD>
</TR> </TABLE>
Se definiría en XML (libros.xml) de una forma similar a:
<LIBROS>
<LIBRO>
<TITULO>AutoSketch</TITULO>
<AUTOR>Ramón
Montero</AUTOR>
<PRECIO>2.500</PRECIO>
</LIBRO>
<LIBRO>
<TITULO>Windows
98</TITULO>
<AUTOR>Jaime de
Yraolagoitia</AUTOR>
<PRECIO>3.250</PRECIO>
</LIBRO>
<LIBRO> <TITULO>Web
Graphics</TITULO>
<AUTOR>Ron
Wodaski</AUTOR>
<PRECIO>8.975</PRECIO>
</LIBRO> </LIBROS>
Mucho más fácil de entender por cualquiera, permitiendo también que las
búsquedas de títulos o el cálculo de los costes sea directo.
Otra cuestión que hay que aclarar es que XML es más un sistema complejo de
tratamiento de información que un simple lenguaje de descripción. XML es más una
familia de lenguajes, y al igual que podemos decir que HTML es un "lenguaje",
para ser exactos, hay que definir al XML como un "metalenguaje", o sea, un
lenguaje capaz de definir otros lenguajes. Veamos esto con más detalle.
DTD/Esquema
Cualquier diseñador de HTML está totalmente despreocupado de las
interioridades del sistema que hacen posible la creación de los archivos HTML (o
HTM) cuando utiliza algún editor de los que genera el código de forma
automática. Es suficiente con componer el documento de forma similar a como se
hace con un programa de tratamiento de textos, activar la opción de "Guardar
como HTML" y ya está. A partir de entonces, cualquiera que abra el archivo desde
un navegador, verá dicho documento en su pantalla.
Esto que parece tan sencillo (gracias al esfuerzo realizado por las empresas
creadoras de los navegadores), exige que se estén manejando varias herramientas
internas al sistema.
Cuando se genera el documento en un editor HTML, el código HTML que se crea
está basado en un DTD (Document Type Definition, definición de tipo de
documento) interno, que es una definición de las normas que regulan la formación
de las etiquetas de un lenguaje de marcas determinado, en este caso el HTML. Por
lo tanto, en el DTD que integra cada editor de HTML se especifican todas las
etiquetas existentes, sus atributos, sus valores, etc., haciendo posible que se
vayan integrando en el código del documento únicamente de acuerdo con dichas
normas. Se puede decir que un DTD es una definición exacta de la gramática de un
documento, con la misión de que se genere el código adecuado sin errores.
El fichero HTML creado con el editor, al cargarse en un navegador, es vuelto
a analizar por su DTD interno para descubrir las etiquetas correctas y las
equivocadas, siempre de acuerdo a sus normas internas. Por este motivo, si se
crea una página web con el editor de una empresa y se visualiza con el navegador
de otra, puede ocurrir que algunas entidades no se vean bien (o incluso puede
pasar que no se puedan controlar), bien porque no existan dichas etiquetas
(casos de BLINK o MARQUEE), o bien porque no se gestionen con las mismas normas
(caso de TABLE).
En XML no existen DTDs predefinidas, por lo que es labor del diseñador
especificar su propia DTD para cada tipo de documento XML. En la especificación
de XML se describe la forma de definir DTDs particularizadas para documentos
XML, que pueden ser internas (cuando van incluidas junto al código XML) o
externas (si se encuentran en un archivo propio).
Para el ejemplo del documento XML libros.xml, se podría
crear un archivo conteniendo el siguiente código:
<!ELEMENT LIBROS
(LIBRO)+> <!ELEMENT LIBRO
(TITULO,AUTOR,PRECIO)> <!ELEMENT TITULO
(#PCDATA)> <!ELEMENT AUTOR
(#PCDATA)> <!ELEMENT PRECIO
(#PCDATA)>
En el DTD del ejemplo se definen los elementos (!ELEMENT) que integran el
documento XML. En la primera línea se indica que el elemento principal es
LIBROS, del que dependen uno o más (+) elementos LIBRO. La segunda línea sirve
para especificar que el elemento LIBRO contiene tres elementos
(TITULO,AUTOR,PRECIO) que se deben marcar en dicho orden. Las restantes líneas
aclaran que los elementos TITULO, AUTOR y PRECIO contienen valores de cadenas de
texto.
Este sencillo DTD se guarda como libros.dtd (también se
puede integrar dentro del código del propio documento XML) y es llamado desde el
documento XML con la siguiente línea:
<!DOCTYPE LIBROS SYSTEM
"libros.dtd">
Que cada usuario pueda crear su propia DTD es una gran ventaja, ya que
proporciona total libertad de adecuación a cada documento, pero también puede
suponer un grave inconveniente, ya que es muy fácil que para documentos de un
mismo sector (arquitectura, edición, educación, etc.), existan muy variadas
DTDs, haciendo muy difícil su manejo por usuarios distintos a los que hayan
diseñado la información.
Por este motivo, en la actualidad se están definiendo DTDs por grupos
sectoriales con similares intereses, de forma que existirán DTDs estándares
avalados por asociaciones de empresas y organismos que garanticen que cualquier
usuario que las adopte como suyas, trabaje con las mismas etiquetas e idénticas
normativas (de forma similar al actual HTML). Como ejemplos de estas DTDs
estándares tenemos: CDF - Channel Definition Format (define canales para
enviar información periódica a los clientes), CML - Chemical Markup
Language (define información del sector químico), MathML - Mathematical
Markup Language (define datos matemáticos), SMIL - Synchronized
Multimedia Integration Language (define presentaciones de recursos
multimedia), y así podríamos continuar rellenando páginas y páginas.
Últimamente se está imponiendo otra forma más eficaz de definición de
elementos, conocida como "esquema" (schema), que de forma sencilla, se
puede definir como un DTD que permite su ampliación mediante un lenguaje de
definición de esquemas. Se pueden ver ejemplos de esquemas en el código XML que
añade Office 2000 al principio de sus documentos.
El navegador, después de chequear sintácticamente el código del archivo, debe
presentar la información del documento con un formato determinado. Los
documentos HTML utilizan las descripciones de formatos internas del propio
navegador, o si existen descripciones CSS (que son opcionales), utilizan la
información de la hoja de estilo para ajustar la presentación en la pantalla.
Los documentos XML siempre necesitan normas que describan su presentación, por
lo que el paso siguiente obliga a que hablemos de este tema.
CSS/XSL
Para describir cómo se deben presentar los documentos XML podemos optar por
dos soluciones: las mismas descripciones CSS que se utilizan con HTML y/o las
descripciones que se basan en XSL (Extensible Stylesheet Language,
lenguaje de hojas de estilo extensible).
CSS (Cascading Style Sheets, hojas de estilo en cascada) es
sobradamente conocido por todos los diseñadores profesionales de HTML. Si el
lector no conoce las posibilidades de las especificaciones CSS (actualmente en
su versión 2), debe entenderlas como una descripción del formato en el que se
desea que aparezcan las entidades definidas en un documento.
Por ejemplo, si se define una hoja de estilo ligada con un archivo HTML con
el siguiente código:
P {font-family:Verdana; font-size:10
pt} TABLE {border:2; font-family:Tahoma; font-size:9 pt} H3
{font-family:Comic Sans MS; font-size:12 pt; color:blue}
Se indica al navegador que presente los textos incluidos entre <P> y </P> con un
tipo de letra Verdana de 9 puntos, las tablas con una fuente de letra Tahoma de
9 puntos y un ancho de 2 en los bordes, y los titulares incluidos entre <H3> y </H3> con una
letra Comic Sans MS de 12 puntos y color azul.
Utilizar CSS con XML es similar, con la excepción de que las etiquetas son
diferentes a las de HTML. Un código como el siguiente:
AUTOR {display:block; font-family:Arial;
font-size:small; width:30em} PRECIO {display:block; padding:1.2em;
font-size:x-small} TITULO {display:block; font-size:x-large;
text-align:center; color:#888833}
Sería perfectamente válido para que los datos de las etiquetas <AUTOR>, <PRECIO> y <TITULO> se presentasen según su
descripción.
Si ya existe una forma de definir las presentaciones de los documentos web,
¿por qué se ha sacado a la luz otra (XSL), específica para XML?
La respuesta es que CSS es eficaz para describir formatos y presentaciones,
pero no sirve para decidir qué tipos de datos deben ser mostrados y cuáles no
deben salir en la pantalla. Esto es, CSS se utiliza con documentos XML en los
casos en los que todo su contenido debe mostrarse sin mayor problema.
XSL no solo permite especificar cómo queremos presentar los datos de un
documento XML, sino que también sirve para filtrar los datos de acuerdo a
ciertas condiciones. Se parece un poco más a un lenguaje de programación.
No es éste el lugar adecuado para ver las posibilidades del XSL, siendo
suficiente con entender que además de permitir la descripción de la presentación
física, también posibilita la ejecución de bucles, sentencias del tipo
IF...THEN, selecciones por comparación, operaciones lógicas, ordenaciones de
datos, utilización de plantillas,..., y otras cuestiones similares.
Para que el lector se haga un pequeña idea de cómo es un código XSL (libros.xsl), a continuación se muestra un sencillo ejemplo que
permitiría mostrar todos los contenidos de las etiquetas <TITULO>, <AUTOR> y <PRECIO> de un documento XML (ver la figura
7), mediante un bucle sin condiciones:
<xsl:template
match="/"> <HTML> <BODY> <xsl:for-each
select="/LIBROS/LIBRO"> Título: <xsl:value-of
select="TITULO"/><BR/> Autor: <xsl:value-of
select="AUTOR"/><BR/> Precio: <xsl:value-of
select="PRECIO"/>
pesetas<BR/> </xsl:for-each> </BODY> </HTML> </xsl:template>
Solo me queda por comentar que un estándar basado en SGML que regula las
normas de presentación de documentos de marcas para la Web se denomina DSSSL
(Document Style Semantics & Specification Language, lenguaje de
especificación y semántica de estilo de documentos), del que se puede decir que
XSL es un subconjunto, siempre cumpliendo las normas del XML.
Una de las características de todo documento web es la inclusión de enlaces
de todo tipo: a imágenes, a sonidos, a vídeos, a otros párrafos, a otros
documentos, etc. En HTML la cuestión está resuelta, ya que existen etiquetas
para cada caso, pero ya sabemos que en XML todo está por hacer, así que vamos a
ver cómo se diseñan los enlaces de forma particular.
XLink/XPointer
La cuestión de los enlaces e hipervínculos es tan importante para los
documentos XML que el W3C ha sacado las especificaciones que las controlan fuera
de las descripciones del DTD, no conformándose con crear una sola norma, ya que
existen dos: XLink y XPointer.
XLink (anteriormente conocido como XLL, Extensible Linking Language)
define la forma en la que los documentos XML deben conectarse entre sí. XPointer
describe cómo se puede apuntar a un lugar específico de un determinado documento
XML. Resumiendo, XLink determina el documento al que se desea acceder y XPointer
marca el lugar exacto de dicho documento.
A los diseñadores de HTML les puede parecer que esto es una complicación sin
sentido, ya que están acostumbrados a las pocas posibilidades que brinda la
etiqueta <A>, pero si pensamos en las
muchas variaciones que pueden tener los vínculos, se comprende la solución
adoptada.
Las especificaciones de los hipervínculos para XML permiten cosas como:
adherirse a cualquier etiqueta, hacer referencia a un lugar concreto de un
documento determinado a través de su nombre o localización, ser descritos en
documentos externos, ser procesados de formas distintas (automáticamente,
activándolo,...), ser multifuncionales (permitir varios saltos), etc.
Al contrario de lo que ocurre con HTML, en XML existen dos tipos básicos de
hipervínculos: simples y extendidos.
Un ejemplo de hipervínculo simple sería:
<AUTOR xlink:href="autores.xml#juan"
xlink:show="new"> <NOMBRE>Juan Primero
Segundo</NOMBRE> </AUTOR>
Otro ejemplo de hipervínculo extendido podría ser:
<EDITOR_AUTOR
xlink:extended> <xlink:locator href="#ana"
id="editor"/> <xlink:locator href="autores.xml#juan"
id="autor"/> <xlink:arc from="editor" to="autor"
show="replace"/> </EDITOR_AUTOR
xlink:extended>
En el primero se puede observar la definición de un hipervínculo simple que
se abre en una nueva ventana (show="new"), mientras que en el segundo se
definen un hipervínculo con tres posibilidades diferentes: a una sección
determinada del documento (#ana), o a un determinado lugar de otro
documento (autores.xml#juan), o a una zona delimitada por dos marcadores
(editor y autor). El funcionamiento de un hipervínculo simple no
tiene secretos, pues es similar al que se utiliza en HTML. En la figura
8 se puede ver en acción un enlace extendido que permite elegir entre cuatro
posibles saltos.
Aunque no se han explicado todas las posibilidades de los hipervínculos XML,
sí debe quedar claro que los enlaces XML son más variados que los que nos
proporciona la sencilla, útil y conocida etiqueta <A> del HTML.
Parser/DOM
Siguiendo con el proceso que se desarrolla en el interior del navegador,
después de recoger la información de todos los documentos que definen la
información XML, se genera internamente una estructura que organiza a los
elementos que describen las etiquetas en forma de árbol jerárquico, lo que
facilita el control de dichos elementos.
En la figura 9 se observa el árbol que describe Microsoft Explorer 5
con el archivo libros.xsl (sí, los archivos XSL son archivos XML). Estos
árboles presentan ramas expansibles (+) y contraíbles (-) a través de
pulsaciones del ratón (ver la figura
10).
En caso que se detecte algún error incompatible con las estrictas normas XML,
el navegador interrumpe el proceso y muestra dicho error en la pantalla (ver la
figura 11).
Todo este proceso se puede realizar gracias al analizador (parser)
interno que incluye cada navegador, que en la mayoría de los casos se relaciona
directamente con el estándar DOM (Document Object Model, modelo de objeto
de documento), que entre otras cosas permite acceder a cada nodo del árbol a
través de scripts.
Las reglas mínimas que hay que cumplir para no ser rechazados por un
analizador XML son:
- Solo se permite un elemento raíz. Es imprescindible cumplir
esta norma para que el parser pueda saber que el documento está
completo. Es el equivalente a la etiqueta <HTML> del HTML.
Ejemplo
correcto: <DISCOS> <DISCO> ...
</DISCO> <DISCO> ... </DISCO> <DISCO> ...
</DISCO> </DISCOS> Ejemplo
incorrecto: <DISCO> ... </DISCO>
<DISCO> ... </DISCO> <DISCO> ...
</DISCO>
- Incluir etiquetas de inicio (sin la "barra") y final (con la
"barra") para todos los elementos. Siempre debe existir una marca <ETIQUETA> y otra </ETIQUETA> antes y después de cada
elemento. No se permiten casos de etiquetas "sueltas" como las <P> o <LI> del HTML.
Ejemplo
correcto: <CIUDAD>Atenas</CIUDAD> Ejemplo incorrecto: Atenas<CIUDAD>
- En caso de trabajar con etiquetas "vacías", hay que incluir
la "barra" (/) antes del signo "mayor" (>). Cuando se trata con elementos
que no se desean marcar con etiquetas de principio y de final (normalmente
llevan atributos), se pueden utilizar marcas únicas del tipo <ETIQUETA />. Serían los casos típicos de
<HR> o <BR> del HTML.
Ejemplo
correcto: <ALUMNO NUMERO="1"
/> Ejemplo incorrecto: <ALUMNO NUMERO="1">
- Hay que anidar las etiquetas correctamente. Las etiquetas
anidadas deben situarse en el mismo orden de apertura que de cierre: <ETIQUETA1> ... <ETIQUETA2> ... <ETIQUETA3>
... </ETIQUETA3> ... </ETIQUETA2> ...
</ETIQUETA1>. No se permiten códigos como <B><I>Texto de
prueba</B></I>, permitidos en HTML.
Ejemplo
correcto: <ROJO>Color rojo
<CLARO> claro </CLARO>
normal</ROJO> Ejemplo
incorrecto: <ROJO>Color rojo
<CLARO> claro </ROJO> </CLARO>
normal
- Es obligatorio que los valores de los atributos vayan entre
comillas. Las etiquetas con atributos deben marcar sus valores entre comillas:
<ETIQUETA ATRIBUTO="x" />. En HTML
suele ser optativo.
Ejemplo correcto: <LIBRO ISBN="84-415-0845-3"
/> Ejemplo incorrecto: <LIBRO ISBN=84-415-0845-3 />
- XML distingue entre mayúsculas y minúsculas. Puede utilizar
los dos tipos de letra, pero no las considera iguales. Al contrario de HTML,
que no se preocupa de que sus etiquetas estén en mayúsculas, minúsculas o
mezcladas, aceptando sin problemas etiquetas como <tAbLe>, <table> o <TABLE>, en XML se produciría un
error.
Ejemplo correcto: <AMIGOS>
<amigo> Pepe </amigo>
</AMIGOS> Ejemplo incorrecto: <AMIGOS> <amigo> Pepe </AMIGO>
</AMIGOS>
Cumpliendo estrictamente las reglas anteriores (existen otras reglas menores)
se consigue lo que se denomina un documento XML "bien formado"
(well-formed), pero si el documento XML dispone de un DTD de referencia
(puede no tenerlo), y cumple también sus descripciones, se dice que es un
documento XML "válido".
Una vez vistos los estándares principales (hay algunos más), las normas más
importantes (no son las únicas) que se precisan para trabajar con los documentos
XML, y dejado claro que XML es un sistema de archivos de descripción de
información, rigurosa y libre, que se complementan entre sí, lo que me supongo
que contesta a la pregunta: ¿qué es el XML?, vamos a pasar a la parte que da
respuesta a la otra pregunta: ¿tiene el XML aplicación en la actualidad?.
Aplicaciones de XML
La respuesta a si ya se puede utilizar XML en la Web es un rotundo SI,
aunque dado que es una normativa nueva, no todas las herramientas relacionadas
con Internet son capaces de trabajar con XML, pero según van actualizándose
(Office, Oracle, Explorer), adoptan sus recomendaciones.
Si el lector se para a pensar que a través del XML se puede crear cualquier
tipo de documento y manejar datos del lado del cliente, sin la necesidad de
motores especiales en el lado del servidor, tendrá la respuesta a cualquier duda
que tenga respecto al futuro del XML.
En realidad, con un editor de textos ASCII (el Bloc de notas, por ejemplo) y
con un visualizador que incluya un parser adaptado a XML (Microsoft
Internet Explorer 5, por ejemplo), ya se pueden crear y ver documentos XML.
No obstante, existen muchas nuevas herramientas que facilitan un poco la
labor del diseñador, algunas de ellas gratuitas, como el "Microsoft XML
Notepad", que aprovecha los motores internos del Explorer para trabajar (ver la
figura 12).
La versión 4.x del Netscape Navigator no soporta XML, y aunque se supone que
la versión 5 sí lo permitirá, la política comercial actual de Netscape no
permite asegurar cuándo ni cómo será.
Existen otros varios visualizadores/navegadores que admiten XML, como Amaya,
HotMetal o HyBrick, aunque casi cada día están saliendo nuevos productos
(analizadores, visualizadores, motores, editores, DTDs, etc.). Si el lector
solicita información en un buscador sobre XML, se sorprenderá de la enorme
relación de recursos que surgirán.
Por supuesto que también existen grupos de discusión (news), listas de
distribución, tutoriales, libros,..., incluso en español.
Aunque la versión 1.0 de XML es ya definitiva, no pasa lo mismo con las demás
normativas que le acompañan, que poco a poco van pasando del estado de "borrador
de trabajo" al de "recomendación" (http://www.w3c.org/). Este es otro de los motivos por los que
XML no termina de generalizarse, ya que las empresas se piensan mucho invertir
en productos que no están soportados por estándares definitivos.
En resumen, se puede decir que hay bastantes herramientas ya en circulación,
y que hay muchas en camino.
Aclaraciones
Hay varias cuestiones sobre el XML que deben quedar claras:
- La existencia de XML no implica que desaparecerá el HTML.
Dado que la mayor parte de las páginas web son documentos de texto con algunas
imágenes, HTML seguirá siendo el medio más eficaz para crearlas y publicarlas,
aunque muy probablemente se tenderá a utilizar la versión XHTML.
- XML puede convivir con los restantes lenguajes, tales como
HTML, JAVA, JavaScript, VBScript, Visual Basic, etc. En muchos de estos casos,
XML hará las veces de "base de datos", los scripts servirán para
realizar búsquedas selectivas y el HTML permitirá que se muestre la
información resultante en la pantalla.
- Hasta que no se publiquen todas las recomendaciones oficiales
de los estándares que complementan a la de XML, no "explotará" la publicación
de páginas XML en Internet, ya que todavía se modificarán algunas cuestiones
importantes.
- Aunque la versión 5 de Microsoft Explorer ya permite trabajar
con XML y existen otros visualizadores compatibles con el nuevo estándar, el
espaldarazo definitivo se dará cuando todos los navegadores lo acepten, sobre
todo el Navigator de Netscape.
- XML se utiliza principalmente por los profesionales, debido a
la complejidad de las especificaciones, pero según vayan saliendo al mercado
editores WYSIWYG que permitan conseguir documentos XML, se podrá utilizar por
cualquier persona, de forma similar a como se trabaja con los editores de
textos actuales.
- Para evitar que no existan innumerables formas de describir
documentos de un determinado sector, ya se está trabajando en la definición de
DTDs sectoriales de carácter público que estén arropados por el máximo de
empresas y organismos posibles. Según se vayan publicando, se crearán nuevas
herramientas para su tratamiento. En el cuadro
1, se relacionan algunos de los principales DTDs que se están elaborando
(alguno ya se ha terminado) en la actualidad.
Consciente de que esta introducción al XML no resuelve todas las dudas de los
lectores, sobre todo de los programadores-web, y con la esperanza de haber
aclarado las principales cuestiones relativas al XML, quiero terminar recordando
el título del artículo: "XML, el lenguaje universal", ya que si todo sigue al
ritmo actual, dentro de poco, XML será el lenguaje que nos garantizará el
intercambio de cualquier información, sin que ocasione problemas que sea de tipo
"contenido" o de tipo "presentación".
<< Volver
|