Programación en castellano
Inicio > Tutoriales > Internet > XML > SVG y VML > Curso de XML
-Tutoriales

Curso de XML


Sintaxis correcta y restricciones de buena formación

Además de las reglas anteriormente mencionadas, para escribir documentos XML bien formados tenemos que conocer perfectamente la sintaxis del lenguaje XML y algunas restricciones que la especificación impone.

Es como en cualquier lenguaje tenemos que conocer la sintaxis de cómo se escriben los elementos, atributos y entidades, y ,si las incumplimos, el "parser" nos dará un error de mala formación. Algunas de estas reglas ya las hemos visto en el capítulo anterior: cómo se escriben las etiquetas de inicio y final, cómo se escriben las etiquetas de elementos vacios, cómo tenemos que escribir los atributos etc. y es evidente que si no seguimos estas reglas el parser nos dará error.

En el siguiente ejemplo:

Documento XML mal formado. Miscelánea de errores,

   <?xml version="1.0"?>
   <documento> 
     <p>Mi Primer <destacar importancia=1>documento XML</destacar></p]
     <p>Comienza con la etiqueta <documento&gt;</p>
     <p>A continuacion colocamos un elemento sin contenido</p>
     <imagen fichero="imagen.gif">
   </documento>

nos encontramos con cuatro errores:

  • El valor del atributo "importancia" no está entrecomillado. En HTML es posible no entrecomillar el valor de los atributos, pero en XML es obligatorio.

    Tendríamos que haber escrito:

    
       ...<destacar importancia="1">documento XML</destacar>...
    
    
  • La etiqueta final, del elemento "p", está mal cerrada. En lugar del carácter "]" , tendríamos que poner el símbolo mayor que ">".

    
       <p>Mi Primer <destacar importancia=1>documento XML</destacar></p>
    
    
  • Estamos utilizando el símbolo menor que "<" sin que forme parte de la definición de una etiqueta. Al ser un carácter reservado, tendríamos que escribirlo como la entidad predefinida &lt;.

    
       <p>Comienza con la etiqueta &lt;documento&gt;</p>
    
    
  • Estamos escribiendo el elemento vacío "imagen" de forma incorrecta. Al ser un elemento sin contenido tendríamos que haberlo escrito con una etiqueta de elemento vacío:

    
       <imagen fichero="imagen.gif"/>
    
    

    o también de la siguiente manera:

    
       <imagen fichero="imagen.gif"></imagen>
    
    

    Ambas son correctas, aunque es recomendable la primera.

Por tanto, el ejemplo anterior bien escrito:

Documento XML bien formado

<?xml version="1.0"?>
<documento>
   <p>Mi Primer <destacar importancia="1">documento XML</destacar></p>
   <p>Comienza con la etiqueta &lt;documento&gt;</p>
   <p>A continuacion colocamos un elemento sin contenido</p>
   <imagen fichero="imagen.gif"/>
</documento>

Otras reglas que debemos tener en cuenta son:

  • El XML es sensible a la utilización de mayúsculas y minúsculas.

    En el siguiente ejemplo:

    
       <p>Mi primer documento XML</p>
       <P>Mi primer documento XML</P>
    
    

    los elementos "p" y "P" son diferentes.

    Hay que tener mucho cuidado con esta regla, ya que su incumplimiento es habitual y suele ser la causa de la mayor parte de los errores. Es recomendable antes de empezar a escribir un documento XML establecer un criterio al respecto.

  • El nombre de la etiqueta de inicio y final debe ser el mismo.

    El siguiente ejemplo es incorrecto

    
       <p>Mi primer documento XML</P>
    
    

    ya que al hacer diferencia entre mayúsculas y minúsculas, el parser no entiende ambas etiquetas como del mismo elemento.

  • Ningún nombre de atributo puede aparecer más de una vez en la misma etiqueta de inicio o de elemento vacío.

    El siguiente ejemplo es incorrecto:

    
       ...<destacar importancia="1" importancia="2">documento XML</destacar>...
    
    

Un consejo; si utilizais el bloc de notas recordad que para que funcione todo el tinglado debeis guardar los ficheros con extensión ".xml". El bloc de notas procurará por todos los medios que los ficheros se guarden con extensión ".txt". Para conseguir que guarde el fichero con la extensión que deseamos, cuando tengamos la ventana de diálogo escogeremos en el desplegable "Todos los ficheros (*.*)" y pondremos el nombre del fichero con la extensión entre comillas dobles en el campo correspondiente.

. Ejercicio: Documento XML no valido

Reescribir el siguiente ejemplo para que sea un documento XML bien formado.

  <?xml version="1.0"?>
  <libros>
    <libro id="quijote">
      <titulo>El Quijote</titulo>
      <autor nombre=cervantes nombre=cervantes>
      <descripcion>Es el m<ejor libro de cervantes.</descripcion> 
    </libro]
  </Libros>

Solución:

Aprovecharemos este ejercicio para ver que el IE5 es una estupenda herramienta para comprobar que nuestros documentos son documentos XML bien formados.

Por ejemplo, si abrimos el XML del enunciado de este ejercicio observaremos cómo nos va indicando de forma muy clara los errores que tiene.

En primer lugar, nos indica que el valor del atributo nombre no está entrecomillado.

Error 1 de mala formación segun el IE5

En segundo lugar, nos indica que se produce un error por tener duplicado el nombre del atributo nombre.

Error 2 de mala formación segun el IE5

