El DTD puede formar parte del documento XML, pero lo
normal es que esté en un documento aparte, para que pueda
ser referenciado por los diferentes documentos XML que
utilizan ese DTD.
Cuando un documento XML que está bien formado sigue las
reglas definidas en un DTD (cuál es el DTD que utiliza un
documento XML está indicado en el propio documento), se
dice que el documento XML es «válido».
Existen multitud de aplicaciones en las que se usan los
DTDs. Por ejemplo, existen DTDs que se utilizan en el
campo del periodismo (NewsML, NITF), legales, en comer-
cio electrónico, para integrar herramientas informáticas, y
muchas otras, incluso en aplicaciones de biotecnología.
Los DTDs tienen algunas limitaciones. Por ejemplo, no es
posible definir que el texto encapsulado por una pareja de
etiquetas o el valor de un atributo sea un número. Esto puede
ser interesante en muchas ocasiones, por ejemplo para
definir una fecha, una cantidad, etc.
Otra limitación de los DTDs es en cuanto a lo que se puede
especificar respecto del contenido de un elemento. Por
ejemplo, en un DTD se puede especificar que un elemento
puede contener otro elemento 1 vez, 0 a 1 veces, 0 a varias
veces o 1 a varias veces, pero no es posible definir (al menos
fácilmente) que un elemento ha de contener entre 3 y 15
veces otro elemento.
Esta y otras limitaciones han hecho que se desarrolle un
nuevo estándar, XML
Schema
que permite definir como son
los documentos XML que se utilizan en una cierta aplica-
ción de una forma más precisa que los DTDs.
En ciertas situaciones, puede ser necesario utilizar elementos
definidos en varios DTDs. Por ejemplo, una tienda electrónica
puede utilizar un DTD para las órdenes de compra y otro para
el catálogo de productos. Puede ocurrir que se desee mantener
los dos DTDs separados por varias razones: uso de DTDs
estándar o para separar diferentes partes de la tienda electróni-
ca. Sin embargo, es posible que una orden de compra incluya
información definida en el DTD del catálogo: nombre y código
del producto, precio, etc.
A diferencia de HTML, las etiquetas de un documento XML
no dicen nada sobre cómo se debe de ver el documento en un
navegador, ya que han sido definidas por el usuario. Por lo
tanto, es necesario dotar a XML de mecanismos que permi-
tan definir como presentar un documento XML. Estos
mecanismos son las hojas de estilo XSL y CSS, presentadas
a continuación.
Por otra parte, el hecho de que en un documento XML no se
diga nada acerca de la presentación nos da gran flexibilidad
para decidir como presentarlo. Podemos hacer varias pre-
sentaciones diferentes de un mismo documento XML. Pode-
mos definir como queremos que se vea un documento XML
en diferentes plataformas (navegador Web, teléfono móvil,
papel). Podemos decidir que partes del documento quere-
mos presentar y que partes queremos ocultar.
El lenguaje extensible de hojas de estilo (
eXtensible Stylesheet
Language
, XSL) es una herramienta esencial a la hora de
manipular documentos XML. Por su simplicidad, es el
mecanismo preferido para manipular documentos XML por
personas no expertas en Informática.
XSL permite 1) definir cómo presentar un documento XML
y 2) convertir un documento XML en otro documento en
formato XML, HTML o texto plano (lo que permite conver-
tir a cualquier formato de presentación que se represente en
texto plano, como por ejemplo RTF o
PostScript
).
Ya hemos mencionado anteriormente que una de las venta-
jas de XML es que permite separar la semántica con que se
pretende enriquecer un cierto documento de cómo se presen-
ta el contenido del documento. El mecanismo utilizado de
forma prácticamente universal para describir como presen-
tar un documento XML son las hojas de estilo CSS (que se
presentan más adelante) y las XSL.
Utilizando hojas de estilo XSL es posible convertir un
documento XML a cualquier formato de presentación
(HTML,
PostScript
, PDF, WML para móviles, etc.), lo que
permite presentar un mismo documento XML en diferentes
plataformas: un ordenador con un navegador Web, una
versión imprimible, otra para teléfono móvil, otra para
televisión digital, etc. Naturalmente, es posible disponer de
un conjunto de hojas de estilo que generen versiones en
diferentes formatos de un mismo documento XML e incluso
disponer de varias hojas de estilo para un mismo formato
(por ejemplo para generar varias versiones en HTML del
mismo documento XML).
En muchas ocasiones es necesario realizar un cierto trata-
miento de documentos XML. Si este tratamiento no es
excesivamente complejo, es posible realizarlo utilizando
hojas de estilo XSL. Por ejemplo, imaginemos una tienda
electrónica que recibe de una editorial documentos XML
utilizando un cierto DTD propietario de la editorial que
describen los libros editados por la editorial. La tienda
electrónica a su vez utiliza su propio DTD para describir el
catálogo de productos (que incluye otros productos además
de libros) que ofrece a los clientes. Puede ser muy útil en este
contexto disponer de una hoja de estilo XSL que convierta
los documentos XML enviados por la editorial a otros
documentos XML que se ajusten al DTD utilizado por la
tienda electrónica.
En el campo que nos ocupa, el problema del vaciado se
podría resolver por medio de un atributo de nombre «vaciable»
y valores «si» o «no» que identifiquen las partes del texto
que hay que vaciar. Con una hoja de estilo XSL es posible
generar directamente el documento HTML, PDF, etc al que
se le han eliminado las partes que hay que vaciar.
XSL en realidad está formado por tres estándares:
- XPath: es una notación que permite hacer referencia a
parte de un documento XML, entendiendo que esto puede
querer decir que se hace referencia a varios trozos del
documento XML Por ejemplo, se puede hacer referencia en
XPath a todos los elementos de un documento XML cuya
etiqueta es <magistrado>.
- XSLT (
XSL Transformations):
es un lenguaje que permite
definir transformaciones para convertir un documento
XML en otro documento en formato XML, HTML o texto
plano. Los documentos XSLT son también documentos
XML. Hace uso de XPath.
- XSL-FO (
XSL Formatting Objects
): es una aplicación
XML cuya semántica define como presentar un documento