DTDs y XML Esquema

María Jesús Lamarca Lapuente. Hipertexto: El nuevo concepto de documento en la cultura de la imagen.

Inicio     navega al azar mapa conceptual  buscar

La necesidad de jerarquizar y estructurar correctamente la información, no sólo para almacenarla, sino también para acceder a ella, se ha convertido en una labor que ha cobrado especial relevancia en los últimos años, en los que se han producido importantes avances en este campo.

Inicialmente se usaron las Definiciones del Tipo de Documento (DTDs) en el lenguaje SGML para describir el vocabulario necesario para identificar todos los elementos de que iba a constar el documento y para expresar la estructura. La aparición y el desarrollo del lenguaje XML, hizo que este lenguaje incorporara también las DTDs, no en vano, hay que recordar que el lenguaje XML no es sino un subconjunto del lenguaje SGML.

Pero las DTDs no satisficieron todas las necesidades inherentes a XML y pronto se vio necesario utilizar otros métodos más rigurosos y sofisticados para tratar la estructura y la semántica dentro de un documento XML. Así surgieron los Esquemas XML (XML Schema), como una forma de ampliación y mejora de las primitivas DTDs. Las DTDs y los Schemas son usados por los analizadores sintácticos o parsers para comprobar si un documento XML es válido.

Así pues, vemos que para proceder a la estructuración o especificación formal dentro de un documento XML existen distintas soluciones, entre las que cabe destacar principalmente dos: las DTDs y los XML Schemas. Pero veamos con más profundidad las diferencias entre la utilización de DTDs y Esquemas.

La Declaración de Tipo de Documento (DTD-Document Type Data):

Al definir el lenguaje XML ya nos referimos a la Definición del Tipo de Documento (Document Type Definition DTD) que, en resumen, cumple las siguientes funciones:

  •  Una DTD especifica la clase de documento
    •  Describe un formato de datos
    •  Usa un formato común de datos entre aplicaciones
    •  Verifica los datos al intercambiarlos
    •  Verifica un mismo conjunto de datos
  •  Una DTD describe
    • Elementos: cuáles son las etiquetas permitidas y cuál es el contenido de cada etiqueta
    • Estructura: en qué orden van las etiquetas en el documento
    • Anidamiento: qué etiquetas van dentro de cuáles

Los elementos de una DTD son los siguientes:

  •  Elementos con “contenido ELEMENT”:
    •  Un elemento tiene contenido ELEMENT, si solo puede contener a otros elementos, opcionalmente separados por espacios en blanco.
  •  Elementos con “contenido TEXT”
    •  Un elemento tiene contenido TEXT, si solo puede contener texto
    •  (PCDATA = printable character data)
  •  Elementos con “contenido MIXED”
    •  Un elemento tiene contenido MIXED, si puede contener texto u otros elementos
  •  Elementos con “contenido EMPTY”
    •  Un elemento tiene contenido EMPTY, si no puede contener otros elementos

Y los atributos son los siguientes:

  •  CDATA: texto
  •  NMTOKEN: “abc...z0123..9-_:.” (tipo de lista)
  •  NMTOKENS: NMTOKEN + espacios
  •  ID: empezar con letra
  •  IDREF: ser un ID

Así pues, la DTD especifica la clase de documento XML. Una DTD indica sólo qué elementos, atributos, etc; tiene un documento y cómo se anidan, pero no dice nada acerca de tipos de dato. El único tipo de dato que conoce es CDATA (texto plano), por tanto, las DTDs se quedan algo cortas y cuando se necesita algo más potente y rígido, se usa Schema

Recordemos que una DTD se puede guardar en un archivo de texto, como por ejemplo, en el archivo "list.dtd". Una DTD muy simple es la siguiente:

