2. Definición
Un lenguaje de marcado o lenguaje de marcas es una forma de codificar un documento que, junto con el
texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del
texto o su presentación.
Los lenguajes de marcado suelen confundirse con lenguajes de programación. Sin embargo, no son lo
mismo, ya que el lenguaje de marcado no tiene funciones aritméticas o variables, como poseen los
lenguajes de programación.
3. Origen y funcionalidad
❖ GML, el primer lenguaje de marcado, nació en IBM para facilitar la gestión de grandes cantidades
de documentos.
❖ Una de las claves de su éxito fue desprenderse del formato para centrarse en el contenido aunque
era demasiado complejo y no se extendió demasiado.
❖ Posteriormente la ISO lo simplificó y estandarizó, obteniendo el SGML.
❖ El SGML especifica la sintaxis para la inclusión de marcas en los textos, así como la sintaxis del
documento que especifica qué etiquetas están permitidas y donde: el Document Type Definition o
schema. Esto permitía que un autor emplease cualquier marca que quisiera, eligiendo nombres para
las etiquetas que tuvieran sentido tanto por el tema del documento como por el idioma. Así, el
SGML es un metalenguaje del que se derivan varios lenguajes especializados.
4. Ejemplos
GML
:h1.Chapter 1: Introduction
:p.GML supported hierarchical containers, such as
:ol.
:li.Ordered lists (like this one),
:li.Unordered lists, and
:li.Definition lists
:eol.
as well as simple structures.
:p.Markup minimization (later generalized and
formalized in SGML), allowed the end-tags to be
omitted for the "h1" and "p" elements.
SGML
<titulo>HIPERTEXTO</titulo>
<autor> MARIA JESUS LAMARCA </autor>
<contenido>
<capitulo>
<subtitulo><EL NUEVO CONCEPTO DE DOCUMENTO EN LA
CULTURA DE LA IMAGEN</subtitulo>
<parrafo> Doctorado: Fundamentos, Metodología y
Aplicaciones de las Tecnologías Documentales y
Procesamiento de la Información. </parrafo>
</capitulo>
</contenido>
7. Clasificación de los lenguajes de marcas
1. Marcado de presentación (p.ej. RTF)
2. Marcado de procedimientos (p.ej.
LaTex)
3. Marcado descriptivo (p.ej. XML)
8. Lenguajes de
marcas de
presentación
❖ Indica el formato del texto.
❖ Útil para maquetar la
presentación de un documento
para su lectura, pero resulta
insuficiente para el
procesamiento automático de
la información.
❖ Fácil de elaborar, sobre todo
para cantidades pequeñas de
información pero complicado
de mantener o modificar.
❖ Un ejemplo de marcado de
presentación, puede ser RTF.
9. Lenguajes de
marcas de
procedimientos
❖ Enfocado hacia la presentación del
texto, sin embargo, las etiquetas
también son visibles para el usuario
que edita el texto.
❖ El programa que representa el
documento debe interpretar el
código en el mismo orden en que
aparece.
❖ Algunos ejemplos de marcado de
procedimientos son nroff, troff, TeX.
❖ Este tipo de marcado se ha usado
extensivamente en aplicaciones de
edición profesional, manipulados
por tipógrafos calificados, ya que
puede llegar a ser extremadamente
complejo.
10. Lenguajes de
marcas
descriptivos
❖ Utiliza etiquetas para describir los fragmentos de
texto, pero sin especificar formato ni orden.
❖ La información del formato está separada del
propio contenido.
❖ Los lenguajes expresamente diseñados para
generar marcado descriptivo son el SGML y el
XML.
❖ Las etiquetas pueden utilizarse para añadir al
contenido cualquier clase de metadatos (autor,
hora, software de edición, codificación de
caracteres, etc.
❖ Está evolucionando hacia el marcado genérico. Los
nuevos sistemas de marcado descriptivo
estructuran los documentos en árbol, con la
posibilidad de añadir referencias cruzadas. Esto
permite tratarlos como bases de datos, en las
que el propio almacenamiento tiene en cuenta la
estructura.
11. DTD
Una definición de tipo de documento o DTD ( document type definition) es una descripción de estructura y
sintaxis de un documento XML o SGML.
Su función básica es usar una estructura común y mantener la consistencia entre todos los documentos que
utilicen la misma DTD.
De esta forma, dichos documentos pueden ser validados.
Una DTD describe:
1. Elementos: indican qué etiquetas son permitidas y el contenido de dichas etiquetas.
2. Estructura: indica el orden en que van las etiquetas en el documento.
3. Anidamiento: indica qué etiquetas van dentro de otras.
12. Ejemplo DTD
<!ELEMENT lista_de_personas (persona*)>
<!ELEMENT persona (nombre, fechanacimiento?,
sexo?, numeroseguridadsocial?)>
<!ELEMENT nombre (#PCDATA) >
<!ELEMENT fechanacimiento (#PCDATA) >
<!ELEMENT sexo (#PCDATA) >
<!ELEMENT numeroseguridadsocial (#PCDATA)>
Un ejemplo de un fichero XML que hace uso de esta DTD:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE lista_de_personas SYSTEM "ejemplo.dtd">
<lista_de_personas>
<persona>
<nombre>José García</nombre>
<fechanacimiento>25/04/1984</fechanacimiento>
<sexo>Varón</sexo>
<numeroseguridadsocial>0221</numeroseguridadsocial>
</persona>
</lista_de_personas>
13. Limitaciones de la DTD
Un esquema basado en una DTD tiene bastantes limitaciones.
No permite definir elementos locales que sólo sean válidos dentro de otros elementos. Por ejemplo, si
queremos tener un elemento <Manager> que describa al gestor de una compañía o al de una delegación,
y la definición de Mánager es diferente en cada caso, con una DTD tendríamos que crear los elementos
“CompanyManager” y “DelegationManager” para evitar el conflicto de nombres.
Es decir, la falta de jerarquía en una DTD obliga a introducir una jerarquía a base de guiones o puntos en
el espacio de nombres (Namespace).
Además no es posible indicar a qué tipo de dato (número, fecha, moneda) ha de corresponder un atributo
o el texto de un elemento.
La necesidad de superar estas limitaciones propicia la aparición de otros lenguajes de esquema como
XML Schema, herramientas más completas de descripción que son una alternativa a las DTD.
14. W3C Schema XML
XML Schema es un lenguaje de esquema escrito en XML, basado en la gramática y pensado para
proporcionar una mayor potencia expresiva que las DTD.
El principal aporte de XML Schema es el gran número de tipos de datos que incorpora, como fechas,
números y strings, como también tipos personalizados simples y complejos.
La programación en Schema XML se basa en namespaces o espacios de nombres. Cada namespace
contiene elementos y atributos que están estrechamente relacionados con el namespace. Así, a la hora de
definir un elemento o un atributo de un namespace, siempre se creará una conexión entre los diferentes
campos de éste. Además, esta forma de trabajar nos permite relacionar elementos que no están en el
mismo namespace.
Después de escribir un Schema XML se puede confirmar la correcta realización mediante la validación de
esquemas XML.
15. Ejemplo Schema XML
En la siguiente línea de código se declara el elemento schema, raíz del documento de definición de esquema.
Además se declara el espacio de nombres.
Esto obliga a tener un elemento raíz que se llame “Libro” el cual tendrá tres hijos (elementos anidados) y un
atributo. Los hijos son “Título”, ”Editorial” que deben aparecer una vez y “Autores” que puede aparecer de una a
diez veces.
El hecho de que estén agrupados en una secuencia indica que los elementos deben aparecer en orden.
Los tres elementos son de tipo string. El atributo de libro se llama “precio” y es de tipo double.
Se inician las declaraciones indicando la
versión de XML que se va a utilizar y la
codificación que se usa.
Estos dos campos son necesarios para poder
interpretar el esquema.
16. La Validación XML es la comprobación de que un documento en lenguaje XML está bien formado: sigue
una estructura y reglas definidas en la especificación XML para el diseño de documentos.
Un documento válido,además, respeta las normas dictadas por su DTD o esquema utilizado.
Aumenta su grado de fiabilidad, consistencia y precisión, funcionalidad y utilidad facilitando su intercambio
entre aplicaciones y usuarios.
La validación se encarga de verificar:
❖ La corrección de los datos: aunque validar contra un esquema no garantiza al 100% que los datos son
correctos, nos permite detectar formatos nulos o valores fuera de rango y por tanto incorrectos.
❖ La integridad de los datos: al validar, se comprueba que toda la información obligatoria está presente
en el documento.
❖ El entendimiento de la semántica de los datos: se comprueba que el emisor y receptor interpreten el
documento de la misma manera.
Validación XML
17. Documentos XML bien formados
Especifica unas normas básicas a nivel de sintaxis,. Las características básicas exigidas son:
❖ Incluir una declaración XML (obligatoria): proporciona hasta 3 datos clave sobre el documento que la contiene:
1. Versión XML (obligatoria): la versión más utilizada es 1.0, aunque ya está disponible la versión 1.1 de XML.
2. Codificación de caracteres utilizada (opcional): modo en que se representan los caracteres, normalmente UTF-8
o UTF-16.
3. Declaración independiente (opcional): indica si es independiente (standalone=”yes”) o si depende de declaraciones
de marca externas como una DTD externa (standalone=”no”), esta es la opción por defecto.
❖ Sólo existe un único elemento raíz para cada documento.
❖ Todas las entidades usadas en su interior se declaran en la DTD interna.
❖ Todos los elementos, atributos y entidades que utilice deben escribirse con una sintaxis correcta:
1. Todos los elementos deben estar delimitados por una etiqueta inicial y otra final con el mismo nombre.
<elemento></elemento>
2. Los valores de atributos en XML deben ir entre comillas simples o dobles.
3. Los elementos vacíos deben terminar con '/' (autocierre) o añadiendo una etiqueta de fin y no puede haber
etiquetas aisladas.
4. XML es sensible a mayúsculas y minúsculas y los nombres de las etiquetas pueden ser alfanu méricos, pero
siempre comenzando con una letra.
18. Documentos XML válidos
Además de estar bien formados, cumplen las especificaciones de la DTD o Schema.
Se comprueba:
❖ ¿Están los elementos y atributos definidos en el DTD o Schema?.
❖ ¿Satisface la estructura (elementos anidados, atributos obligatorios u opcionales, etc.)
❖ ¿Cumple con el orden de los elementos?
❖ ¿Son válidos los valores de los datos de atributos y elementos (según enumeraciones, rangos de valores
delimitados, tipo de dato correcto?
❖ ¿Son únicos los elementos definidos de tal manera? (p. ej. Referencias de productos que no pueden repetirse).
19. Métodos de validación
❖ Uso de DTD: Formato de esquema nativo (y el más antiguo) para validar documentos XML, heredado de SGML. Es el método
más sencillo usado para validar, y por esta razón presenta varias limitaciones.
❖ Uso de XML Schema: Evolución de la DTD descrita por el W3C, también llamado de forma más informal XSD (XML Schema
Definition). A la hora de validar, la utilización de XSD supone un gran consumo en recursos y tiempo debido a su gran
especificación y complejidad en la sintaxis (esquemas más difíciles de leer y escribir).
❖ Uso de RELAX NG: Muy intuitivo y más fácil de entender que el XML Schema. De ahí su popularidad. Es más fácil de utilizar e
implementar. También tiene la capacidad de usar plug-ins de definiciones de tipos de dato de XML Schema, combinando así las
ventajas de ambos lenguajes. RELAX NG se ha convertido recientemente en un estándar ISO como la parte 2 de DSDL
(Document Schema Definition Language).
❖ Uso de Schematron: Schematron, se basa en afirmaciones en vez de en la gramática. Proporciona gran flexibilidad en la
descripción de estructuras relacionales. Es un lenguaje muy limitado a la hora de especificar la estructura básica del documento,
pero se puede combinar con otros lenguajes de esquema. Junto con RELAX NG, Schematron se está estandarizando como parte
del DSDL de ISO
20. Editores XML
❖ Facilitan la tarea de crear documentos válidos y bien formados.
❖ Pueden advertir de los errores básicos cometidos.
❖ Escribir automáticamente la sintaxis más sencilla necesaria.
❖ Presentar una lista desplegable con los elementos disponibles enumerados en la DTD.
❖ Advertir el olvido de una etiqueta obligatoria.
❖ Etc.
Algunos ejemplos de editores:
❖ XML Pro de Vervet Logic (open source)
❖ XMLSpy de Altova
❖ Liquid XML Studio de Liquid Technologies
❖ <oXigen/> XML Editor
❖ Turbo XML de TIBCO (Plataforma de desarrollo integrado de XML)
❖ XML Notepad de Microsoft
❖ XMLwriter de Wattle Software
21. Procesadores XML
❖ Se procesan a través de analizadores, aplicaciones que leen el documento, lo interpretan y generan una
salida basada en sus contenidos y en la marca utilizada para su descripción.
❖ Pueden tener o no la capacidad de validar pero todos comprueban que estén bien formados,
❖ Casi todos son capaces de validar con un esquema basado en DTD.
❖ Un buen procesador validante no solo informará la presencia de un error, sino que elaborará un mensaje
especificando cuál ha sido su causa. También existe el procesador Xerces de Apache que, además de ser el más
completo parser de XML, incluye soporte de XML Schema.
❖ Habitualmente, se usa un analizador validante para comprobar la corrección de los documentos, y uno no
validante para su presentación. Una vez que se sabe que un documento es válido, no hay ningún motivo para
comprobar su validez cada vez que se procese (optimizando así el tiempo del proceso).
Algunos procesadores:
★ Xerces de Apache (open source) es uno de los más completos parsers de XML e incluye soporte de XML Schema.
★ XMLValidate de TIBCO
★ XMLSpy de Altova
★ MSXML Parser de Microsoft
★ DocZilla de CiTEC (basado en Mozilla)
★ Stylus Studio XML (PlataformaIDE)
★ Expat XML Parser