[LinuxFocus-icon]
Hogar  |  Mapa  |  Indice  |  Busqueda

Noticias | Arca | Enlaces | Sobre LF
Este documento está disponible en los siguientes idiomas: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Portugues  Russian  Turkce  Arabic  

convert to palmConvert to GutenPalm
or to PalmDoc

[Floris Lambrechts]
por Floris Lambrechts
<floris(at)linuxfocus.org>

Sobre el autor:
Durante años he sido eI editor de LinuxFocus en los Países Bajos. Estoy estudiando ingeniería industrial por la rama de electrónica en Lovaina, Bélgica, y "pierdo" el tiempo enredando en Linux, PHP, XML y LinuxFocus, a la vez que leo libros como los de Stephen Hawking y (en este momento) The Humane Interface, de Jef Raskin.

Taducido al español por:
Javier Fdez. Retenaga <inignaga(at)teleline.es>

Contenidos:

 

Empezando a conocer el XML

[Illustration: xml]

Resumen:

Esta es una bastante breve introducción al XML. Conocerá a Micifú el meta-gato, las normas sintácticas del XML y algunos DTDs. No se preocupe, nos explicaremos ;-)

_________________ _________________ _________________

 

Introducción

En el verano de 2001, algunos de los editores de LF nos juntamos en Burdeos durante el LSM. Muchas conversaciones y discusiones del grupo del LSM particularmente interesado en la documentación resultaron girar en torno al mismo asunto: el XML. Se dedicó largas (y entretenidas) horas a explicar qué es exactamente el XML, para qué es bueno y cómo puede utilizarse. Si está interesado, eso es precisamente lo que este artículo tratará de discutir.

Quisiera dar las gracias a Egon Willighagen y a Jaime Villate por introducirme al XML. Este artículo se basa de alguna manera en la información contenida en los artículos de Jaime, que puede encontrar más abajo en los enlaces.  

Qué es el XML

Todos los que nos ocupamos de la documentación sabíamos, más o menos, de qué iba el XML. A fin de cuentas, su sintaxis es muy similar a la del HTML y no es más que otro lenguaje de marcas, como el SGML y (de nuevo) el HTML, ¿no es eso? Así es. Pero hay más.
El XML tiene algunas propiedades que hacen de él un formato de datos útil para casi todo. Parece que pueda describir las cosas más complejas y continuar siendo fácil de leer para los humanos y fácil de analizar por los programas. ¿Cómo puede ser eso? Investiguemos este curioso lenguaje.

Micifú, el meta-gato

Antes que nada, el XML es un lenguaje de marcas. Los documentos escritos en un lenguaje de marcas contienen básicamente dos cosas: datos y metadatos. Si usted sabe qué son exactamente los datos, por favor hágamelo saber, pero hasta ese momento hablemos de los metadatos ;). Dicho de una manera sencilla: los metadatos son información extra que añade un contexto o un sentido a los datos mismos. Un ejemplo sencillo: tomemos la frase 'Mi gato se llama Micifú'. Un humano como usted sabe que 'gato' es el nombre de una especie animal y que 'Micifú' es su nombre propio. Los programas informáticos, sin embargo, no son humanos y no saben nada de eso. De ahí que utilicemos los metadatos para añadir un sentido a los datos (¡con sintaxis XML, por supuesto!):

 <frase>
   Mi <animal>gato</animal> se llama <nombre>Micifú</nombre>.
 </frase>

Ahora un programa informático por tonto que sea puede decir que 'gato' es una especie y que 'Micifú' es un nombre. Si queremos producir un documento en el que todos los nombres se impriman en azul y todas las especies en rojo, el XML nos lo pone muy fácil. Sólo por el gusto de hacerlo, esto es lo que obtendríamos:

 Mi gato se llama Micifú.

Ahora, teóricamente, podemos poner toda la información relativa al diseño (los colores, en este caso) en un archivo aparte, en una así llamada hoja de estilo. Cuando hacemos esto, en realidad estamos separando la información relativa al diseño del contenido, lo que algunos consideran el Santo Grial del diseño de páginas webTM. Hasta aquí no hemos hecho nada de especial: añadir metadatos es para lo que están diseñados los lenguajes de marcas. Entonces, ¿qué hace tan especial al XML?

La policía sintáctica

Ante todo, el XML tiene una sintaxis muy estricta. Por ejemplo, en XML cada <etiqueta> ha de tener una </etiqueta> de cierre. [Nota: puesto que es un poco tonto escribir <etiqueta></etiqueta> cuando no hay nada en medio, puede también escribir <etiqueta /> y ahorrarse quizás un par de minutos de su vida].
Otra regla es que no puede 'mezclar' etiquetas. Tiene que cerrar las etiquetas en el orden inverso al que las abrió. Algo como lo siguiente no es válido:

<B> Texto en negrilla <I>Texto en negrilla y cursiva </B> Texto en cursiva </I>
Las reglas sintácticas dicen que ha de cerrar la etiqueta </I> antes de cerrar </B>
Y, esté atento, todos los elementos de un documento XML han de estar contenidos en etiquetas (salvo, naturalmente, las etiquetas inicial y final). Esta es la razón de que en el ejemplo de arriba hayamos escrito las etiquetas <frase> alrededor de la frase. Sin ellas, algunas de las palabras de la frase no estarían incluidas entre etiquetas, y eso, como tantas cosas, pone loca a la policía sintáctica.
Mozilla screenshot

