X M L QUÉ ES XML XML es un metalenguaje que permite crear otros lenguajes. Proporciona una serie de reglas para que podamos definir las etiquetas y sus atributos. El conjunto de reglas de un lenguaje se denomina gramática. Un documento puede ser correcto a dos niveles bien formado y válido. DOCUMENTO BIEN FORMADO Un documento bien formado cumple todas las reglas de creación. Todos los documentos XML deben de comenzar de la siguiente manera: <?xml version= 1.0 encoding= UTF-8?> A continuación del prólogo viene el cuerpo del documento que se compone de elementos. Un elemento está formado por una etiqueta de inicio (que puede llevar atributos con un valor), una etiqueta de cierre y el propio contenido. <p class= importante >Esto es el contenido de un párrafo</p> Un documento bien formado tiene que contener un elemento raíz único y todos los elementos deben estar estructurados jerárquicamente. El primer carácter de las etiquetas pueden comenzar por ([A-Z] [a-z] [ _ ]). El resto de los caracteres pueden contener además de lo anterior puntos. guiones - y números [0-9]. También se distingue entre mayúsculas y minúsculas. Por otra parte también se permite estructurar las etiquetas de la siguiente manera, ambas formas son válidas. <libro></libro> <libro />
Existen unos atributos reservados para las especificaciones de XML que comienzan por xml : - xml : lang (define el leguaje del documento) - xml : space : default preserve (define si los espacios en blanco son normales o se conservan) - xml : id (identificador único del elemento en todo el documento) Los comentarios se escriben de la siguiente forma: <!-- Esto es un comentario --> Ya que algunos caracteres son utilizados para definir los valores de los atributos, estos se pueden mostrar de la siguiente manera: Comilla simple : ' Comilla doble : " Ampersand & : & Signo menor < : < Signo mayor > : > Una sección CDATA permite utilizar los caracteres anteriormente descritos sin que el analizador de XML los interprete. <![CDATA[... ]]> DOCUMENTO VÁLIDO Para que un documento sea válido, primero tiene que estar bien formado y será válido si cumple la definición completa del lenguaje que se está utilizando. DEFINICIÓN DEL TIPO DE DOCUMENTO (DTD) La misión del DTD es definir la estructura o gramática de un documento XML. Permiten la validación, es decir, se pueden comprobar que sean correctos. Un DTD define los elementos que son permitidos en un documento XML, el contenido de dichos elementos, los atributos y sus valores válidos. Por último, el DTD indica la estructura, es decir, el orden en el que se pueden escribir los elementos en un documento XML.
Un DTD se compone de declaraciones. Existen cuatro tipos: Elemento (ELEMENT) Atributo (ATTLIST) Entidad (ENTITY) Notación (NOTATION). <!ELEMENT lista_de_personas (persona*)> <!ELEMENT persona (nombre, fechanacimiento?, sexo?, numeroseguridadsocial?)> <!ELEMENT nombre (#PCDATA) > <!ELEMENT fechanacimiento (#PCDATA) > <!ELEMENT sexo (#PCDATA) > <!ELEMENT numeroseguridadsocial (#PCDATA)> El DTD anterior se compone de seis elementos. - El elemento lista de personas se compone de elementos de tipo persona, el asterisco indica que puede haber cero o más personas. - Seguidamente, el elemento persona se compone de elementos de tipo nombre (que es obligatorio), fecha de nacimiento (que puede o no puede aparecer), sexo (que puede o no puede aparecer) y número de seguridad social (que puede o no puede aparecer). - Los demás elementos se componen de #PCDATA que representan una cadena de caracteres. A continuación se muestra un ejemplo del DTD creado anteriormente con su respectivo documento XML bien formado. <!ELEMENT lista_de_personas (persona*)> <!ELEMENT persona (nombre, fechanacimiento?, sexo?, numeroseguridadsocial?)> <!ELEMENT nombre (#PCDATA) > <!ELEMENT fechanacimiento (#PCDATA) > <!ELEMENT sexo (#PCDATA) > <!ELEMENT numeroseguridadsocial (#PCDATA)> <lista_de_personas> <persona> <nombre>eustaquio</nombre> <sexo>hombre</sexo> </persona> </lista_de_personas> Como se comenta anteriormente un DTD se compone de cuatro tipos de declaraciones, Elemento (ELEMENT), Atributo (ATT), Entidad (ENTITY), Notación (NOTATION) que no se suele emplear.
La declaración de elemento define un elemento válido en el documento XML y su contenido. El contenido puede ser EMPTY (vacío), ANY (cualquier elemento es posible), #PCDATA (cadenas de caracteres). La declaración de atributo define los posibles atributos que se pueden emplear con un elemento. Para cada atributo se define su nombre, su tipo de dato o una enumeración de sus posibles valores y su valor por defecto. El contenido o tipo de dato de un atributo puede tomar estos valores: - CDATA: cadena de caracteres. - NMTOKEN: acepta caracteres válidos para nombrar cosas como letras, números, puntos, guiones, subrayados, dos puntos y no acepta espacios en blanco. - NMTOKENS: es una lista de NMTOKEN separados por espacios en blanco. - ENTITY: indica que el valor del atributo debe ser el nombre de una entidad externa. - ENTITIES: es una lista de ENTITY separadas por espacios en blanco. - ID: indica un valor único en todo el documento. - IDREF: es una referencia a un ID. - IDREFS: es una lista de referencias ID (IDREF) separadas pos espacios en blanco. - NOTATION: indica que el valor del atributo se ajusta a una notación declarada. - Enumeración: varios valores separados (yes no) La declaración de un atributo siempre lleva un valor por defecto. - #REQUIRED: el atributo es obligatorio. - #IMPLIED: el atributo es opcional. - #FIXED valor : el atributo tiene un valor fijo que se indica entre comillas. - valor : o un valor por defecto que se indica entre comillas. <!ATTLIST img src CDATA #IMPLIED align (left center right) left size NMTOKEN #REQUIRED > El atributo src es de tipo CDATA (cadena de caracteres) y es opcional (#IMPLIED). El atributo align es un valor enumerado que puede tomar el valor left, center o right siendo el valor por defecto left. El atributo size es de tipo NMTOKEN y es obligatorio. <!ATTLIST img src CDATA #IMPLIED align (left center right) left size NMTOKEN #REQUIRED > En este otro ejemplo se definen tres atributos para el elemento alumno
La declaración de entidad asocia un nombre con un fragmento de contenido. Estas entidades pueden ser internas o externas, analizadas o no analizadas, generales o paramétricas, carácter. En el ejemplo siguiente hemos creado una entidad general interna y analizada, que contiene lo que se encuentra dentro de las comillas, en este caso valor. Estas entidades se pueden utilizar en el documento XML. <!ENTITY entidad valor > &entidad; En el ejemplo siguiente hemos creado una entidad general externa y analizada., por lo que esta entidad no se encuentra en el mismo DTD, sino en un documento externo que se indica con una url. <!ENTITY entidad SYSTEM fichero.xml > &entidad; Las entidades paramétricas son similares a las generales que son las anteriores. Se emplean con el signo porcentaje en lugar de ampersand y solamente pueden aparecer en el DTD. <!ENTITY % entidad contenido> &entidad; AGREGAR DTD A UN DOCUMENTO XML El DTD siempre tiene que estar ubicado antes del documento XML, es decir, en el prólogo del documento. Lo más normal es que sea un archivo externo, ya que así permite crear varios documentos con el mismo DTD. <?xml version= 1.0 encoding= UTF-8?>
XSLT XSLT permite convertir ficheros XML para que sean visualizados como un documento XHTML. Para ello es necesario crear una plantilla. Las plantillas se crean de la siguiente forma. <xsl:template match= / > //esto actuará sobre la raíz del documento. </xsl:template> Es necesario crear una plantilla por cada nodo XML que se quiera transformar. EJEMPLOS DE DOCUMENTOS XML CON SU DTD El elemento <escritor> debe contener los elementos <nombre> y <nacimiento>, en ese orden.
El elemento <rey> o <reina> que se puede repetir una o más veces, elementos <nombre>, <padre> y <madre>, en ese orden. debe contener los El elemento ítem es vacío, pero contiene dos atributos requeridos como son nombre y cantidad.
DTD sin atributos, solo con etiquetas:
DTD en la que los goles son atributos: DTD en la que toda la información se guarda en atributos:
EJEMPLOS DE xpath
EJEMPLOS DE XSLT Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada. Sin etiquetas
Párrafos
Lista
Tabla
Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada. Convertir las etiquetas en atributos
Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada. Convertir los atributos en etiquetas