miércoles, 21 de diciembre de 2011

Trabajo de Investigación de XML


         -       Introducción a XML
XML, siglas en inglés de eXtensible Markup Language ('lenguaje de marcas extensible'), es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificación y adaptación del SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades, de ahí que se le denomine metalenguaje1 . Algunos de estos lenguajes que usan XML para su definición son XHTML, SVG, MathML.

-          Características propias, etiquetas

XML es un formato basado en texto, específicamente diseñado para almacenar y transmitir datos. Un documento XML se compone de elementos XML, cada uno de los cuales consta de una etiqueta de inicio, de una etiqueta de fin y de los datos comprendidos entre ambas etiquetas. Al igual que los documentos HTML, un documento XML contiene texto anotado por etiquetas. Sin embargo, a diferencia de HTML, XML admite un conjunto ilimitado de etiquetas, no para indicar el aspecto que debe tener algo, sino lo que significa. Por ejemplo: un elemento XML puede estar etiquetado como precio, número de pedido o nombre. El autor del documento es quien decide qué tipo de datos va a utilizar y qué etiquetas son las más adecuadas.
Los documentos XML son fáciles de crear. En este ejemplo se utiliza XML para describir un parte meteorológico. Este documento se puede guardar con una extensión de XML, por ejemplo Tiempo.xml.
<reporte-clima>
<fecha>March 25, 1998</fecha>
<hora>08:00</hora>
<area>
<departamento>MVD</ departamento >
<ciudad>Montevideo</ciudad>
<pais>Uruguay</pais>
</area>
<medidas>
<cielo>parcialmente nublado </cielo>
<temperatura>16</temperatura>
<viento>
<direccion>SO</direccion>
<velocidad>16</velocidad>
</viento>
<h-indice>51</h-indice>
<humedad>87</humedad>
<visibilidad>10</visibilidad>
<uv-indice>1</uv-indice>
</medidas>
</reporte-clima>
En lugar de describir el orden y la disposición de la presentación de los datos, las etiquetas indican qué significa cada elemento de datos (si es un elemento <fecha>, un elemento <area>, etc.). Cualquier receptor de estos datos puede descodificar el documento y utilizarlo para sus propios fines.

-          Herramientas de edición

Son programas que nos facilitan la edición de documentos XML, su validación, etc.
Como los archivos XML son documentos de texto plano pueden crearse con cualquier programa de edición, por simple que sea. Con todo, es más fácil crear los documentos con editores específicos para este propósito.
El uso de editores no específicos puede tener sentido si se quiere hacer una edición rápida en un documento y, además, tienen la ventaja de que se encuentran en todos los sistemas operativos, pero tienen carencias importantes ya que no reconocen el documento XML como tal, por tanto, no nos pueden dar soporte.
Para escribir documentos XML sin errores se necesita un editor específico que nos ayudará a validar el XML contra un DTD o un esquema y forzar así estructuras XML válidas. Ahondaremos en esto más adelante. Un editor XML debe ser quien de proporcionarnos las siguientes funcionalidades:
  • Añadir etiquetas de cierre automáticamente
  • Forzar la escritura de un documento XML bien formado, es decir, haciendo cumplir las reglas de sintaxis de XML.
  • Verificar el XML contra un DTD o esquema
  • Resaltar las etiquetas y sintaxis del XML mediante colores
Algunas herramientas libres para la edición de documentos XML son las siguientes: XML Copy Editor, Quanta Plus o Bluefish.

-          Elaboración de documentos XML bien formados

Todos los documentos XML deben estar bien formado, lo que significa que se debe cumplir lo siguiente:
  • Si no se utiliza DTD, el documento debe comenzar con un Declaración de Documento Standalone
  • Todas las etiquetas deben estar balanceadas: esto es, todos los elementos que contengan datos de tipo carácter deben tener etiquetas de principio y fin
  • Todos los valores de los atributos deben ir entrecomillados (el carácter comilla simple [el apóstrofe] puede utilizarse si el valor contiene caracteres comillas dobles, y viceversa): si necesitas ambos, utiliza &apos; y &quot;
  • Cualquier elemento VACÍO (p.e. aquellos que no tienen etiqueta final como <IMG>, <HR>, y <BR> y otros de HTML) deben terminar con '/>' o debes hacerlos no VACÍOS añadiéndoles una etiqueta de fin.
  • No debe haber etiquetas aisladas (< ó &) en el texto (p.e. debe darse como &lt; y &amp;), y la secuencia ]]> debe darse como ]]&gt; si no ocurre esto como final de una sección marcada como CDATA;
  • Los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas, como en el resto de SGML);
  • Los ficheros bien-formados sin-DTD pueden utilizar atributos en sus elementos, pero éstos deben ser todos del tipo CDATA, por defecto. El tipo CDATA (character DATA) son caracteres..