La policía sintáctica de Mozilla en marcha...
Pero una policía fuerte también tiene sus ventajas: procura orden. Puesto que el XML sigue reglas sintácticas tan estrictas, es muy fácil de leer por los programas. Además, los datos de sus documentos en XML están muy estructurados, lo que los hace fáciles de leer y de escribir para los humanos.
Pero dese cuenta de que las posibilidades 'teóricas' del XML no siempre son realizables en la práctica. Por ejemplo, los analizadores sintácticos de XML más habituales están lejos de ser rápidos, y a menudo son realmente grandes. Parece así que el XML no es en absoluto fácil de leer por los programas. Digamos que ciertamente no es una buena idea hacerlo todo en XML, sólo porque es posible. Para aplicaciones en las que precise hacer muchas búsquedas en un documento, o cuando se trate de documentos muy grandes, a menudo el XML no es la elección más acertada. Pero esto no significa que sea imposible utilizarlo para esos propósitos.
Un buen ejemplo de la potencia del XML, pero también de su lentitud, es el hecho de que con él puede escribir bases de datos (¡intente hacerlo en HTML! :p). Eso es exactamente lo que Egon Willighagen ha hecho para la sección holandesa de LinuxFocus (en un enlace al final de la página puede encontrar el artículo en que explica el procedimiento seguido). En este caso se prefirió la flexibilidad y extensibilidad de un formato artesanal antes que la pura velocidad (digamos, mySQL).
En lo relativo a la estricta sintaxis del XML: si consigue hacer buenas migas con los verificadores sintácticos, puede haber algunas maneras de hacer que la policía haga parte de su trabajo. Si quiere que así sea, tendrá que usar inteligentemente un DTD...  

El DTD

En nuestro pequeño ejemplo de antes, 'Micifú el meta-gato', hemos inventado nuestras propias etiquetas XML. Por supuesto, la policía no permite actos creativos así. Los 'hombres de azul' quieren saber qué está usted haciendo, cómo y (si es posible) por qué. Bien, no hay problema, puede explicarlo todo con el DTD...

Un DTD le permite ínventar' nuevas etiquetas. De hecho, le permite inventar lenguajes completamente nuevos, simpre que respeten la sintaxis del XML.
El DTD (Document Type Definition) es un archivo que contiene una descripción de un lenguaje XML. Se trata en realidad de un listado de todas las etiquetas posibles, sus posibles atributos y sus combinaciones posibles. El DTD describe lo que es posible en su lenguaje XML y lo que no lo es. Así, cuando hablamos de un 'lenguaje XML' estamos hablando en realidad de un DTD específico.

Ponga a la policía a trabajar

En ocasiones el DTD lo forzará a hacer algo en un lugar específico. Por ejemplo, el DTD puede forzarlo a incluir una etiqueta que contenga el título del documento. Lo bueno de esto es que ya existe software  (p. e., un módulo de emacs) capaz de escribir automáticamente las etiquetas requeridas.
De ese modo, algunas partes de la estructura de su documento se rellenan automáticamente. Como la sintaxis es tan estricta y bien definida, el DTD puede guiarle durante el proceso de escritura de un documento. Y cuando cometa errores tales como olvidarse de poner una etiqueta al final, la policía le informará. Así, después de todo los polis no están tan 'locos'; donde los policías del mundo real dicen 'Tiene derecho a guardar silencio', la policía del XML le habla con toda amabilidad de un 'Syntax error @ line xx : '... :)
Y mientras la policía hace todo ese trabajo por usted, por supuesto usted puede continuar y centrarse en el contenido.

El mezclado

Una última gran característica del XML es la posibilidad de utilizar varios DTDs a la vez. Esto significa que puede utilizar a la vez diferentes tipos de datos en un mismo documento.

Esta 'mezcla' se hace con espacios de nombres xml. Por ejemplo, usted puede incluir el DTD Docbook en su documento .xml (para el prefijo 'dbk' en este ejemplo).
Todas las etiquetas de Docbook estarán entonces listas para ser utilizadas en su documento de la siguiente manera. Digamos que hay una etiqueta de Docbook<una _etiqueta>:

 <dbk:una_etiqueta> unas palabras </dbk:una_etiqueta>
Empleando el sistema de espacios de nombres puede utilizar cualquier etiqueta y cualquier atributo de cualquier DTD xml. Esto le abre un mundo de posibilidades, como puede ver en el siguiente apartado...  

DTDs disponibles

Este es un pequeño conjunto de DTDs que están ya (parcialmente) en uso.  

Enlaces

El W3C, o World Wide Web Consortium
Tienen información sobre XML, MathML, CML, RDF, SVG, SOAP, XHTML, espacios de nombres...
www.w3.org

Algún material de Jaime Villate:
Introducción al XML
Creación de artículos y páginas web usando XML en Linux
LSM-slides

HTML tidy, el programa:
www.w3.org/People/Raggett/tidy

Docbook
www.docbook.org

Proyecto SVG de Mozilla.org
www.mozilla.org/projects/svg

Artículos relevantes de LinuxFocus:
Empleo de XML y XSLT para desarrollar LinuxFocus.org (/Holanda)
Crear documentos PDF con DocBook  

Formulario de "talkback" para este artículo

Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
 Ir a la página de "talkback" 

Contactar con el equipo de LinuFocus
© Floris Lambrechts, FDL
LinuxFocus.org
Información sobre la traducción:
en --> -- : Floris Lambrechts <floris(at)linuxfocus.org>
en --> es: Javier Fdez. Retenaga <inignaga(at)teleline.es>

2002-12-02, generated by lfparser version 2.34