Está en la página 1de 6

Las instrucciones de procesamiento en XML

Las instrucciones de procesamiento pueden utilizarse para pasar informacin a


las aplicaciones de tal modo que burle la mayora de las reglas XML. Las
instrucciones de procesamiento no tienen que seguir una gran sintaxis interna,
pueden incluir caracteres de marcado sin tener que burlarlos, y pueden
aparecer en cualquier lugar del documento fuera de otro elemento de marcado.
Pueden aparecer en el prlogo, incluyendo la definicin de tipo de documento
(DTD), en el contenido textual o despus del documento. Los procesadores de
esquema o DTD no notan su presencia.
A continuacin se muestra la sintaxis de la instruccin de procesamiento de un
mapa de documentos.
<?xml-stylesheet type="text/xsl" href="show_book.xsl"?>
Las instrucciones de procesamiento deben comenzar por un identificador
llamado destino, que sigue reglas similares a las de los nombres de atributos y
elementos. Los destinos de las instrucciones de procesamiento distinguen
maysculas y minsculas y deben empezar por una letra o un carcter de
subrayado. El resto del destino puede contener letras, nmeros, guiones,
caracteres de subrayado, puntos y dos puntos. Despus del destino puede
aparecer cualquier carcter textual XML vlido.

El procesamiento de los contenidos finaliza justo despus de que se encuentre


la cadena ?>.
Instrucciones de procesamiento de hojas de estilos
De acuerdo con la recomendacin del W3C, Microsoft Internet Explorer
implementa una instruccin de procesamiento xml-stylesheet. Esta instruccin
de procesamiento debe aparecer en el prlogo, antes del documento o el
elemento raz. Pueden aparecer varias instrucciones de procesamiento, que
pueden ser tiles con las hojas de estilo en cascada, pero la mayora de los
navegadores utilizan la primera hoja de estilo admitida e ignoran el resto.
La sintaxis de una instruccin de procesamiento de hojas de estilos es la
siguiente:
<?xml-stylesheet type="type" href="uri" ?>
donde
type es text/css (para establecer el vnculo con un archivo de hojas de estilos
en cascada) o text/xsl (para establecer el vnculo con un archivo XSLT)

uri es el identificador de recursos uniforme (URI) de la hoja de estilos. Este


identificador URI est relacionado con la ubicacin del documento XML en s.
A continuacin se muestra una instruccin de procesamiento xmlstylesheet que identifica una hoja de estilo creada mediante una hoja de estilo
en cascada.
<?xml-stylesheet href="/style.css" type="text/css" title="default stylesheet"?>
A continuacin se muestra una instruccin de procesamiento xmlstylesheet que identifica una hoja de estilo creada mediante el lenguaje de
hojas de estilos extensible (XSL).
<?xml-stylesheet href="/style.xsl" type="text/xsl" title="default stylesheet"?>
La siguiente instruccin de procesamiento es legal, pero difcil de procesar por
las aplicaciones.
<?style oh, try /style.css ?>
Muchas instrucciones de procesamiento utilizan pseudoatributos, contenido
que se asemeja a los atributos y que las aplicaciones consideran ms fciles
de procesar. El ejemplo anterior puede obtenerse mediante la instruccin de
procesamiento xml-stylesheet de W3C:
<?xml-stylesheet href="/style.css" type="text/css" title="default stylesheet"?>
Puede utilizar las instrucciones de procesamiento del prlogo para especificar
otros procesamientos de documentos, pero debe escribir una aplicacin que las
admita.
Aunque en algunos casos no se aconseja el uso de instrucciones de
procesamiento, la flexibilidad de su estructura y su colocacin las hacen tiles
para enviar mensajes a una aplicacin sin interrumpir el flujo de informacin
XML.

Estructura de una DTD en XML


En relacin con la DTD de un documento surgen algunas consideraciones:
cmo comunicar a otros desarrolladores indicaciones sobre la estructura y el
vocabulario de nuestro documento Cmo establecer su organizacin interna,
los tipos de contenido que puede soportar cada elemento, los valores
permitidos de cada atributo? Necesitamos una manera comn de comunicar las
reglas que me he planteado y he seguido, de modo que cualquiera pueda
comprender e interpretar la estructura de mi documento conforme lea dichas
reglas. Paralelo muy malo pero til: una receta de cocina: en ella se estipulan
ingredientes, proporciones, orden y modo de combinarlos, posibilidades y

