viernes, 16 de septiembre de 2016

Introducción a XML

Introducción a XML

Hola a todos

Introducción/Definición de XML
XML (Extended Markup Language) Es un metalenguaje extensible de etiquetas desarrollado por el W3C que permite definir la gramatica de lenguajes específicos(de la misma manera que HTML es a su vez un lenguaje definido por SGML)
Por tanto, XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades
Se puede ver como un subconjunto de SGML mucho más simple, hasta el punto de que la especificación de XML es una décima parte que SGML. Por otro lado, el lenguaje XML se puede definir como un metalenguaje, esto es, XML puede ser usado para definir otros lenguaje, al igual que SGML. Por ejemplo, el lenguaje XHTML, ampliamente usado hoy en día en la web, se ha construido usando como base XML.

Estructura y sintaxis de XML
Un documento XML está formado, en principio, por lo que se conoce como “texto plano”, esto es, texto en el cual todos los caracteres se representan visualmente, sin existir caracteres no visible exceptuando los de salto de línea, tabulador o espacio.
Los documentos escritos usando XML contendrán marcas para separar la información que estructura el documento de la información que se quiere almacenar. Para construir dichas marcas, en XML se usan los caractere “<” y “>” para delimitar el texto que se desea marcar, mientras que el carácter “/” sirve para indicar la etiqueta de finalización del marcado. Un posible ejemplo de documento XML sería el siguiente:
<nombre>Luis</nombre>
Esta construcción se denomina habitualmente “elemento” y constituye la base principal de los documentos XML. Además de los elementos, un documento XML puede contener otros tipos de información. A continuación, se especificarán los más relevantes.

Etiquetas, Elementos y atributos.
Las etiquetas son el componente de XML que permite definir los elementos que conformarán un documento de la siguiente forma:

<etiqueta>Valor</etiqueta>

Como se puede observar los elementos se formarán usando una etiqueta de inicio, otra de fin, delimitadas por los caracteres “>” y “<”, y que comparten el identificador textual, pero añadiendo el carácter  “/” al principio. En medio de las etiquetas de inicio y fin del elemento se representará el contenido que se desee almacenar en ese elemento . Este contenido puede a su vez englobar otros elementos. Por otro lado, los elementos pueden no contener ningún valor, pero en ese caso se deberá usar solamente la etiqueta de finalización.
Se considera que en el elemento XML engloba todo lo que se encuentra entre las correspondentes etiquetas de inicio y de fin y pueden contener tanto otros elementos como simplemente texto o una combinación de ambos

Ejemplo de XML para representar la ficha de un alumno sería sintácticamente correcto:

<alumno>
         <nombre>Pablo</nombre>
         <apellido>Pérez</apellido>
         <telefono>91555555</telefono>
</alumno>
Los nombres de los elementos deberán empezar por una letra o bien por el carácter “_” o “:” siempre y cuando el principio no contenga la palabra “xml en cualquier combianción posible de mayúsculas y minúsculas. Además, los nombres son “case sensitive”(Sensibles a las mayúsculas)y solo podrán contener letras, números y los caracteres “_”, ”.”, ”:”

Los elementos pueden asimismo contener atributos, los cuales se especificarán en la etiqueta de inicio del elemento. El objetivo de los atributos es poder proporcionar una información adicional sobre un elemento concreto. La sintaxis para representar los atributos consiste en especificar el nombre del atributo dentro de la etiqueta de inicio, a continuació un símbolo “=” y finalmente el valor del atributo delimitado por comillas dobles o por comillas simples.

<Elemento1 atrib1=”val1” atrib2=”val2”>Valor</Elemento1>
<Elemento2 atrib1=”Val3” atrib3=”val3”>Valor</Elemento2>

Incluyendo atributos en nuestro ejemplo anterior

<alumno sexo=”varon” FechaNacimiento=”5/6/1990”>
         <nombre>Pablo</nombre>
         <apellido>Pérez</apellido>
         <telefono>91555555</telefono>
</alumno>

