Escolar Documentos
Profissional Documentos
Cultura Documentos
XML (eXtensible Markup Language - Lenguaje de Marcas Extensible) no es un lenguaje de marcas en sí, sino
un metalenguaje, es decir, XML define las reglas generales que debe cumplir un lenguaje de marcas y la manera
de cómo definir dicho lenguaje.
El XML fue creado por el W3C a finales de los 90. El W3C se creó en 1994 para tutelar el crecimiento y
organización de la web. Su primer trabajo fue normalizar HTML, el lenguaje de marcas con el que se escriben
las páginas web. Al crecer el uso de la web, crecieron las presiones para ampliar el HTML. El W3C decidió que
la solución no era ampliar el HTML, sino crear unas reglas para que cualquiera pudiera crear lenguajes de
marcas adecuados a sus necesidades, pero manteniendo unas estructuras y sintaxis comunes que permitieran
compatibilizarlos y tratarlos con las mismas herramientas. Ese conjunto de reglas es el XML, cuya primera
versión se publicó en 1998.
Lógicamente, el HTML no cumple las normas del XML ya que el HTML es anterior al XML. El creador del
HTML, Tim Berners-Lee, se basó en el SGML, otro conjunto de reglas para la creación de lenguajes de marcas
creado en los años 80 y más complejo que el XML. Una vez creado el XML, el W3C aprobó en el año 2000
el XHTML, una versión del HTML que sí que cumple las reglas del XML. El W3C pretendió sin éxito que el HTML
dejara de utilizarse y sólo se utilizara XHTML. Al no conseguirlo, el W3C decidió retomar el desarrollo del HTML
(incluyendo en él una versión XHTML). Actualmente, encotnramos ya diseños con la versión 5 de HTML, la cual
sigue sin seguir los estándares de XML.
Usos de XML
Todos los usos de XML se basan en el almacenamiento y distribución de información.
Intercambio de información entre aplicaciones: El hecho de que XML almacene información mediante
documentos de texto plano, facilita que se utilice como estándar, ya que no se requiere software especial para
leer su contenido, es texto y es entendible por cualquier software.
Computación distribuida: Se trata de la posibilidad de utilizar XML para intercambiar información entre
diferentes computadoras a través de las redes. Las ventajas de XML están relacionadas con el hecho de que
con él se crean documentos inocuos (no pueden contener código maligno como virus o espías), con lo que la
seguridad de esos sistemas es total.
Información empresarial: XML es un formato que tiene cada vez más importancia para generar
documentos empresariales por la facilidad de estructurar los datos de la forma más apropiada para la empresa.
Un documento XML se parece mucho a una pequeña base de datos, con la ventaja de que es muy fácil darle
formato de salida por pantalla o impresión.
Conceptos y vocabulario
Documento XML: Un documento XML es un documento de texto plano (sin formato).
Caracteres (characters): Los documentos XML pueden estar codificados en distintos juegos de caracteres
(ISO-8859-1, UTF-8, etc). Recomendamos leer Qué es la Codificación de Caracteres.
Procesador XML (XML parser): Cuando una aplicación necesita leer un documento XML, la aplicación recurre
a un procesador XML. Este procesador es el que lee el documento, analiza el contenido y le pasa la información
en un formato estructurado a la aplicación. La recomendación XML especifica lo que debe hacer el procesador,
pero no entra en lo que hace después la aplicación con esa información.
Etiquetas (tags) o Marcas (mark-up): Las etiquetas son marcas que sirven para identificar un contenido
concreto del resto del contenido del documento. Una etiqueta empieza con el carácter "<", le continua un nombre
identificativo, y termina con el carácter ">". Existen tres tipos de etiquetas:
Etiquetas de apertura (start-tag).
<apartado>
Etiquetas de cierre (end-tag), que empiezan por "/".
</apartado>
Etiquetas vacías (empty-tag), que terminan por "/".
<salto-de-linea />
Elementos (elements): Un elemento es un componente lógico de un documento XML que o bien comienza por
una etiqueta de apertura y termina por la etiqueta de cierre correspondiente, o bien consiste en una única
etiqueta vacía. El contenido de un elemento es todo lo que se encuentra entre las etiquetas de apertura y cierre,
que puede ser texto o incluso otros elementos. También existen elementos vacíos, los cuales no tienen
contenido.
Elemento con texto como contenido:
<autor>TicArte</autor>
Elemento con otros elementos como contenido:
<web>
<autor>TicArte</autor>
</web>
Elemento vacío o sin contenido:
<ingreso />
Los elementos vacíos también pueden encontrarse escritos de esta manera:
<ingreso></ingreso>
Entidades (entities) y Referencias a entidades: Una entidad consiste en un nombre y su valor (son similares
a las constantes en los lenguajes de programación). Las entidades se definen mediante la etiqueta ENTITY.
<!ENTITY web "TicArte">
Una referencia a una entidad empieza con el caracter "&", sigue con el nombre de la entidad y termina con ";".
Al abrir el documento XML el procesador sustituye la referencia a la entidad por su valor.
<autor>&web;</autor>
El procesador XML la convertiría en:
<autor>TicArte</autor>
Existen entidades predefinidas, necesarias para poder utilizar los caracteres que delimitan las marcas o las
cadenas de texto. Algunas de ellas las podéis ver en la tabla siguiente, el resto de caracteres los tenéis en
este enlace.
Referencia a entidad Carácter
< <
> >
& &
' '
" "
Comentarios (comments): Un comentario es una etiqueta que comienza por "<!--" y acaba por "-->". Los
comentarios no pueden estar dentro de elementos y no pueden contener los caracteres "--". Dentro de un
comentario las entidades de carácter no se reconocen, es decir, sólo se pueden utilizar los caracteres del juego
de caracteres del documento.
<!-- Esto es un comentario -->
Secciones CDATA (CDATA section): Una sección CDATA es una etiqueta que comienza por "<![CDATA[" y
termina por "]]>" y cuyo contenido el procesador XML no interpreta como marcas sino como texto. Es decir que
si aparecen los caracteres especiales (< & " ') en una sección CDATA, el procesador XML no interpreta que
empieza un marca sino lo considera un carácter más. Se suele utilizar en documentos en los que aparecen
muchas veces esos caracteres especiales para no tener que estar utilizando las referencias a entidades (<
& " ') que hacen el texto bastante incómodo de leer.
<ejemplo>
<![CDATA[
En HTML la negrita se escribe: <strong>
]]>
</ejemplo>
Cuando dos nodos están unidos por un arco con dirección, el nodo padre es el nodo del que parte el arco y
el nodo hijo es el nodo al que llega el arco.
Un árbol es un grafo en el que cualquier pareja de nodos están conectada por un único camino (es decir, que
no hay ciclos). Un árbol dirigido es un árbol en el que las aristas tienen dirección y todos los nodos menos uno
tienen un único padre.
El nodo raíz de un árbol dirigido es el único nodo sin padre. Los nodos hermanos son los nodos que tienen
el mismo padre.
Los nodos descendientes de un nodo son todos los nodos a los que se llega desde el nodo: los hijos, los
hijos de los hijos, etc. Los nodos ascendientes de un nodo son todos los nodos de los que un nodo es
descendiente: el padre, el padre del padre, etc.
En el siguiente ejemplo de documento XML podemos observar cómo se cumple esta estructura de árbol. El
documento comienza con las Instrucciones de Procesamiento, a continuación, aparece el elemento raíz que
incluirá al resto de elementos del mismo.
<?xml version="1.0" encoding="UTF-8"?>
<biblioteca>
<libro>
<titulo>La vida está en otra parte</titulo>
<autor>Milan Kundera</autor>
<fechaPublicacion año="1973"/>
</libro>
<libro>
<titulo>Pantaleón y las visitadoras</titulo>
<autor fechaNacimiento="28/03/1936">Mario Vargas Llosa</autor>
<fechaPublicacion año="1973"/>
</libro>
<libro>
<titulo>Conversación en la catedral</titulo>
<autor fechaNacimiento="28/03/1936">Mario Vargas Llosa</autor>
<fechaPublicacion año="1969"/>
</libro>
</biblioteca>
Validación de documentos
Un documento XML debe validarse, en primer lugar para saber si está bien formado, y en segundo lugar para
ver si es válido y cumple las características que le impone el esquema (schema) que pueda tener asociado.
Espacios de nombres
Puede ocurrir que cuando se manejan documentos XML puede ocurrir que diferentes XML que tengamos,
utilicen las mismas etiquetas. Aunque el contexto sería distinto, tendríamos un problema si manejamos ambos
documentos con el mismo software, ya que el analizador, no sabría cómo manejar ambas etiquetas iguales.
Los espacios de nombres (namespacing) evitan el problema indicando en cada etiqueta una código que sirve
para indicar el contexto de cada etiqueta y así diferenciar las que son iguales. Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<title>Documento de prueba</title>
<content>
<html>
<head>
<title>Titulo HTML</title>
</head>
<body>
Texto del documento
</body>
</html>
</content>
<author>Jorge</author>
</document>
En el ejemplo anterior se usan etiquetas en inglés para el documento (algo muy habitual en el mundo
empresarial) y eso hace que la etiqueta "title" se repita en contextos distintos, el primero es para poner un título
genérico al documento (y es una etiqueta de la empresa en cuestión) y la segunda se corresponde a la etiqueta
"title" del lenguaje HTML (o mejor XHTML).
La solución es anteponer al nombre de la etiqueta un nombre que indique el propietario de la misma por
ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<ticarte.document>
<ticarte.title>Documento de prueba</ticarte.title>
<ticarte.content>
<html>
<head>
<title>Titulo HTML</title>
</head>
<body>
Texto del documento
</body>
</html>
</ticarte.content>
<ticarte.author>Jorge</ticarte.author>
</ticarte.document>
Aunque la mejor solución es incluir en las etiquetas XML el atributo xmlns (xml namespacing) que permite
asignar un espacio de nombres a un prefijo en el documento dentro del elemento en el que se usa el espacio
de nombres. Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:ticarte="http://www.ticarte.com/esquema.xsd"
xmlns:html="htp://www.w3c.org/html">
<ticarte:title>
Documento de prueba
</ticarte:title>
<ticarte:content>
</ticarte:content>
<ticarte:author>
Jorge
</ticarte:author>
</document>
En el ejemplo se usa el prefijo "ticarte" para indicar etiquetas del espacio de nombres
"http://www.ticarte.com/esquema.xsd" y "html" para el espacio de nombres de HTML.
El atributo "xmlns" no tiene por qué utilizarse en el elemento raíz, se puede posponer su declaración en el
primer elemento que pertenezca al espacio de nombres deseado. Por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://www.ticarte.com/esquema.xsd">
<document>
<title>Documento de prueba</title>
<content>
<html:html xmlns:html="htp://www.w3c.org/html">
<html:head>
<html:title>Titulo HTML</html:title>
</html:head>
<html:body>
Texto del documento
</html:body>
</html:html>
</content>
<author>Jorge</author>
</document>
Bibliografía
Sintes Marco, Bartolomé. "Qué es el XML" y "XPath" del curso "XML: Lenguaje de Marcas
Extensible Licencia". Licencia CC BY-CN-SA. [Consulta: Marzo 2014]. http://www.mclibre.org/
Sánchez Asenjo, Jorge. Unidad 1 de Lenguajes de Marcas, XML. Versión 2.1 - 2012. Licencia CC
BY-CN-SA. [Consulta: Septiembre 2013]. http://www.jorgesanchez.net.
TodoXML. https://sites.google.com/site/todoxmldtd/referencia/referencia-de-xml
Abrirllave. http://www.abrirllave.com/xml/