Saltar la navegación

6.4. XML (eXtensible Markup Language)

XML es un metalenguaje de etiquetas desarrollado por el World Wide Web Consortium. El World Wide Web Consortium, el W3C es un consorcio internacional que crea recomendaciones para la World Wide Web.

XML no es un lenguaje en el sentido de que no define un conjunto de etiquetas. XML es un metalenguaje porque permite crear lenguajes.

Lenguajes derivados del SGMLAsí, XML proporciona una serie de reglas para que cualquiera pueda definir su propio conjunto de etiquetas y atributos y pueda definir las relaciones que existen entre esas etiquetas. Al conjunto de reglas de un lenguaje se llama gramática del lenguaje.

Por lo tanto,  tanto GML como SGML y XML, son metalenguajes. Los tres permiten crear lenguajes. Como hemos visto, SGML está inspirado por GML y a su vez, XML está inspirado por SGML.

Por otro lado, HTML, XHTML, MathML, RSS, SVG y otros más, sí que son lenguajes. HTML está basado en las reglas de SGML, mientras que los otros lenguajes que he nombrado están basados en XML. 
Así, XML es un lenguaje de marcas puramente estructural que no incluye ninguna información relativa al diseño. A diferencia de HTML, las etiquetas indican el significado de los datos en lugar del formato con el que se van a visualizar los datos. XML es un lenguaje simple de descripción de información.

XML es un metalenguaje caracterizado por:

  • Permitir definir etiquetas propias.
  • Permitir asignar atributos a las etiquetas.
  • Utilizar un esquema para definir de forma exacta las etiquetas y los atributos.
  • La estructura y el diseño son independientes.

Un documento XML puede ser correcto a dos niveles:

  • Bien formado. las características que debe cumplir un documento XML para que se considere bien formado son:
    • Aunque no es obligatorio, debe comenzar con la declaración XML que indica la versión utiliza y el conjunto de caracteres utilizado.
    • A continuación viene el cuerpo del documento que se compone de elementos donde un elemento se compone de una etiqueta inicial y otra final que tienen el mismo nombre. La etiqueta inicial puede llevar atributos, cosa que no puede suceder con la etiqueta final. Los atributos pueden tener un valor. Por último, las etiquetas pueden llevar contenido que pueden ser otras etiquetas o texto.
    • elemento raíz único
    • estructura jerárquica
    • no se admite solapamiento
    • se distinguen las mayúsculas y las minúsculas
    • se permiten elementos vacíos
    • los valores de los atributos se deben escribir entre comillas dobles o simples. Existen atributos reservados que se emplean en la especificación de XML, que comienzan con xml:.
    • los comentarios se deben escribir entre .
    • espacios en blanco: tabulador, avance de línea, retorno de carro y espacio en blanco son equivalentes.
    • caracteres especiales: si se quieren escribir los caracteres  <,>,&,",' hay que hacerlo por medio de <, >,&, ", '.
    • secciones CDATA. Permiten que el analizador ignore ciertas secciones del documento. Sintaxis:
  • Válido. En primer lugar debe estar bien formado y, después, cumplir la definición del lenguaje que se está empleando por medio de DTD, XML Schema,...

XML bien formado

Para saber si un documento XML está bien formado, se utiliza un analizador (que puede ser un navegador). El analizador es un módulo de software que lee un documento XML y proporciona acceso a su contenido y estructura. Como resultado de su funcionamiento, a su salida genera un árbol de análisis en el que muestra los objetos que forman el documento y las relaciones entre ellos. Donde:

  • A los componentes de un documento se les llama objetos (elementos, comentarios y cadenas de texto). El propio documento es un objeto.
  • A cada objeto del árbol se le denomina nodo.
  • Al nodo principal que contiene a los demás se le llama nodo raíz.
  • Cuando un nodo contiene a otro, se le denomina rama.
  • Los nodos finales, que no contienen otros nodos, se llaman hojas.

Ejemplo

Documento XML:


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