Se puede observar que generalmente se pueden usar tanto atributos como nuevos elementos para representar información. Sin emabrgo, el uso de un número excesivo de atributos puede provocar que el documento XML sea menos legible, más difícil de mantener y difícilmente extensible. Además hay que tener en cuenta que los atributos no pueden contener información en forma de árbol, esto es, no pueden contener otros elementos o atributos tal y como sucede con los elementos. De forma general, se puede establecer la recomendación no usar atributos en exceso y dejarlos casi exclusivamente para representación de metadatos

Siguiendo esta recomendación, tanto el atributo “sexo” como el atributo “FechaNacimiento” se pueden convertir en elementos. Además, en este ejemplo, se añade un identificador del alumno como atributo

<?xml version="1.0" encoding="utf-8"?>
<alumno id="532">
         <nombre>Pablo</nombre>
         <apellido>Pére</apellido>
         <FechaNacimiento>
                   <dia>5</dia>
                   <mes>6</mes>
                   <año>90</a>
         </FechaNacimiento>
         <sexo>varon</sexo>
         <telefono tipo="movil">555-555-555</telefono>
         <direccion>Ronda de Segovia</direccion>
        
</alumno>

Caracteres especiales
En XML algunos símbolos son reservados del lenguaje por lo que para poder representarlos es necesario usar unos código. Estos se definen usando el símbolo & seguido de una palabra clave y terminados por punto y coma. Estas construcciones son entidades predefinidas (Luego veremos las entidades) A continuación, se detallan algunos de los más relevantes:

Código
Carácter
&quot;
&amp;
&
&apos;
&lt;
< 
&gt;
> 


Instrucciones de procesamiento
Más allá de los propios datos contenidos en los ficheros XML y las etiquetas de marcado en un fichero XML se pueden encontrar instrucciones especiales llamadas instrucciones de procesamiento. Éstas comienzan con <? Y terminan con ¿> Una de las instrucciones procesamiento más habituales es la que se usa para indicar qué versión de XML se va a usar y cuál es la codificación de caracteres que se va a usar. Por ejemplo, si se usa XML 1.0 y UTF-8 la instrucción de procesamiento sería la siguiente:

<?xml version=”1.0” encoding=”UTF-8”?>

Comentarios y secciones CDATA
Dentro de un documetno XML se puede añadir información que no pertenezca ni al marcado ni la información contenida en el documento y que sirve para documentarlo en forma de comentarios internos. La sintaxis de un comentario consta de un texto delimitado por una marca inicial “<!--“ y una marca final “-->”
<!—Comentario válido en XML-->

Los comentarios son elementos especiales y no necesita ninguna marca de cierre. Además hay que tener en cuenta que dentro de un comentario no se pueden usar dos guiones seguidos “--“
Además, en XML se encuentran disponibles las secciones CDATA que permiten marcar un texto para que éste no sea procesado por el parser, es decir, no serán analizadas sintácticamente. CDATA proviene de “Character Data” (Datos de carácter) en contraposición a datos de marcado. La sintaxis de estas secciones se basa en la etiqueta de inicio “<![CDATA[“ y la etiquea de fin, “]]>”

Ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<!--Las dos definiciones del elemento serían interpretadas de la misma forma -->
<alumnos>

