Las definiciones aquí incluidas, son sólamente una aproximación a las definiciones correctas. No deben tomarse nunca como las verdaderas definiciones.XML ¿Pero esto que es?.
Un documento XML es un documento de texto. Imagine una carta, la vamos a modificar hasta convertirla en un documento XML.
Zaragoza. 3 de Diciempre de 1984
Queridos amigos.
Por la presente les invito a convertir esta carta
en un documento xml por lo que les animo a estar
atentos a las indicaciones para hacerlo lo mas
rápidamente posible.
Puede que no lo consiga, pero al menos voy a
intentarlo por lo que voy a alargar esta carta
y que nos pueda servir de modelo.
Saludos: Su seguro servidor.
P.D. Espero que sea de su agrado.
Con XML lo que tratamos de hacer es marcar el texto, es decir, escribir algo en el texto que nos indique que hay algo especial en una parte del texto.
XML llama a estas marcas etiquetas.
Etiquetas XML (tags) :
Etiqueta: Es un nombre encerrado entre los signos menor '<' y mayor '>'.
Ejemplos :<Hola>,<carta>
¿Que podemos escribir dentro de una etiqueta?: Pongamos por simplificar que el nombre solo puede tener numeros y letras y no pude empezar por número. Ya tendremos tiempo de complicarlo de manera bárbara.
Nombre de la etiqueta: El texto que esta entre el '<' y el '>'.
¿Para que demonios podemos necesitar poner etiquetas en un texto?. Por ejemplo en nuestra carta, para diferenciar las partes de la carta. Presentación, fecha, cuerpo,saludo...... Yo creo que se nos pueden ocurrir muchas cosas.
Pongamos alguna etiqueta a nuestra carta.
<cabecera>Zaragoza. 3 de Diciempre de 1984
<saludo>Queridos amigos.
<cuerpo>
Por la presente les invito a convertir esta carta
en un documento xml por lo que les animo a estar
atentos a las indicaciones para hacerlo lo mas
rápidamente posible.
Puede que no lo consiga, pero al menos voy a
intentarlo por lo que voy a alargar esta carta
y que nos pueda servir de modelo.
<despedida>Su seguro servidor.
<posdata> P.D. Espero que sea de su agrado.
Ya hemos marcado un poco la carta poniendo unas etiquetas con un nombre adecuado en el comienzo de lo que queriamos marcar, pero XML nos exige en los documentos (nos guste o no) que marquemos también el final.
Cierre de Etiquetas XML(tag closing)
Cierre o fin de etiqueta: Es lo mismo que una etiqueta pero con un slash(barra inclinada) despues del signo de menor
Ejemplo: de la etiqueta <despedida> tenemos su cierre que es </despedidat;.
Creo que esta chupado entenderlo.
Veamos como queda nuestra carta cerrando las etiquetas.
<cabecera>Zaragoza. 3 de Diciempre de 1984</cabecera>
<saludo>Queridos amigos.</saludo>
<cuerpo>
Por la presente les invito a convertir esta carta
en un documento xml por lo que les animo a estar
atentos a las indicaciones para hacerlo lo mas
rápidamente posible.
Puede que no lo consiga, pero al menos voy a
intentarlo por lo que voy a alargar esta carta
y que nos pueda servir de modelo.
</cuerpo>
<despedida>Su seguro servidor.</despedida>
<posdata> P.D. Espero que sea de su agrado.</posdata>
Ya sabemos como marcar el comienzo de algo y el final de algo en un documento al estilo XML.
El trozo de texto que contiene una marca de inicio, el texto y la marca de cierre es el Elemento XML. Veamoslo
Elemento XML.
Un elemento XML en un documento XML es una parte del documento que comienza con una etiqueta y termina con su cierre, Etiqueta y cierre incluido.
Ejemplo: <cabecera>Zaragoza. 3 de Diciempre de 1984</cabecera>
El nombre de un elemento es el nombre de la etiqueta.
Un elemento contiene pues:
- una etiqueta con su nombre.
- un cierre de etiqueta.
- el contenido, o datos, o texto entre las etiquetas.
- Cabecera
- Saludo
- Cuerpo
- Despedida
- Posdata
- Los nombre de los elementos se pueden repetir. Puede haber dos etiquetas con el mismo nombre.
- Dos elementos jamas se pueden solapar. Esto esta mal: <principio>Esto es un texto<final>con elementos xml </principio>solapados</final>
- Un elemento puede incluir elementos. ¡ATENCION A ESTA PROPIEDAD!.
El hecho de que un elemento XML pueda incluir elementos XML, hace que podamos relacionar elementos por la propiedad de inclusión de un elemento en otro.
Arbol genealogico de un documento XML.
El hecho de que un elemento XML pueda incluir elementos XML nos deja muy sencillas estas definiciones.
Un elemento es padre de otro si lo incluye.
Un elemento es hijo de otro si esta incluido en el.
Un elemento es hermano de otro si los dos tienen el mismo padre.
Recordar siempre que dos elementos nunca se solapan.
Vamos a añadir a nuestra carta las etiquetas : fecha, negrita y subrayado.
<cabecera>Zaragoza.<fecha> 3 de Diciempre de 1984</fecha></cabecera>
<saludo>Queridos amigos.</saludo>
<cuerpo>
<parrafo>Por la presente les invito a convertir esta carta
en un documento xml por lo que les animo a estar
atentos a las <negrita>indicaciones</negrita> para hacerlo lo mas
<negrita><subrayado>rápidamente</subrayado></negrita> posible.</parrafo>
<parrafo>Puede que <subrayado>no</subrayado> lo consiga, pero al menos voy a
intentarlo por lo que voy a alargar esta carta
y que nos pueda servir de modelo.</parrafo>
</cuerpo>
<despedida><negrita>Su seguro servidor.</negrita></despedida>
<posdata> P.D. Espero que sea de su agrado.</posdata>
Veamos el arbol genealógico de esta carta:
cabeceraCabecera,saludo,cuerpo,despedida y posdata son hermanos
------fecha
saludo
cuerpo
------parrafo
------------negrita
------------negrita
------------------subrayado
------parrafo
------------subrayado
despedida
------negrita
posdata
Observar como hay nombres duplicados.
Cuerpo tiene dos hijos, y los dos se llaman parrafo, los parrafos tienen a cuerpo como padre.
El primer parrafo tiene dos hijos negritas y una de las negritas tiene un elemento hijo que se llama subrayado.
Observar la estructura casi de arbol , falta un padre común.
Repasemos lo que hemos visto hasta ahora.
- Hemos definido una Etiqueta XML que tiene un nombre y la forma: <carta> y el cierre de una etiqueta <carta>
- Hemos definido un Elemento XML que es un texto entre una etiqueta y su cierre y que puede contener otros elementos.
- El contenido o datos de un Elemento es el texto entre la etiqueta y su cierre.
- Los elementos de un mismo documento pueden tener el mismo nombre.
- Los elementos no se pueden solapar.
Hemos también obviado el contenido del texto, pero si queremos escribir algo con los signos mayor y menor, 'la hemos fastidiado', se puede confundir con una etiqueta.
¿Como resuelve el XML este problema?.Prohibiendo escribir < en el contenido de un elemento (con dos cojones).
¿Entonces como hacemos si necesitamos escribir < en un contenido?. Leer el siguiente capítulo.
Referencias a Entidad XML
Ya sabemos crear elementos xml, pero tendremos un problema si queremos formar un elemento con este texto:
En la entrada del establécimiento, estaba escrito
"<bebidas>" en la puerta.
Si intentamos formar un elemento xml con la etiqueta <texto>. Nos quedará de esta forma:
<texto>En la entrada del establécimiento, estaba escrito
"<bebidas>" en la puerta.</texto>
Esto es incorrecto a simple vista, pues tenemos en medio de un elemento algo que no sabemos si es una etiqueta sin cerrar, o un texto que es similar a una etiqueta.
Para evitar problemas de este tipo XML tiene unas palabras clave para referenciar los símbolos problemáticos.
lt | < | less than |
gt | > | greater than |
amp | & | ampersand |
apos | ' | apostrophe |
quot | " | quotation mark |
La sintaxis para referenciar uno de estos símbolos es: &referencia;
De este modo si en el contenido de un elemento queremos escribir el simbolo <, para que no lo confundamos con el comienzo de etiqueta, escribiremos <
Así quedaría nuestro ejemplo:
<texto>En la entrada del establécimiento, estaba escrito
"<bebidas>" en la puerta.</texto>
Otro ejemplo sería escribir texto explicando xml:
<texto>Las etiquetas comienzan con < y terminan con ></texto>
¡IMPORTANTE!
El contenido de este elemento es:
Las etiquetas comienzan con < y terminan con >
Es incorrecto pensar que el contenido de este elemento es:
Las etiquetas comienzan con < y terminan con >
Pongámonos un poco serios y definamos aunque sea un poco.
Entidad XML: es un texto que refencia a otro. Por ejemplo la entidad lt referencia a <
Nombre de una Entidad XML: es el texto que referencia. Por ejemplo lt es el nombre que referencia a <
Que forma tiene el nombre de una Entidad XML: para simplificar es una palabra, numeros y letras y ya esta. No esperamos encontrar una entidad que se llame: "890981 12 3 41234()=)( quepasa", esperamos que una referencia se llame : "arroba" por ejemplo.
Como se referencia una entidad: escribiendo : &nombre;
Que entidades existen. Estas son las llamadas referencias a Entidad básicas.
< | < | less than |
> | > | greater than |
& | & | ampersand |
' | ' | apostrophe |
" | " | quotation mark |
¿Puedo yo crear entidades?. Si, pero esto no lo veremos aquí.
¿Hay otras entidades a parte de estas de la tabla?. Si, puede haberlas, pero por ahora no lo vamos a ver.
El uso de entidades tiene mas aplicaciones que la de poder escribir caracteres problematicos en el contenido de un elemento, pero esto es otra historia.
PCDATA Y CDATA EN XML
Si queremos analizar un elemento xml, empezaremos a leerlo, teniendo especial cuidado en buscar el simbolo < para identificar etiquetas y elementos, y ver si hay algún fallo, también tendremos que 'traducir' las referencias a entidades, y ver si algún burro a escrito por ejemplo una referencia a entidad en el nombre de una etiqueta...
Este texto analizable es el que en XML se llama PCDATA.
Como hay casos en los que los sÍmbolos de etiqueta(<,>) y de referencias a entidad(&) son usados muy amenudo, a los listillos que inventaron el xml se les ocurrió una forma de que una porción de texto estuviera exenta de este analisis tan terrible. Es lo que en XML se llama CDATA.
Se trata de escribir en medio del contenido de un elemento una etiqueta especial que tiene esta forma:
<![CDATA[aqui podemos poner el texto que queramos, con las lineas que queramos]]>De esta forma, cuando estamos analizando un elemento xml y en un elemento encontramos <![CDATA[ dejamos de buscar los símbolos < y & porque sabemos que no forma parte de etiquetas ni referencias a entidad, y nos ponemos a buscar el final de la etiqueta ]]>.
- Texto CDATA en XML es un texto que no contiene etiquetas ni referencias a entidad ni elementos ni nada analizable desde el punto de vista de XML.(y si tiene algo parecido o igual a una etiqueta no lo interpretamos como tal).
- Texto PCDATA en XML es un texto que puede contener etiquetas XML, referencias a entidad, y cosas analizables desde el punto de vista de XML.
Pues con la etiqueta <![CDATA[aqui escribir el texto cdata]]>
¿Como podemos saber que un texto es CDATA en un elemento XML?
Pues ya sabemos una forma, es el texto encerrado en una etiqueta del tipo: <![CDATA[aqui escribir el texto cdata]]>
Tenemos por ejemplo este texto:
Escrito en el papel había unos códigos muy extraños que paso a describirlos:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<entrada>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
&&&&&><<<<>>>>>>>>><>>>salida &&&&&>z>Z""""""""""""bajo el sol"
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Esquimirifasf>>>>>>>>>>&&&&&&&&&&&&&&>>>>>>
Si alguien lo entiende, por favor que me lo diga.
Podemos escribir el texto como elemento xml con referencias a entidad así:
<texto>Escrito en el papel había unos códigos muy extraños que paso a describirlos:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<entrada>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
&&&&&><<<<>>>>>>>>><>>>salida &&&&&>z>Z""""""""""""bajo el sol"
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Esquimirifasf>>>>>>>>>>&&&&&&&&&&&&&&>>>>>>
Si alguien lo entiende, por favor que me lo diga.</texto>
Pero creo que estareis de acuerdo conmigo que queda mejor empleando una etiqueta CDATA de este modo:
<texto>Escrito en el papel había unos códigos muy extraños que paso a describirlos:
<![CDATA[<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<entrada>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
&&&&&><<<<>>>>>>>>><>>>salida &&&&&>z>Z""""""""""""bajo el sol"
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Esquimirifasf>>>>>>>>>>&&&&&&&&&&&&&&>>>>>>]]>
Si alguien lo entiende, por favor que me lo diga.</texto>
Aunque para ello tengamos que haber empleado la super etiqueta CDATA.
Atributos de etiquetas XML
Dijimos que una etiqueta es un nombre entre los simbolos "<" y ">" ahora vamos a ver que eso es mentira, en una etiqueta, a demas del nombre podemos poner atributos.
Un atributo tiene la forma : nombre="valor del atributo" , o bien con simples comillas nombre='valor del atributo'
La comilla simple permite tener dentro comillas dobles. Dentro del valor del atributo, podemos escribir referencias a entidad, pero no CDATA(creo).
Los atributos se escriben en la etiqueta de esta forma
<nombretiqueta nombreatributo="valor atributo" ....nombreatributo="valor atributo">
Los atributos se separan con espacios.
Pongamos atributos en forma de color tipo de letra y sangria a nuestra carta.
<cabecera tipo="normal" color="negro">Zaragoza.<fecha tipo="italica"> 3 de Diciempre de 1984</fecha></cabecera>
<saludo tipo="negrita">Queridos amigos.</saludo>
<cuerpo tipo="normal">
<parrafo sangria="francesa">Por la presente les invito a convertir esta carta
en un documento xml por lo que les animo a estar
atentos a las <negrita>indicaciones</negrita> para hacerlo lo mas
<negrita><subrayado>rápidamente</subrayado></negrita> posible.</parrafo>
<parrafo sangria="francesa">Puede que <subrayado>no</subrayado> lo consiga, pero al menos voy a
intentarlo por lo que voy a alargar esta carta
y que nos pueda servir de modelo.</parrafo>
</cuerpo>
<despedida><negrita>Su seguro servidor.</negrita></despedida>
<posdata tipo="italica"> P.D. Espero que sea de su agrado.</posdata>
Declaración XML.
Simplemente diremos que es una etiqueta que tiene esta forma:
<?xml version="1.0"?>Y también diremos que esta etiqueta puede tener atributos.
Como vamos a ver, esta etiqueta es obligatoria incluirla en un documento XML.
El documento XML
Despues de estas definiciones y en este momento, podemos definir lo que es un Documento XML.
Un documento XML es un documento de texto que consta de :
Elemento raiz de un documento xml: Es el elemento que contiene todos los elementos de un documento xml.
- Cabecera: que contiene una declaración XML.
- Cuerpo:que contiene un único Elemento XML.
De este modo si a nuestra carta la encerramos en un elemento que llamamos por ejemplo "carta" y añadimos una declaración xml, nuestra carta quedará en un perfecto formato XML.
<?xml version="1.0"?>
<carta>
<cabecera tipo="normal" color="negro">Zaragoza.<fecha tipo="italica"> 3 de Diciempre de 1984</fecha></cabecera>
<saludo tipo="negrita">Queridos amigos.</saludo>
<cuerpo tipo="normal">
<parrafo sangria="francesa">Por la presente les invito a convertir esta carta
en un documento xml por lo que les animo a estar
atentos a las <negrita>indicaciones</negrita> para hacerlo lo mas
<negrita><subrayado>rápidamente</subrayado></negrita> posible.</parrafo>
<parrafo sangria="francesa">Puede que <subrayado>no</subrayado> lo consiga, pero al menos voy a
intentarlo por lo que voy a alargar esta carta
y que nos pueda servir de modelo.</parrafo>
</cuerpo>
<despedida><negrita>Su seguro servidor.</negrita></despedida>
<posdata tipo="italica"> P.D. Espero que sea de su agrado.</posdata>
</carta>
Comentarios XML.
Los comentarios en XML son etiquetas de esta forma:
<!-- Esto es un comentario -->
En el texto del comentario, no podemos escribir ni & ni <, pero si que podemos poner referencias a entidad.
Como es lógico un comentario no puede contener toda ni parte de una etiqueta.
Los comentarios los podemos escribir en la cabecera y texto del documento xml.
Resumen:
Hemos definido :
- Etiqueta y cierre de etiqueta.
- Elemento.
- Referencias a Entidad
- PCDATA y CDATA.
- Atributos
- Declaración XML.
- Documento XML.
- Comentario XML.
Con tan pocos conceptos, se crea una herramienta bastante simple, pero bastante potente.
Aclaración: Los contenidos de las etiquetas pueden ser de lo mas pintoresco (vease la CDATA) y es en esto donde menos hemos aclarado en este documento.
Aqui puedes encontrar un validador de documentos xml para hacer pruebas.
Comentarios finales:
Salvo la sintaxis de las etiquetas, el resto de este manualillo es bastante correcto.
Nos hemos dejado por el camino el DTD que es una forma de validar el contenido del Documento XML y generar Entidades internas y externas.
No hay comentarios:
Publicar un comentario