Según la especificación de XML del W3C, un documento XML está bien formado si:
  • Tomado como un todo, cumple la regla denominada "document".
  • Respeta todas las restricciones de buena formación dadas en la especificicación.
  • Cada una de las entidades analizadas que se referencia directa o indirectamente en el documento está bien formada.
Cumplir la regla "document" antes mencionada significa:
  • Que continene uno o más elementos.
  • Hay exactamente un elemento, llamado raíz, o elemento documento, del cual ninguna parte aparece en el contenido de ningún otro elemento.
  • Para el resto de elementos, si la etiqueta de comienzo está en el contenido de algún otro elemento, la etiqueta de fin está en el contenido del mismo elemento. Es decir, los elementos delimitados por etiquetas de principio y final se anidan adecuadamente mutuamente.
        -      Estructura y Sintaxis.

La información es estructurada cuando compone de partes bien definidas, y que esas partes se componen a su vez de otras partes. Entonces se tiene un árbol de trozos de información. Ejemplos son un tema musical, que se compone de compases, que están formados a su vez por notas. Estas partes se llaman elementos, y se las señala mediante etiquetas.
Una etiqueta consiste en una marca hecha en el documento, que señala una porción de éste como un elemento. Un pedazo de información con un sentido claro y definido. Las etiquetas tienen la forma <nombre>, donde nombre es el nombre del elemento que se está señalando.
A continuación se muestra un ejemplo para entender la estructura de un documento XML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Edit_Mensaje SYSTEM "Edit_Mensaje.dtd">

<Edit_Mensaje>
     <Mensaje>
          <Remitente>
               <Nombre>Nombre del remitente</Nombre>
               <Mail> Correo del remitente </Mail>
          </Remitente>
          <Destinatario>
               <Nombre>Nombre del destinatario</Nombre>
               <Mail>Correo del destinatario</Mail>
          </Destinatario>
          <Texto>
               <Asunto>
                    Este es mi documento con una estructura muy sencilla
                    no contiene atributos ni entidades...
               </Asunto>
               <Parrafo>
                    Este es mi documento con una estructura muy sencilla
                    no contiene atributos ni entidades...
               </Parrafo>
          </Texto>
     </Mensaje>
</Edit_Mensaje>
Aquí está el ejemplo de código del DTD del documento «Edit_Mensaje.dtd»:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- Este es el DTD de Edit_Mensaje -->

<!ELEMENT Mensaje (Remitente, Destinatario, Texto)*>
<!ELEMENT Remitente (Nombre, Mail)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Mail (#PCDATA)>
<!ELEMENT Destinatario (Nombre, Mail)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Mail (#PCDATA)>
<!ELEMENT Texto (Asunto, Parrafo)>
<!ELEMENT Asunto (#PCDATA)>
<!ELEMENT Parrafo (#PCDATA)>

-          Utilización de espacios de nombres en XML.

Un espacio de nombres XML es una recomendación W3C para proporcionar elementos y atributos con nombre único en una instancia XML. Una instancia 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, se resuelve la ambigüedad existente entre elementos o atributos que se llamen igual. Los nombres de elementos dentro de un 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 "numero_ID". Las referencias al elemento "numero_ID" podrían ser ambiguas, salvo que los elementos, con igual nombre pero significado distintos, se llevaran a espacios de nombres distintos que los diferenciaran.
<?xml version="1.0"?>
<cli:cliente xmlns:cli='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/cliente'
             xmlns:ped='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/pedido'>
    <cli:numero_ID>1232654</cli:numero_ID>
    <cli:nombre>Fulanito de Tal</cli:nombre>
    <cli:telefono>99999999</cli:telefono>
    <ped:pedido>
      <ped:numero_ID>6523213</ped:numero_ID>
      <ped:articulo>Caja de herramientas</ped:articulo>
      <ped:precio>187,90</ped:precio>
    </ped:pedido>
</cli:cliente>
</lang>