<!CDATA[
         <alumno id="321">
                   <nombre>Luis</nombre>
         </alumno>
</alumnos>


<alumnos>
         &lt;alumno id "321"&gt;
         &lt;nombre&gt;luis&lt;/nombre&gt;
         &lt;alumno&gt;
</alumnos>

Documentos XML bien formados y válidos
Una vez hemos visto los elementos que pueden formar parte de un documento XM y sus características el siguiente paso será establecer cuando un documento es correcto. En este sentido, en XML se puede hablar de documentos “bien formados” y documentos “válidos”

Los documentos bien formados son aquellos que son sintácticamente correctos, es decir, que cumplen las reglas expuestas anteriormente. Sin embargo, los documentos válidos son aquellos que además de estar bien formados, cumplen los requisitos de una definición de estructura o DTD

Además de las reglas expuestas anteriormente, se pueden destacar algunos otros aspectos en los que no se ha incidido de forma directa:
-          Un documento XML debe contener un único elemento raíz
-           Los elementos son case-sensitive, por lo que las etiquetas de inicio y fin de un   
      elemento deben concordar en mayúsculas y minúsculas
-           El documento sólo contendrá caracteres válidos dependiendo del tipo de codificación  
      del documento
-          Los caracteres “<”, “>”, y “&” solo deben aparecer para delimitar las etiquetas de los elementos y para usar caracteres especiales

Espacios de nombres
De forma general, los documentos XML se suelene combinar con otros documentos XML existentes, esto es, es habitual que se desee usar uno o varios módulos desarrollados previamente por terceras personas. Esta modularida es una característica esenciall de XML y permite al desarrollador poder reutilizar código existente que en muchos casos ya sido depurado y ampliamente probado.
El problema que sirge en estos casos es la posible colisión que se puede producir en los nombres d elos elementos que conformen los módulo que se quieren usar. Para solucionar este problema XML proporciona un mecanismo denominado “espacio de nombres”, que permite asignar nombres extendidos a los elementos de forma que se puedan evitar las colisiones

Declaración de un espacio de nombres
Un espacio de nombres se define como una referencia URI que servirá para identificar los elementos que pertenecen a dicho espacio de nombres. Otra forma de verlo es que los elementos tendrán un nombre compuesto por dos partes: una primera con su nombre y una segunda con el nombre deespacio de nombres. Este nombre compuesto permitirá identificar de forma unívoca al elemento en cuestión y de esta forma conocer siempre a qué elemento se está refiriendo el documento.
La contrucción de estos nombres extendidos se realiza uniendo el nombre al espacio de nombres y el nombre del elemento o atributo usando como conector el símbolo “:”. Sin embargo, las referencias URI pueden ser largas, lo que va en detrimento de la legibilidad y claridad del documento, además de propiciar que se cometan errores más fácilmente. Además las URIs pueden contener caracteres no válidos en XML. Para solucionar este problema, en XML se puede asignar un sinónimo corto al espacio de nombres de forma que este sinónimo corto sea el que se use a lo largo del documento. . El sinónimo se asigna usando el separador “:” y la etiqueta “xmlns”. En realizada, “xmlns” es un atributo reservado

Ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<elementoej xmlns:enej="http://dominioeje.com/rutaej">
         <enej:elemento1>Texto 1</enej:elemento1>
         <enej:elemento2>Texto 2</enej:elemento2>
</elementoej>

Se puede observar que el sinónimo corto del espacio de nombres de ejemplo es “enej” y que su uso resulta más adecuado que el nombre completo del espacio de nombreshttp://dominioeje.com/rutaej. Además, se puede observar que los elementos “elemento1” y “elemento2” pertenecen al espacio de nombres “enej” al estar calificados con el sinónimo de dicho espacio.


Espacios de nombres por defecto
Si un espacio de nombres se declara sin su sinónimo correspondiente esto indicará que todos los elementos (incluido el elemento que declara el espacio de nombres) que contenga pertenecerán a dicho espacio d enombres. Por tanto, sería como definir un espacio de nombres por defecto para los elementos que no tengan espacio de nombres asignado.
Otro uso de los espacios de nombres que puede resultar de gran utilidad es dejar su declaración en blanco (xmlns=””), lo que indicaría que los elementos y atributos contenidos, por defecto no pertenecen a ningún espacio de nombres.
Para terminar, hacer hincapié en que cuando se declara un espacio de nombres por defecto (o sin espacio de nombres por defecto, dejando el atributo xmlns vacío) pero un elemento contiene un prefijo de un espacio de nombres, el espacio de nombres que prevalecerá será éste último.

  
Ejercicios
  1. Definir un documento XML que permita representar un libro. Deberá contener los atributos típicos como “título”, “autores”, “editorial”,”fecha de publicacion”, “isbn”…
  2. A partir d ela definición anterior escribir un documento XML que al menos contenga 10 entradas de libros.
  3. Buscar un validador de XML online por ejemplo el de W3C http://validator.w3.org , introducir el documento generado en el ejercicio anterior y comprobar que el documento esté bien formado.
  4. Crear un espacio de nombres ficticio e introducirlo en el XML del ejercicio 2 y comprobar que el documento XML sigue estando bien formado.

No hay comentarios:

Publicar un comentario