XML
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
gramtica.
Un documento puede ser correcto a dos niveles bien formado y vlido.
DOCUMENTO BIEN FORMADO
Un documento bien formado cumple todas las reglas de creacin.
Todos los documentos XML deben de comenzar de la siguiente manera:
<?xml version=1.0 encoding=UTF-8?>
A continuacin del prlogo 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 prrafo</p>
Un documento bien formado tiene que contener un elemento raz nico y todos los elementos deben estar
estructurados jerrquicamente.
El primer carcter de las etiquetas pueden comenzar por ([A-Z] | [a-z] | [_]). El resto de los caracteres
pueden contener adems de lo anterior puntos . guiones - y nmeros [0-9]. Tambin se distingue entre
maysculas y minsculas.
Por otra parte tambin se permite estructurar las etiquetas de la siguiente manera, ambas formas son
vlidas.
<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 seccin CDATA permite utilizar los caracteres anteriormente descritos sin que el analizador de XML los
interprete.
<![CDATA[
...........
]]>
DOCUMENTO VLIDO
Para que un documento sea vlido, primero tiene que estar bien formado y ser vlido si cumple la
definicin completa del lenguaje que se est utilizando.
DEFINICIN DEL TIPO DE DOCUMENTO (DTD)
La misin del DTD es definir la estructura o gramtica de un documento XML. Permiten la validacin, 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 vlidos. 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)
Notacin (NOTATION).
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
lista_de_personas (persona*)>
persona (nombre, fechanacimiento?, sexo?, numeroseguridadsocial?)>
nombre (#PCDATA) >
fechanacimiento (#PCDATA) >
sexo (#PCDATA) >
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 ms 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 nmero de seguridad social (que puede o no puede aparecer).
Los dems elementos se componen de #PCDATA que representan una cadena de caracteres.
A continuacin se muestra un ejemplo del DTD creado anteriormente con su respectivo documento XML
bien formado.
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
lista_de_personas (persona*)>
persona (nombre, fechanacimiento?, sexo?, numeroseguridadsocial?)>
nombre (#PCDATA) >
fechanacimiento (#PCDATA) >
sexo (#PCDATA) >
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), Notacin (NOTATION) que no se suele emplear .
La declaracin de elemento define un elemento vlido en el documento XML y su contenido. El contenido
puede ser EMPTY (vaco), ANY (cualquier elemento es posible), #PCDATA (cadenas de caracteres).
La declaracin 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 enumeracin 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 vlidos para nombrar cosas como letras, nmeros, 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 notacin declarada.
Enumeracin: varios valores separados (yes | no)
La declaracin 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 declaracin de entidad asocia un nombre con un fragmento de contenido. Estas entidades pueden ser
internas o externas, analizadas o no analizadas, generales o paramtricas, carcter.
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 paramtricas 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 prlogo del documento.
Lo ms 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 raz 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 ms veces,
elementos <nombre>, <padre> y <madre>, en ese orden.
debe contener los
El elemento tem es vaco, 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 informacin 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
Prrafos
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