<!ELEMENT List (Item)+>
<!ELEMENT Item (#PCDATA)>
<!ATTLIST Item
  id CDATA IMPLIED
  color CDATA IMPLIED>
<!ELEMENT Separator EMPTY>

Veamos ahora el  documento .xml que hace referencia a esa DTD:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE list SYSTEM "list.dtd">
<List>
 <Item>París</Item>
 <Item>Madrid</Item>
 <Separator />
 <Item color="rojo">Londres</Item>
</List>

XML Schema:

Al igual que las DTDs, los Schemas describen el contenido y la estructura de la información, pero de una forma más precisa. Los esquemas indican tipos de dato, número mínimo y máximo de ocurrencias y otras características más específicas.

Según la Especificación del W3C XML Schema (http://www.w3.org/XML/Schema), los esquemas expresan vocabularios compartidos que permiten a las máquinas extraer las reglas hechas por las personas. Los esquemas proveen un significado para definir la estructura, contenido y semántica de los documentos XML.

Un esquema XML (XML schema) es algo similar a un DTD, es decir, define qué elementos puede contener un documento XML, cómo están organizados, y qué atributos y de qué tipo pueden tener sus elementos, pero la utilización de schemas ofrece nuevas posibilidades en el tratamiento de los documentos.

La ventaja de utilizar los schemas con respecto a los DTDs son:

  •  Usan sintaxis de XML, al contrario que los DTDs.
  •  Permiten especificar los tipos de datos.
  •  Son extensibles (esto es, permite crear nuevos elementos).

Por ejemplo, un schema nos permite definir el tipo del contenido de un elemento o de un atributo, y especificar si debe ser un número entero, una cadena de texto, una fecha, etc. Las DTDs no nos permiten hacer estas cosas.

Veamos un ejemplo de un documento XML, y su schema correspondiente:

<documento xmlns="x-schema:personaSchema.xml">
<persona id="fulanito">
<nombre>Fulano Menganez</nombre>
</persona>
</documento>

Como podemos ver en el documento XML anterior, se hace referencia a un espacio de nombres (namespace) llamado "x-schema:personaSchema.xml". Es decir, le estamos diciendo al analizador sintáctico XML (parser) que valide el documento contra el schema "personaSchema.xml".

El schema sería algo parecido a esto:

<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<AttributeType name='id' dt:type='string' required='yes'/>
<ElementType name='nombre' content='textOnly'/>
<ElementType name='persona' content='mixed'>
<attrubyte type='id'/>
<element type='nombre'/>
</ElementType>
<ElementType name='documento' content='eltOnly'>
<element type='persona'/>
</ElementType>
</Schema>

El primer elemento del schema define dos espacios de nombre. El primero "xml-data" le dice al analizador (parser) que esto es un schema y no otro documento XML cualquiera. El segundo "datatypes" nos permite definir el tipo de elementos y atributos utilizando el prefijo "dt".

  •  ElementType: Define el tipo y contenido de un elemento, incluyendo los sub-elementos que pueda contener.

  •  AttributeType: Asigna un tipo y condiciones a un atributo.

  •  attribute: Declara que un atributo previamente definido por AttributeType puede aparecer como atributo de un elemento determinado.

  •  element: Declara que un elemento previamente definido por ElementType puede aparecer como contenido de otro elemento.

Así pues, es necesario empezar el schema definiendo los elementos más profundamente anidados dentro de la estructura jerárquica de elementos del documento XML. Es decir, tenemos que trabajar "desde dentro hacia fuera", o lo que es lo mismo, las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones de contenido element y attribute correspondientes.

Un esquema también puede verse como una colección (vocabulario) de definiciones de tipos y declaraciones de elementos cuyos nombres pertenecen a un determinado espacio de nombres llamado espacio de nombres de destino. Los espacios de nombres de destino hacen posible la distinción entre definiciones y declaraciones de diferentes vocabularios. Por ejemplo, los espacios de nombres de destino facilitarían la declaración del elemento element en el vocabulario del Esquema XML, y la declaración de element en un hipotético vocabulario de lenguaje químico. El primero es parte de espacio de nombres de destino http://www.w3.org/2001/XMLSchema, y el segundo es parte de otro espacio de nombres de destino.

Además, a medida que los esquemas se hacen más grandes, es posible y deseable dividir su contenido entre varios documentos esquema con el fin de facilitar su mantenimiento, control de acceso, y legibilidad.

Las Recomendaciones establecidas por el W3C en relación a los esquemas XML son las siguientes:

  •  XML Schema Part 0: Primer. Es un documento no normativo que pretende ofrecer una fácil descripción de las funcionalidades de XML Schema y que está orientado a comprender de forma rápida cómo crear esquemas utilizando el lenguaje XML Schema. http://www.w3.org/TR/xmlschema-0/

  •  XML Schema Part 1: Structures. Especifica la definición del lenguaje XML Schema y ofrece las herramientas para describir la estructura y constreñir el contenido de los documentos de XML 1.0, incluyendo las que tratan los espacios de nombre (XML Namespace). El lenguaje de esquemas que se representa en XML usa espacios de nombre, reconstruye sustancialmente y extiende las capacidades de las DTDs de los documentos del lenguaje XML 1.0. http://www.w3.org/TR/xmlschema-1/

  •  XML Schema Part 2: Datatypes. Establece las herramientas para definir los tipos de datos que se usan en los esquemas XML y en otras especificaciones XML. El lenguaje de tipo de datos que se representa en XML 1.0, ofrece un conjunto de capacidades que se encontraban en las DTDs en XML 1.0 para especificar tipos de datos sobre elementos y atributos.  http://www.w3.org/TR/xmlschema-2/

DTD versus Schema

Las limitaciones de la DTD son las siguientes:

  •  Posee un lenguaje propio de escritura lo que ocasiona problemas a la hora del aprendizaje, pues no sólo hay que aprender XML, sino también conocer el lenguaje de las DTDs.

  •  Para el procesado del documento, las herramientas y analizadores (parsers) empleados para tratar los documentos XML deben ser capaces de procesar también las DTDs . 

  •  No permite el uso de namespaces y estos son muy útiles ya que permiten definir elementos con igual nombre dentro del mismo contexto, siempre y cuando se anteponga un prefijo al nombre del elemento. 

  •  Tiene una tipología para los datos del documento extremadamente limitada, pues no permite definir el que un elemento pueda ser de un tipo número, fecha, etc. sino que sólo presenta variaciones limitadas sobre cadenas. 

  •  El mecanismo de extensión es complejo y frágil ya que está basado en sustituciones sobre cadenas y no hace explicitas las relaciones, es decir, que dos elemento que tienen definido el mismo modelo de contenido no presentan ninguna relación. 

Estos problemas son superados gracias a la especificación de XML Schema, ya que los esquemas permiten un lenguaje mucho más expresivo y un intercambio de información mucho más robusto. Pero, aparte de solventar los problemas antes expuestos, XML Schema, permite una serie de ventajas adicionales:

  •  XML Schema presenta una estructura de tipos mucho más rica. En la segunda parte de la especificación de XML Schema (XML Schema Part 2: Datatypes) se definen los tipos base que se pueden emplear dentro de esquema de XML, como ejemplo podemos destacar: byte, integer, bolean, string, date, sequence, etc. Este sistema de tipos es muy adecuado para importar y exportar sistemas de bases de datos y, sobre todo, distingue los requerimientos relacionados con la representación léxica de los datos y el conjunto de información dominante y subyacente.

  •  Permite tipos definidos por el usuario, llamados Arquetipos. Dando un nombre a estos arquetipos, se pueden usar en distintas partes dentro del Schema. 

  •  Es posible agrupar atributos, haciendo más comprensible el uso de un grupo de aspectos de varios elementos distintos, pero con un denominador común, que deben ir juntos en cada uno de estos elementos. 

  •  Es posible trabajar con espacios de nombre, según la Especificación XML Schema Part 0: Primer, permitiendo validar documentos con varios namespaces. 

  •  Con XML Schema es posible extender Arquetipos de un modo específico, es decir permite lo que en términos de orientación a objetos se llama herencia. Considérese un esquema que extiende otro previamente hecho, se permite refinar la especificación de algún tipo de elemento para, por ejemplo, indicar que puede contener algún nuevo elemento del tipo que sea; pero dejando el resto del esquema antiguo completamente intacto. 

En la siguiente imagen podemos comprobar la gran riqueza de los tipos de datos y la estructuración jerárquica que ofrece XML Schema:

tipos de datos xml schema

Fuente: W3C. XML Schema Part 2: Datatypes Second Edition. http://www.w3.org/TR/xmlschema-2/

De las DTDs a XML Schema

Como hemos afirmado anteriormente, en los inicios de XML se emplearon las DTDs como modo de especificación de modelos, pero en la actualidad su uso ha quedado algo restringido y lo normal es utilizar el de XML Schema.

En la siguiente tabla se puede ver la correlación entre elementos de XML Schema y de DTDs, aunque existen herramientas de traducción (DTD2HTML en Perl http://www.w3.org/2000/04/schema_hack/), XMLSpy http://www.xmlspy.com) entre estos 2 lenguajes.

DTD

XML Schema

Comentarios

 ELEMENT  <element>  Crea un vínculo entre un nombre y unos atributos, modelos de contenido y anotaciones
 #PCDATA  Soportado como parte de un tipo simple
 ANY  <any> Posee distintos comodines para un mayor conjunto de posibilidades. Existe también <anyAttribute> con comodines similares.
 EMPTY  Soportado Se elimina la existencia de elementos descendientes del actual, diferenciando de la presencia de un string vacío en un elemento.
 Modelo de Contenido <complexType>
 , (Conector de secuencia)  <sequence>  
 | (Conector de alternativas)  <disjunction>  
 ? (Opcional)   Soportado  Se han de emplear los atributos predefinidos de maxOccurs y minOccurs
+(Requerido y Repetible)  Soportado  Se han de emplear los atributos predefinidos de maxOccurs y minOccurs
 *(Opcional y Repetible)  Soportado  Se han de emplear los atributos predefinidos de maxOccurs y minOccurs
 ATTLIST  <attributeGroup>  Se pueden agrupar declaraciones de <attributes>
 Tipo de atributo CDATA, ID, IDREF, NOTATION...  Tipos <simpleType>predefinidos
 ENTITY  NO Soportado  Las entidades son declaradas en declaraciones de marcas en el XML 
 ENTITY%Parameter  NO Soportada  Las entidades paramétricas ofrecen un mecanismo de bajo nivel que permite distintas cosas, algunas de estas se han intentado cubrir en XML Schema: 
  • .. La separación entre <element> y <complexType> 
  • .. Grupos de atributos 
  • .. Grupos de modelos con nombre 
  • .. Mecanismos de extensión y restricción de tipos 
  • .. Los mecanismos de <import> e <include> para componer esquemas 
  • .. El mecanismo de redefinición de elementos 

En resumen, para modelar y validar la información existen muchas maneras de hacerlo, entre las que destacan el uso de DTDs y de XML Schema, entre otras. La utilización de XML Schema se ve favorecida por la facilidad de tratamiento que se deriva de la escritura en XML, en lugar de emplear otros parsers para su reconocimiento, y también porque el estándar está muy extendido.

Otra gran ventaja es que gracias a XML Schema se pueden expresar un gran número de tipos de datos y jerarquizarlos. También es posible expresar la carga semántica y esto es muy importante para el tratamiento de la información. Si gracias a XML se han podido realizar intercambios de información entre aplicaciones de muy distinta índole, mediante XML Schema se ha podido validar y estructurar su contenido. Los esquemas XML avanzan un paso más en la consecución de la Web Semántica.

Existen numerosos esquemas, muchos de ellos utilizan el lenguaje RDF escrito en XML, es decir RDF Schema.

Por ejemplo, FOAF: el proyecto "Friend Of A Friend" (amigo de un amigo) http://www.foaf-project.org/ es una aplicación de XML y RDF. Básicamente es un archivo XML (en realidad, RDF escrito en XML) con el cual se describen personas, documentos, etc.

FOAF se basa en la idea de que cuando hablamos de describir a una persona, no estamos hablando de sus atributos físicos, sino de datos más profundos como: a quién conoce, de quién es amigo y de quién no, cuáles son sus proyectos actuales y cuáles los pasados, etc. Todo, o casi todo, puede ser definido en un archivo FOAF.

Leandro Mariano López explica de forma sencilla en FOAF: el proyecto 'friend to friend'  en qué consiste este vocabulario. "Existen en el mundo cientos de miles de personas que comparten los mismos atributos, como el nombre, color de ojos, pelo, altura, intereses, etc. Sabiendo esto, ¿cómo podemos llegar a distinguir de quién estamos hablando? ¿Cómo identificar de un modo unívoco a alguien? Como FOAF es un proyecto basado en Internet, los desarrolladores buscaron algún atributo propio de los usuarios de Internet, y lo encontraron: el e-mail". FOAF se expresa como un RDF Schema para expresar el hecho de que un foaf:mbox únicamente se refiere a un individuo. FOAF:mbox es una propiedad inambigua (UnambiguousProperty).

De esta forma, el correo electrónico personal se convierte en una propiedad no ambigua acerca de una persona, ya que puede convertirse en identificador único de alguien.

Otro ejemplo de este tipo de esquemas es el elaborado por Leandro Mariano López: Esquema Habla, Lee y Escribe  http://purl.org/net/inkel/rdf/schemas/lang/index.html que permite identificar qué idiomas puede hablar, leer o escribir una persona. El esquema se encuentra localizado en http://purl.org/net/inkel/rdf/schemas/lang/1.1 Un ejemplo de implementación puede encontrarse en el archivo FOAF, en http://purl.org/net/inkel/inkel.foaf.rdf

Leandro Mariano López expresa de estas forma la propiedades definidas por este esquema:

Declaración espacio de nombres: xmlns:lang="http://purl.org/net/inkel/rdf/schemas/lang/1.1#"

lang:speaks

Indica que la Persona puede hablar en este lenguaje

lang:reads

Indica que la Persona puede leer este lenguaje

lang:writes

Indica que la Persona puede escribir en este lenguaje

lang:masters

Indica que la Persona puede hablar, leer y escribir en este lenguaje

Se puede crear un perfil FOAF desde http://my.opera.com/community/sparql/. Además, se ofrece una interfaz que permite hacer  búsquedas en toda la información pública.

Similar a FOAF es XFN (XHTML Friends Network) http://gmpg.org/xfn/ una manera muy simple para representar las relaciones humanas usando hiperenlaces. Se utiliza mucho en la blogosfera. XFN hace posible que los autores web indiquen sus relaciones simplemente con añadir el atributo rel a sus etiquetas <a href> 

Ejemplo:

<a href="http://jane-blog.example.org/" rel="sweetheart date met">Jane</a>
<a href="http://dave-blog.example.org/" rel="friend met">Dave</a>
<a href="http://darryl-blog.example.org/" rel="friend met">Darryl</a>
<a href="http://www.metafilter.com/">MetaFilter</a>
<a href="http://james-blog.example.com/" rel="met">James Expert</a>

También existe otra iniciativa llamada DOAP (Description of a Project) http://usefulinc.com/doap/. Se trata de un vocabulario XML/RDF para describir proyectos de software libre que usa la URL del proyecto como clave primaria. Con DOAP se pueden hacer descripciones semánticas del proyecto, describir los recursos asociados, los participantes y los recursos web. Para ello se utilizan algunas características ya empleadas en RSS, FOAF o Dublin Core. DOAP puede interoperar con todos estos esquemas de metadatos y puede ser extendido para propósitos específicos.

Por su parte, Charles McCathieNevile en El código EARL por ejemplos: http://www.w3.org/2001/sw/Europe/talks/200311-earl/all.es nos ofrece un vocabulario para describir si algo cumple con determinados requisitos. Por ejemplo, si una página es accesible o cumple con determinadas pautas de accesibilidad (WCAG).


Bibliografía

Advanced Quality Solutions. XML Schema y DTDs. http://www.programacion.com/tutorial/schemaydtd/

CASTILLO, Carlos.  DTD y Schemas. Tejedores del Web. http://www.tejedoresdelweb.com/307/article-2147.html

FLYN, Peter (ed.) The XML Facq. http://www.ucc.ie/xml/

MARIANO LÓPEZ, Leandro. FOAF: el proyecto 'amigo de un amigo'. http://purl.org/net/inkel/2003/01/27/foaf.html [Volver]

Useful Information Company. DOAP: Description of a project. http://usefulinc.com/doap/

The FOAF Project. http://www.foaf-project.org/

XFN. XHTML Friends Network. http://gmpg.org/xfn/

W3C.Extensible Markup Language XML W3C Recommendation. http://www.w3.org/TR/REC-xml/

W3C. The Extensible Stylesheet Language Family (XSL). http://www.w3.org/Style/XSL/

W3C. What is XSL? http://www.w3.org/Style/XSL/WhatIsXSL.html

W3C. XML in 10 points. http://www.w3.org/XML/1999/XML-in-10-points.html (traducción al castellano por Enmanuelle Gutiérrez y Restrepo: http://www.sidar.org/recur/desdi/traduc/es/xml/xml10p/xml10p.htm)

W3C. XML Schema. http://www.w3.org/XML/Schema

W3C. XML Schema Part 0: Primer. Second Edition. http://www.w3.org/TR/xmlschema-0/ (traducción al castellano: ALONSO, José Manuel. Esquema XML Parte 0: Fundamentos. http://www.w3c.es/Traducciones/es/TR/2001/REC-xmlschema-0-20010502/)

W3C. XML Schema Part 1: Structures. Second Edition. http://www.w3.org/TR/xmlschema-1/

W3C. XML Schema Part 2: Datatypes. http://www.w3.org/TR/xmlschema-2/

W3C. XML Schema Requirements. http://www.w3.org/TR/NOTE-xml-schema-req

XML Cover Pages.  XML Schemas. http://xml.coverpages.org/schemas.html


 

 Título: Hipertexto, el nuevo concepto de documento en la cultura de la imagen
 Autora: María Jesús Lamarca Lapuente (currículo personal)

 Contacta

 Tesis doctoral. Universidad Complutense de Madrid

 URL: http://www.hipertexto.info

 Fecha de Actualización: 08/12/2013   

 184 páginas web. 2.627 archivos. 2.208 imágenes. Tamaño: 52.406Kb.
 34.389 enlaces (10.436 externos y 23.953 internos)
  

Esta obra está licenciada bajo las siguientes condiciones: 
Creative Commons License
Creative Commons Reconocimiento-NoComercial-NoDerivados-Licencia España 2.5.

 


OTRAS PÁGINAS DE LA AUTORA
 

           Blog El Cultural a la PuertaBlog El Cultural a la Puerta:: http://puertadetoledo.blogspot.com/ 

                                                                                                                AGETECA. Base de Datos de Gestión Cultural
                                                                                                                 Ageteca. Base de Datos de Gestión Cultural:
      
                                                                                                    http://www.agetec.org/ageteca

Fundación Ricardo Lamarca, ajedrez y cultura

Fundación Ricardo Lamarca, Ajedrez y cultura http://www.fundacionlamarca.es

 

 

La artesa digital

Blog La artesa digital
http://artesadigital.blogspot.com.es

Especial Poesía: Hasta allí hemos llegado

Blog La artesa digital Flickr La artes@ digital: Galería de fotos mundo
 digital y mundo analógico: http://www.flickr.com/photos/artesadigital/

Blog miembras

Blog Miembras: usos lingüísticos, políticos y sociales del lenguajeBlog Miembras: Usos lingüísticos, políticos
 y sociales del lenguaje http://miembras.blogspot.com

 

Mapa de navegación / Tabla de contenido / Mapa conceptual / Tabla de documentos / Buscador / Bibliografía utilizada / Glosario de Términos / Índice Temático / Índice de Autores