restricciones, etc., y se da por entendido que todo lo que no figure en esa


receta no forma parte del plato, a su vez, quien la lea podr hacerse una idea
bastante acertada sobre de qu plato se trata. Salvando las distancias, en XML
a esto se lo llama Definicin de Tipo de Documento o DTD.
Una DTD utiliza una gramtica formal para especificar la estructura y los
valores permitidos de un documento XML. Un documento bien-formado que
cuente con una DTD y cumpla con lo que en ella se estipula ser un
documento vlido. Todas las reglas sobre el vocabulario utilizado en el
documento y sobre la estructura del mismo estn contenidas en su DTD. Lo
que no este definido en su DTD, no es esperable, permitido ni vlido que est
en el documento. La DTD dictalo que hay y cmo se estructura lo que hay en
un documento.
DTD estructura formal.
Muchos programadores encuentran tedioso, por decir algo bonito, una vez
finalizada la tarea de programar, tener que documentar sus trabajos.
Documentar es una manera de explicar lo que se ha hecho, cmo se ha hecho
y cmo funciona, pensando en la posibilidad de que toque a otro programador
la tarea de continuar o modificar nuestro trabajo. Imaginen que una parte del
propio cdigo sirviera como documentacin legible no slo por personas sino
hasta por los procesadores, de modo que ellos pudieran detectar errores en el
documento slo con compararlo con las especificaciones/documentacin que le
hemos definido. Esta posibilidad implica que la escritura de esta
documentacin deber responder a una estructura formal definida capaz de ser
leda y entendida tanto por personas como por los procesadores. Esto es una
DTD y por ello una DTD tiene una estructura formal precisa. Alguien que lea
nuestra DTD entender cmo hemos trabajado la estructura del documento. Un
procesador que lea la DTD asociada a nuestro documento nos dir si ste es
vlido o no, es decir, si el documento se adapta a la documentacin/DTD y
viciversa o si, por el contrario, existen errores. Un documento sin DTD es
'autorreferencial', no se puede decir si es vlido o no pues no hay con qu
compararlo, slo podemos decir si es bien-formado pues conocemos la sintxis
XML.
Si un documento XML tiene asociada una DTD, el procesador debe leerla y
validar ese documento contra dicha DTD, es decir, chequear su sintxis, su
vocabulario, que los valores que aparezcan en l sean valores permitidos por
su DTD, etc, etc. Un procesador valida un documento a medida que lo le.
Cuando encuentra un error detiene el proceso y avisa que ha detectado un fallo
de validez.
Bsicamente un documento XML esta formado por elementos y sus
atributos. Una DTD debe ser capaz de definir todos los elementos de un
documento, los atributos de cada uno de los elementos, y la relacin entre los
elementos.
Vimos en el captulo anterior el modo de asociar una DTD a un documento
utilizando la Declaracin de Tipo de Documento DOCTYPE. Esta declaracin

debe estar despues de la Declaracin de XML y antes de la aparicin de


cualquier elemento del documento.
La Declaracin de Tipo de Documento DOCTYPE va seguida del nombre
del elemento documento (el elemento raz del documento) a continuacin del
cual deben aparecer las definiciones. El nombre apuntado en esta declaracin
debe ser el mismo que el del elemento documento, de otro modo, el
procesador dar un error. Vimos tambien que este conjunto de
declaraciones/definiciones de los elementos del documento puede
ser interno o externo dependiendo de que este conjunto se encuentre en el
cuerpo de esta declaracin o constituya un archivo externo .dtd.

La sintxis es en cada caso:


<!DOCTYPE
...definiciones...
]>

nombre_del_elemento_documento

para el caso de un conjunto interno, y...


<!DOCTYPE
nombre_del_elemento_documento
"identificador_de_sistema">

SYSTEM

<!DOCTYPE nombre_del_elemento_documento PUBLIC "identificador_publico"


