Fundamentos de XML: Lenguaje de Marcas, DTD, XSL y XPath
Enviado por Comunidad Xuletas y clasificado en Plástica y Educación Artística
Escrito el en
español con un tamaño de 23,55 KB
Fundamentos de XML
XML: sin embargo, en XML los caracteres de texto pueden colocarse uno tras otro. Las hojas de estilo en cascada nos permiten cambiar el aspecto de los elementos que aparecen en un determinado documento y, gracias a las transformaciones XSL, podemos ir un paso más allá y modificar el mismo documento, incluso los elementos que aparecerán.
Lenguaje de marcas: nada más sencillo que un lenguaje en el que sus partes se diferencian entre sí mediante señales.
Archivos INI tienen 3 elementos:
- Comentarios: no se tienen en cuenta, como aclaraciones.
- Secciones: entre corchetes, el nombre de las mismas.
- Opciones de configuración: se xa 2 por un signo de igualdad; a su izquierda está el nombre de la opción y a su derecha el valor que toma.
HTML: las marcas están incluidas en lo más profundo del lenguaje. En HTML se utilizan marcas para indicar cómo se deben presentar los datos que quien está viendo la página, pudiendo definir tanto su ubicación como su aspecto.
XML: la primera es el prólogo, en el que se puede anunciar que se trata de un documento XML y que se ajusta a la versión específica de la norma. La segunda parte es el cuerpo del documento. El inicio del cuerpo lo determina la etiqueta y su final la etiqueta de cierre correspondiente. Dentro del cuerpo del documento se pueden encontrar tantas etiquetas de apertura y cierre como se desee, siempre que estén correctamente anidadas. Se trata de ser ordenado y seguir la lógica, algo beneficioso si se quiere utilizar XML de forma conjunta con un programa o clientes web en vez de bloc de notas. Tres ventajas:
- Resalte de sintaxis, expansión/contracción de elementos, validación del documento.
XHTML: se ha incluido todas las etiquetas de HTML, pero siguiendo las directrices de XML.
Objetivos de XML: se plantea como diez mandamientos muy interesantes:
- Directo a la red: lograr que el contenido de los documentos pueda ser transferido entre diferentes sistemas a través de Internet.
- Compatible con aplicaciones: XML debe poder utilizarse en la mayor cantidad posible de aplicaciones. XML no es una norma vinculada a la tecnología en concreto.
- Compatible con SGML: XML debe ser compatible con SGML. XML expresado en SGML, no al revés.
- Fácil digestión: si uno de los puntos fuertes de XML tenía que ser su compatibilidad con otras aplicaciones, era preciso que el análisis de los documentos en este formato fuese sencillo.
- Sin extras: si un analizador puede con un documento en este formato, podrá con todos los documentos.
- Alto y claro: los documentos XML deben ser legibles para el ser humano y razonablemente claros.
- Lo quiero para ayer: XML debe diseñarse rápidamente.
- Formalidad: el diseño de XML debe ser formal y conciso.
- Lápiz y papel: debe ser sencillo crear documentos XML.
- Lo importante es entenderse: abreviar marcas de XML carece de importancia y favorece la confusión.
Documentos bien formados: reglas sintácticas: mientras más estricto sea, más fácil será crear programas que sean capaces de leerlo de forma eficaz.
Partes de un documento XML
Puede presentar 3 partes diferentes:
- Prólogo: presentar el tipo del documento, (<?) y (?>). Es decir, se trata de una instrucción que contiene información sobre el documento.
- Cuerpo: se trataría de todo lo que está entre < y >, incluidas estas 2 etiquetas. Este elemento se conoce como la raíz del documento.
- Epílogo: puede estar compuesto de instrucciones de proceso como las del prólogo.
Las etiquetas nos permiten distinguir los diferentes elementos que componen el cuerpo del documento XML.
Etiquetas: las etiquetas están compuestas por un nombre y sus atributos; debe existir una de apertura y otra de cierre, y deben estar correctamente situadas.
Nombres: normas muy sencillas: deben estar delimitados por los símbolos < >. El nombre de la etiqueta debe comenzar con cualquier letra, _ o :. Las mayúsculas y las minúsculas son diferentes. Elementos vacíos: en este caso podemos optar por escribirlas de dos formas diferentes, completas y abreviadas: <etiqueta></etiqueta> o <etiqueta/>.
Comentarios: el contenido de estos datos puede ser de naturaleza muy diversa: desde el nombre del autor del documento, hasta una serie de datos relacionados con la fecha de creación del documento o recomendaciones sobre tareas que deberían llevarse a cabo en el futuro con él.
Nodo: está compuesto por una etiqueta, sus atributos y su contenido. El contenido es todo lo que está entre la etiqueta de apertura y la de cierre, lo que puede incluir a otros nodos. Si en el contenido de un nodo hay otros nodos, nos referimos a ellos como nodos descendientes.
Contenido: entre las etiquetas de apertura y cierre podemos escribir otras etiquetas, como ya sabemos, pero también podemos escribir texto independiente.
Espacios: en XML se utilizan 2 caracteres seguidos: retorno de carro y avance de línea, mientras que en Unix solo se utiliza el avance de línea. De esta forma se logra uniformidad: cualquier secuencia de espacios seguidos será considerada como un solo espacio por el analizador.
Ignorar partes del documento: las secciones CDATA se utilizan para indicarle al analizador que un determinado fragmento del documento XML no debe ser analizado. El caso más frecuente que suele presentarse es aquel en el que queremos incluir código fuente en algún lenguaje de programación.
Juegos de caracteres: una tabla o juego de caracteres es una lista de los caracteres que está permitido utilizar. Es posible que ya conozca la tabla de caracteres ASCII, utilizada en la mayoría de archivos de texto con los que trabajamos. XML no se utiliza la tabla ASCII, entenderá que está utilizando la tabla UTF-8 o UTF-16.
Herramientas
Existen 4 herramientas:
- Cliente web: en este caso el cliente web funciona como interfaz entre nosotros y el analizador, dejando oculto todo el trabajo que es necesario realizar.
- Comprobación vía web: se desarrolla bajo el auspicio del W3C. Ellos mismos nos ofrecen la posibilidad de enviarles un documento XML mediante una interfaz web, para que nos digan si está bien formado o no.
- Programas: entre otros, para Windows disponemos de XMLSpy, un potente editor con infinidad de funciones. El programa comprobará que el documento esté bien formado.
- Bibliotecas: de funciones o de clases que permiten realizar esta tarea a través de un lenguaje de programación. Dos grandes grupos: los que no necesitan de programación y los que sí.
Transformaciones XSL: los datos y la presentación
En las primeras fases del desarrollo de un sitio web o de la programación de aplicaciones, muchos se pierden en detalles relacionados con el aspecto, sin ni siquiera haber pensado cómo va a funcionar. Visual Basic o similares, estas herramientas nos permiten dibujar la interfaz de un usuario literalmente arrastrando sobre un formulario todos los botones, cuadros de texto, etc.
La primera transformación: vamos a realizar una transformación que nos convierta nuestro documento en una página HTML. XSL no es otra cosa que un documento XML que utiliza unas etiquetas en concreto.
Espacios de nombres: un espacio de nombres es un prefijo que sirve para diferenciar unas etiquetas de otras. Las etiquetas a las que se antepongan xsl: estarán en ese espacio. XML podría tener una etiqueta llamada template sin preocuparnos de que entre en conflicto con la que se utiliza en XSL, que esta última se escribiría xsl:template.
La transformación más sencilla: el resultado de aplicar esta transformación a un documento XML válido es un documento vacío. El primer elemento de toda transformación es el prólogo. El cuerpo del documento está compuesto por etiquetas cuyos nombres tienen elementos en común. El primer elemento del cuerpo del documento estamos indicando que el documento actual sirve para realizar una transformación XSL.
Selección de valores: sus nodos se distribuyen de forma jerárquica.
Raíz: de un documento XML es el nodo principal.
Estructura de control: si solo pudiésemos seleccionar los elementos uno a uno, las posibilidades de XSL serían muy limitadas. Deberíamos conocer de antemano cuántos elementos de cada clase están disponibles para la transformación. En cuanto añadiésemos un intérprete más al documento XML, necesitaríamos modificar la XSL.
Iteración: podemos simplificar el código de todos los intérpretes eliminando las repeticiones. Donde la expresión define los elementos por los que queremos iterar.
Condiciones simples: la condición es la que determina si esto se tendrá en cuenta o no.
Condición compuesta.
Formato: nos permite modificar el aspecto con el que se representan algunos valores.
Ordenación: en cuanto a la primera parte, mostrar primero el apellido y luego el nombre, solo tenemos que crear el bucle for each así:
Documentos válidos: validación
Páginas web de validación: este sistema de validación es uno de los más sencillos que podemos utilizar. Basta con acceder a una dirección como la siguiente: http://validator.w3.org/.
Programas: siempre podemos utilizar algún programa que sea capaz de comprobar si un documento es válido o no según su DTD. Puedes utilizar XMLSpy. Una vez tengamos un documento XML con su correspondiente DTD, podemos seleccionar la opción Validar del menú XML para validarlo.
Herramientas de programación: la más versátil de todas las formas disponibles para validar un documento XML.
Declaración de la DTD: está compuesta por lo que aparece entre la etiqueta <!DOCTYPE>. El nombre se corresponde con aquel que tenga la raíz del documento. Existen 2 tipos:
- DTD incrustada: la DTD dentro del propio documento XML. La definición debe formar parte del prólogo del mismo.
- DTD externa: si la DTD que vamos a utilizar va a ser compartida por muchos documentos XML, es preferible que se encuentre en un lugar común. La DTD puede ubicarse en un servidor web, de forma que cualquier persona con acceso a Internet pueda validar el documento que está creando.
DTD externa: para que la definición de tipos se encuentre en un archivo externo solo tenemos que dar 2 pasos. El primero de ellos consiste en crear un archivo para la DTD: el contenido de este archivo será el contenido del elemento DOCTYPE. El segundo paso: incluir una referencia a la DTD en el documento. En el prólogo del documento XML debemos colocar una instrucción de proceso que permita identificar con qué DTD se trabaja.
Partes de una DTD: es su declaración en el prólogo del documento XML.
Elementos: cada elemento está compuesto por un nombre y una regla. La DTD determina qué elemento debe contener a su vez otro elemento, y solo ese.
Reglas:
- ANY: si queremos ser totalmente permisivos con respecto al contenido que un determinado elemento pueda tener.
- EMPTY: esta regla obliga a que el elemento esté vacío, que no contenga ni otros elementos ni texto.
- #PCDATA: cuando un elemento debe cumplir esta regla, dicho elemento solo puede contener texto, entendiendo como texto cualquier secuencia de caracteres válida como contenido.
- Grupos: los elementos a los que se hace referencia en las reglas pueden ser agrupados de diferentes formas.
(): conjunto de elementos.(,): separador de elementos; el orden debe respetarse.|: separador de alternativas: uno u otro. - Cantidad: la interrogación añadida al nombre del elemento en la regla significa que se trata de un elemento totalmente opcional que puede aparecer o no.
*: ninguna, una o más de una.+: una o más de una.?: ninguna o una. - Entidades: cuando incluimos dentro de texto de un nodo una entidad, el analizador la sustituye por el valor con el que se corresponda. Todas las entidades están delimitadas por el ampersand (&) y el punto y coma (;), que deben aparecer entre estos 2 caracteres. Gracias a las entidades podemos realizar algunas operaciones que pueden sernos de gran utilidad como:
- Caracteres especiales: textos que se repiten. La misma técnica utilizada en la sección anterior podemos utilizarla para hacer nuestro trabajo un poco más sencillo, ahorrándonos texto que escribir.
- División modular: las entidades nos permiten mucho más que ahorrar tiempo de escritura. De forma similar a como definimos una entidad para un determinado carácter o una cadena de texto, podemos incluir el contenido de un documento XML dentro de otro.
CSS: uso de hojas de estilo
Se limitan a contener datos, nada sobre el aspecto que estos deben presentar. Aunque es posible incluir información CSS en el mismo documento XML, no es la opción que más le recomendamos, aunque está claro que dependiendo de los requisitos de su trabajo puede tratarse de la única opción razonable. Una de las ventajas de separar los datos de la presentación de los mismos está en que diferentes equipos se pueden encargar de cada tarea, sin interferir en su trabajo. En primer lugar, ambos equipos tendrían que trabajar con diferentes archivos. Los cambios de diseño introducidos deberían ser incluidos en los documentos XML. Serían necesario que ambos equipos se informasen continuamente de estos cambios.
Creación de hojas de estilo
Elementos: cada elemento dentro de una hoja de estilo sigue la sintaxis: elemento { atributo: valor; }. Entre las llaves debemos incluir una línea por cada atributo que queramos modificar.
Atributos de fuente: queremos acercarlo más grande, más pequeño, de un color o de otro, subrayado, en negrita, etc. Todo esto y más puede lograrse modificando los diferentes atributos de fuente para un determinado elemento. Lo más importante: font-family (tipo de letra que queremos utilizar), font-size (tamaño de fuente), font-style (estilo), font-weight (peso), text-decoration (subrayado, tachado).
Alineación: es posible modificar la posición en la que aparecen los elementos de muchas maneras diferentes. El atributo text-align nos permite modificar la alineación del elemento al que se hace referencia.
Bloques: como puede comprobar, los estilos se aplican al elemento y a sus hijos.
Margen y posición: también podemos controlar la alineación vertical mediante el atributo vertical-align. Atributos de posición: margin-left, margin-right, margin-top, margin-bottom, left, right, top, bottom, position.
Espacio anterior y posterior: tras su nombre debemos situar 2 puntos y la palabra before. De esta forma, si queremos situar algo antes del nombre del director, como por ejemplo la palabra "director", podríamos añadir la descripción de un nuevo estilo. De igual forma, si en lugar de escribir before tras los 2 puntos escribimos after, el elemento estará situado tras el elemento al que se hace referencia, cuyo nombre aparece antes de los 2 puntos.
Imágenes: es posible hacer algunas modificaciones muy vistosas al aspecto que representa el documento, como incluir imágenes.
XPath: XML de trabajo
Gracias a XPath vamos a conseguir averiguar cuál es una etiqueta determinada.
Nodos: existen diferentes clases de nodos:
- Raíz: el elemento principal del documento XML.
- Instrucciones de proceso: las directivas que permiten definir aspectos del documento, así como declararlo como documento XML.
- Elementos: los bloques sobre los que se apoya XML.
- Atributos: propiedades de los elementos.
- Texto: los valores incluidos en el interior de los elementos entre etiquetas de apertura y cierre.
- Comentarios: también podemos acceder al contenido de todos los comentarios.
Cada caja es un nodo. Fíjese en que disponemos de un nodo raíz del que todo parte: este nodo está representado por el carácter /. Acabamos de presentar la sintaxis de elementos utilizando en XPath la barra inclinada.
Consultas
- Listas de nodos: cuando intentamos obtener la lista de intérpretes de la película.
- Valores booleanos: cuando intentamos saber si el documento XML contiene alguno de los eslóganes utilizados para intentar vender la película.
- Cadenas: cuando intentamos obtener el nombre completo del director de la película.
- Números: cuando intentamos obtener el número de intérpretes de los que se tiene noticia.
- Rutas relativas o absolutas: la primera diferencia se encuentra en el valor del atributo
matchdel elementoxsl:template: en lugar de ser/, es/película. La segunda, el valor del atributoselectdel elementoxsl:value-ofno comienza desde el nodo raíz. En su lugar, aprovecha que estamos trabajando con el nodo película, así que todas las consultas pueden dar por incluida esa parte. Podemos llegar al eslogan mediante:- Una ruta absoluta:
/película/eslóganes/eslogan. - Una ruta alternativa:
eslóganes/eslogan/, a partir de/película.
- Una ruta absoluta:
- Nodo raíz: obtener el nodo raíz es el proceso más sencillo: solo tenemos que preguntar por la barra inclinada, operación que nos devolvería todo el documento XML.
- Instrucciones de proceso: podemos obtener las instrucciones de proceso asociadas a un determinado nodo utilizando XPath. En el de nuestro documento tenemos una la utilizada para indicar qué hoja de estilo se va a utilizar.
- Elementos: para seleccionar un determinado elemento solo es necesario indicar su ruta. El elemento más sencillo es el nodo raíz: solo necesitamos escribir
/para acceder a él. - Texto: la selección de un determinado elemento utilizando XPath devuelve el elemento completo, tanto las etiquetas de apertura y cierre como el texto que incluya además de los atributos. Se verá solo el texto utilizando
text(). - Comentarios: si quisiéramos obtener el valor de un determinado comentario, solo sería necesario utilizar
comment(). - Funciones: también podemos realizar operaciones a partir de ellos. XPath nos proporciona la función
count(), que recibe como parámetro el nombre del nodo cuyas repeticiones queremos contar.