<biblioteca>

    <ejemplar tipo_ejem="libro" titulo="XML practico" editorial="Ediciones Eni">

        <tipo> <libro isbn="978-2-7460-4958-1" edicion="1" paginas="347"></libro> </tipo>

        <autor nombre="Sebastien Lecomte"></autor>

        <autor nombre="Thierry Boulanger"></autor>

        <autor nombre="Ángel Belinchon Calleja" funcion="traductor"></autor>

        <prestado lector="Pepito Grillo">

            <fecha_pres dia="13" mes="mar" a="" o="2009"></fecha_pres>

            <fecha_devol dia="21" mes="jun" a="" o="2009"></fecha_devol>

        </prestado>

    </ejemplar>

    <ejemplar tipo_ejem="revista" titulo="Todo Linux 101. Virtualización en GNU/Linux" editorial="Studio Press">

        <tipo>

            <revista>

                <fecha_publicacion mes="abr" a="" o="2009"></fecha_publicacion>

            </revista>

        </tipo>

        <autor nombre="Varios"></autor>

        <prestado lector="Pedro Picapiedra">

            <fecha_pres dia="12" mes="ene" a="" o="2010"></fecha_pres>

        </prestado> 

    </ejemplar>

</biblioteca>

Para ver el resultado de este ejemplo en un navegador web, seguir los siguientes pasos:

  • Copiar el código xml en un editor de texto (por ejemplo el bloc de notas de Windows)
  • Guardar y nombrar el fichero con extensión .xml. Por ejemplo: LMSGI01_Ejemplo02.xml
  • Abrir el fichero xml creado desde un navegador web.

Espacio de nombres XML

Un espacio de nombres XML es una recomendación del W3C para proporcionar elementos y atributos con nombre único en un archivo XML.

Un archivo XML puede contener nombres de elementos o atributos procedentes de más de un vocabulario XML. Si a cada uno de estos vocabularios se le da un espacio de nombres, un ámbito semántico propio, referenciado a una URI donde se listen los términos que incluye, se resuelve la ambigüedad existente entre elementos o atributos que se llamen igual. Los nombres de elementos dentro de cada espacio de nombres deben ser únicos.

Un ejemplo sería una instancia XML que contuviera referencias a un cliente y a un producto solicitado por éste. Tanto el elemento que representa el cliente como el que representa el producto pueden tener un elemento hijo llamado "codigo". Las referencias al elemento "codigo" podrían ser ambiguas, salvo que los elementos, con igual nombre pero significado distinto, se llevaran a espacios de nombres distintos que los diferenciaran.

Cuando dos documentos diferentes utilizan el mismo nombre del elemento, se producirá un conflicto de nombres.

Este XML lleva la información de tabla HTML:

<table>
<tbody>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</tbody>
</table>

Este otro XML lleva información sobre una mesa en inglés (table):

<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

Si estos dos documentos XML se utilizan juntos, ya que los dos documentos se incluyen con diferentes contenidos y definición del elemento <table>, se producen conflictos de nombres.

El analizador XML no puede determinar cómo hacer frente a este tipo de conflictos.

Los conflictos de nombres en XML se pueden evitar fácilmente mediante el uso de prefijos en el nombre.

El siguiente XML lleva ambos <table> en el mismo documento pero con distinto nombre:

<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table> 

Un espacio de nombres se declara usando el atributo XML reservado xmlns, cuyo valor debe ser un identificador uniforme de recurso. Por ejemplo: xmlns="http://www.w3.org/1999/xhtml" Sin embargo, hay que destacar que el URI no se lee realmente como una dirección; se trata como una cadena de texto por el Parser XML. Por ejemplo, el propio http://www.w3.org/1999/xhtml no contiene código alguno, simplemente describe el espacio de nombres XHTML a lectores humanos. El hecho de usar una URL (tal como "http://www.w3.org/1999/xhtml") para identificar un espacio de nombres, en lugar de una simple cadena (como "xhtml"), reduce la posibilidad de que diferentes espacios de nombres usen identificadores iguales.

Es decir, los URI especificados en un documento XML no tienen porqué contener nada, su función es ser únicos. No obstante, en un URI se puede mostrar información si se considera oportuno. Por ejemplo:

http://www.w3.org/1999/xhtml/
http://www.w3.org/1999/XSL/Transform
http://www.w3.org/2000/svg
Los identificadores de los espacios de nombres no necesitan seguir las convenciones de las direcciones de internet, aunque a menudo lo hagan. La declaración puede incluir también un prefijo corto con el que los elementos y atributos pueden identificarse, por ejemplo:

Espacio de nombre por defecto

Cuando se define en la etiqueta de inicio de un elemento XML, se aplica a todos elementos sin prefijo del ámbito del elemento, pero no a los atributos.

Creado con eXeLearning (Ventana nueva)