"identificador_de_sistema">
Declaraciones de Marca.
Estructura formal de una DTD.
Los contenidos posibles de ser incluidos en un documento XML estn
definidos
en
trminos
de
cuatro
tipos
de
marca.
Estas
son: ELEMENT, ATTLIST, ENTITY yNOTATION.
Sobre las dos primeras algo ya hemos dicho, constituyen los sustantivos y
losadjetivos de un documento XML. Las entidades constituyen declaraciones
de contenidos reutilizables, ojo no confundir con las entidades referencia que
son slo un tipo dentro de las entidades en sentido general. Las notaciones
constituyen declaraciones de formato aplicables a contenidos externos que no
debern ser procesados por el parser y dirigidas a las aplicaciones encargadas
de manipular esos contenidos. Es decir, las notaciones manejan contenidos
que no son XML. Una notacin es utilizada para declarar un tipo de informacin
y asociarla a la aplicacin externa encargada de manipularla. Adems de estas
cuatro marcas existen muchos otros constructos que se utilizan en una DTD.
Iremos viendo algunos a lo largo de este captulo. Por razones didctica

definiremos primero los elementos, luego las entidades, las notaciones y por
ltimo los atributos.

Elementos.
El corazn y el alma de XML son los elementos. Los elementos se declaran
en la DTD utilizando la etiqueta general:
<!ELEMENT nombre_elemento ...especificaciones de contenido...>
Ya dijimos que los elementos se clasifican, segn el carcter de sus
contenidos, en cuatro tipos:
De tipo contenido de elemento: se denomina as a los elementos
que slotienen permitido contener a otros elementos o marcas como contenido.
De tipo contenido de caracter: un elemento que slo puede contener
'datos', cadenas de caracter.
De tipo mixto: se denomina de este modo a los elementos que pueden
contener tanto otros elementos como datos de caracter.
Elemento vaco: aquel que carece de todo tipo de contenido.
A esta clasificacin la podemos analizar ahora desde el punto de mira de
una DTD. Tenemos cuatro categoras de elementos: elemento (element), mixto
(mixed), vaco (empty) e indefinido (any); categoras que recogen los tipos que
vimos anteriormente. El tipo 'slo contenido', es decir, slo texto, es desde esta
perspectiva un subtipo de la categora mixto ya que pudiendo tener como
contenidos datos y elementos slo tiene datos. Todos los elementos, sean del
tipo que sean, pueden tener atributos asociados.
Un elemento que slo puede contener a otros elementos por contenido
(categora element) supone lo que definimos como elemento padre de otros
elementos hijos contenidos por l. Pero, cmo es posible que no contengan
texto? Retomemos un ejemplo anterior:
<ejemplo>
<pregunta xml:lang="es">Cmo lo llevas?</pregunta>
<pregunta xml:lang="en-GB">How you are?</pregunta>
<pregunta xml:lang="en-US">Hey men<signo>?</signo></pregunta>
</ejemplo>
Aqu el elemento ejemplo no contiene datos l mismo sino que contiene
elementos hijos que s son los que contienen los datos. A su vez, el ltimo de
los elementos <pregunta> contiene datos y a otro elemento, <signo>, lo cual lo
transforma en un elemento de contenido mixto.

Un elemento element presenta lo que se define como modelo de contenido,


una sintxis que nos permite especificar cmo y cules son los elementos que
se anidan. Un modelo de contenido es la especificacin de la estructura interna
del contenido de un elemento. Antes de meternos en esto, definamos los otros
dos tipos, empty y any; la categora mixed la veremos como un subtipo de la
element.
Un elemento vaco de define utilizando la palabra clave EMPTY como
especificacin de su contenido. Por ejemplo:
<!ELEMENT salto_de_linea EMPTY>
lo cual implica que ese elemento tendr la forma <salto_de_linea/> dentro
del documento.
Un elemento indefinido supone dejar la posibilidad abierta de que un
elemento contenga cualquier tipo de contenido, slo elemento, slo texto, o
ambos, sin que por ello viole la DTD. Se define utilizando la palabra clave ANY.
<!ELEMENT control ANY>