En tercer lugar, ya nos indica un error que no resulta tan claro, aunque nos debe resultar fácil adivinar que se produce porque estamos utilizando el símbolo menor que "<" sin que forme parte de la definición de una etiqueta. Al ser un carácter reservado, tendriamos que escribirlo como la entidad predefinida &lt;.

Error 3 de mala formación segun el IE5

A continuación se está dado cuenta de que el elemento autor está mal anidado, es decir, que parece ser que queremos cerrar el elemento linea sin tener cerrado el elemento autor. Hay que tener en cuenta que, en nuestro ejemplo, el autor es un elemento vacio y que, por tanto, deberíamos cerrarlo.

Error 4 de mala formación segun el IE5

A continuación produce un error porque hemos cerrado con un carácter no válido la etiqueta libro.

Error 5 de mala formación segun el IE5

Y en último lugar nos indica que no reconoce </Libros> como etiqueta de cierre para el elemento libros. Hay que recordar que el XML diferencia entre mayúsculas y minúsculas, lo que significa que libros y Libros no es lo mismo.

Error 6 de mala formación segun el IE5

Por tanto, el documento XML bien formado quedará de la siguiente manera:

  <?xml version="1.0"?>
  <libros>
    <libro id="quijote">
      <titulo>El Quijote</titulo>
      <autor nombre="cervantes"/>
      <descripcion>Es el m&lt;ejor libro de cervantes.</descripcion> 
    </libro>
  </libros>

. Ejercicio: Escribir un documento XML bien formado que represente un catálogo de libros

Escribir un documento XML válido que represente un catálogo de libros.

Como mínimo sería recomendable que cada libro tuviese información sobre:

  • Título
  • Autor
  • ISBN

Utilizar el IE5 para verificar que esté bien formado e incluir al menos dos o tres libros.

Solución:

Un documento XML que se ajuste a estas condiciones podría ser por ejemplo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<libros>
<libro isbn="91-901-533-7">
<titulo>XML: Extensible Markup Languge</titulo>
<autor>Elliote Rusty Harold</autor>
<editorial>Prentice Hall</editorial>
<descripcion>Estupendo libro sobre XML</descripcion>
</libro>
<libro isbn="84-415-0845-3">
<titulo>XML</titulo>
<autor>Natanya Pitts</autor>
<editorial>Anaya Multimedia</editorial>
<descripcion>Buen libro de introducción al XML</descripcion>
</libro>
</libros>

Lo más posible es que la estructura de este XML sea diferente a la que vosotros hayáis escrito, pero esto por el momento no es importante.

Lo interesante del ejercicio es que hayáis escrito un documento XML que se visualice correctamente en el IE5.

. Ejercicio: Validar el documento XML utilizado parser de XML

Validar el anterior documento XML, mediante el cual representábamos un catálogo de libros utilizando un parser de XML.

Solución:

Como ya comentamos en un principio, cualquier parser de XML es válido para realizar este ejercicio.

En este tutorial utilizaremos el parser de IBM, exactamente la versión xml4j_1_1_14. Es una versión antigua del parser. No importa, ya que esta versión sirve perfectamente para nuestras necesidades.

Para ello nos podemos bajar el siguiente fichero zip., que contiene:

  • Los dos ficheros .jar que realmente hacen falta para utilizar el parser.
    • xml4j_1_1_14.jar, que contiene el parser propiamente dicho.
    • xml4jSamples_1_1_14.jar, que contiene unos ejemplos de como utilizarlo.

Una vez que tenemos los jar, y declarados en nuestro classpath para validar un documento XML, no tendremos más que escribir:

java samples.XJParse.XJParse -d [nombreficheroXML] >tmp.txt

Por si alguno no está muy puesto en Java, se puede hacer de la siguiente manera:

  1. Colocar los .jar en un directorio classes que tengo colgando de la unidad C, y donde estan todos los .jar que utilicen las aplicaciones en Java.
  2. Luego en lugar de declarar estos .jar en el classpath, se definen desde linea de comandos en el momento que ejecutar la clase Java correspondiente. Como esto en algunas ocasiones puede ser farragoso, es aconsejable crear un fichero .bat donde se coloca el código. Para este caso he creado un fichero pxml.bat que lanza el parser xml.

Por tanto, en nuestro ejemplo, para validar nuestros documentos xml, no tendremos más que escribir:

pxml catalogo_libros.xml

Si tenemos instalado el JRE, lo mejor será colocar los .jar directamente en el directorio lib/ext, dentro del directorio donde esté instalado el JRE, puesto que Java busca en dicho directorio por defecto los .jar que pueda necesitar. Entonces con escribir la línea:

java samples.XJParse.XJParse -d [nombreficheroXML] >tmp.txt

Será suficiente. Os recomiendo que modifiquéis el documento XML de manera que sea erróneo para observar cómo el parser indica los errores.

. Las entidades

Todavía no hemos hablado mucho de las entidades,pero, como veremos más adelante, resultan muy importantes en la elaboración y mantenimiento eficiente de nuestros documentos XML.

Una de sus funcionalidades es la de permitirnos elaborar un documento XML en "trozos"; es decir, tendremos un único documento XML, pero éste físicamente se encontrará dividido en varios ficheros.

Por el momento no vamos a profundizar más en este aspecto, pero lo que hay que tener en cuenta es que para el parser se trata de un único documento XML y que, por tanto, sus diferentes partes, aún encontrándose en ficheros distintos, deben verificar las reglas de buena formación descritas anteriormente.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados