Actualizado el 16 de Abril del 2017 (Publicado el 14 de Enero del 2017)
999 visualizaciones desde el 14 de Enero del 2017
1,0 MB
44 paginas
Creado hace 11a (22/10/2012)
(3)
índice
(2.2.1) introducción
(2.2.2) posibilidades de uso de DTD
(2.2.3) definiciones en un DTD
(2.2.4) elementos
(2.2.5) declaración de atributos
(2.2.6) entidades
(2.1) documentos XML bien formados y validación ______________________ 7
(2.2) validación por DTD _____________________________________________ 8
8
8
10
10
14
19
(2.3) Validación por XML Schema ____________________________________ 22
22
22
27
27
37
37
42
43
(2.3.1) XML Schema y DTD
(2.3.2) estructura de los esquemas
(2.3.3) sintaxis de la definición de un elemento
(2.3.4) tipos simples de datos
(2.3.5) atributos
(2.3.6) tipos compuestos
(2.3.7) grupos de elementos
(2.3.8) grupos de atributos
(1)
(5)
(2) validación de
documentos XML
(2.1) documentos XML bien formados y
validación
En el tema anterior se dispusieron las bases del funcionamiento de XML. En ellas se
indicó lo que se consideraba un documento XML bien formado. Los documentos bien
formados, aseguran que las reglas de XML se cumplen y que no hay ninguna incoherencia
al usar el lenguaje. Sin embargo, no es suficiente porque podríamos definir documentos
que utilizaran los elementos que quisiéramos sin restricción. En la realidad los
elementos y los atributos que se pueden utilizar y la manera de disponerles en el
documento es fundamental para mantener una mayor homogeneidad.
Una empresa puede decidir que los documentos internos para describir el software
que utiliza la empresa deben poseer como elemento raíz un elemento llamado software
(y no otro) y que este elemento obligatoriamente debe contener los elementos nombre,
fabricante y precio. Esas reglas no se refieren a que el documento esté bien formado;
son reglas más complejas y que permitirán al documento que sea válido.
Para ello se crea un documento que contendrá las reglas que deben de cumplir los
XML que se basen en él. De modo que un documento deberá indicar qué plantilla de
reglas utiliza y deberá cumplirlas a rajatabla para considerarse válido.
Así explicado parece que la validación supone un problema, pero en realidad es una
ventaja; con la validación tenemos la seguridad de que los documentos cumplen unas
reglas más concretas y de esa forma es fácil establecer un protocolo en las empresas
para sus documentos. De hecho cuando un documento XML cumple estrictamente las
reglas generales de creación XML se dice que está bien formado; cuando además sigue
las reglas de un documento de validación entonces se dice que es válido.
Las técnicas más populares para validar documentos son:
DTD, Document Type Definition. Validación por documentos de definición de
tipos. Se utilizaba en el lenguaje SGML y de ahí debe su popularidad. Es la más
utilizada, pero tiene numerosas voces críticas porque su sintaxis no es XML.
XML Schema o esquemas XML. Mucho más coherente con el lenguaje XML es la
aconsejada actualmente, pero todavía no tiene una implantación al 100%
Relax NG. Es una notación sencilla y fácil de aprender que está haciéndose muy
popular. No tiene tantas posibilidades con el XML Schema, pero tiene una
sintaxis muy sencilla. Además admite añadir instrucciones de tipo XML Schema
por lo que se convierte en una de las formas de validación más completas.
Schematron. Permite establecer reglas que facilitan establecer las relaciones
que han de cumplir los datos de un documento XML. No es tan bueno para
(7)
lenguajes de marcas y sistemas de gestión de información
(unidad 2) Validación XML
establecer el resto de reglas de validación (orden de elementos, tipos de
datos,…)
(2.2) validación por DTD
(2.2.1) introducción
Es la técnica más veterana y, en realidad procede de SGML el lenguaje base de XML. Es
indudablemente la más utilizada, pero también la menos coherente con las reglas XML.
Su éxito se debe a que ya era una forma de validación reconocida antes de la aparición
de XML, por lo que muchísimo productos software la reconocen desde hace mucho y la
compatibilidad con ellos ha determinado su éxito.
(2.2.2) posibilidades de uso de DTD
en el propio documento
Se puede definir la estructura que debe cumplir un documento XML mediante código
DTD insertado en el propio documento. La desventaja evidente, es que esta definición
sólo vale para dicho documento, por lo que realmente no define tipos de documentos
XML (no es una plantilla en definitiva de definición de documentos internos). Por ello es
la forma menos habitual de utilizar DTD.
Su única (pero muy discutible) ventaja es que la validación está dentro del propio
documento, por lo que siempre viajan juntas la validación y el contenido del mismo.
Un documento XML que defina internamente su DTD, simplemente escribe
instrucciones DTD dentro del propio documento dentro de una etiqueta DOCTYPE. La
sintaxis es:
<!DOCTYPE raíz [....códigoDTD...]>
Dentro de los símbolos [ y ] se especifican las instrucciones DTD. Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persona [
<!ELEMENT persona (nombre)>
<!ELEMENT nombre (#PCDATA)>
]>
<persona>
<nombre>Antonio</nombre>
</persona>
(8)
1er curso de administración de sistemas informáticos en red
autor: Jorge Sánchez – www.jorgesanchez.net
en un documento externo privado
En este caso la validación se crea en un documento-plantilla externa. De modo que
cuando un documento debe cumplir las reglas de la plantilla DTD, se debe indicar la
ruta (sea relativa o absoluta) a la misma.
La sintaxis de la etiqueta DOCTYPE que permite asignar un DTD privado a un
documento XML es:
<!DOCTYPE raíz SYSTEM "rutaURLalDTD">
Salvo que se desee crear un único documento con una validación DTD, lo lógico es
utilizar la forma de DTD externa ya que de esa forma se pueden validar varios
documentos a la vez. La ruta puede ser absoluta y entonces se indica su URL:
<!DOCTYPE raíz SYSTEM "http://www.empresa.com/docs.dtd">
Pero puede ser relativa:
<!DOCTYPE raíz SYSTEM " docs.dtd">
Entonces se busca al archivo DTD desde el directorio donde se encuentra el archivo XML
que queremos validar (en el ejemplo, el archivo docs.dtd debe encontrarse en el mismo
directorio que el archivo que contiene ese código DOCTYPE).
En ambos casos se puede añadir código DTD para en ese documento concreto añadir
instrucciones de validación. Ejemplo:
<!DOCTYPE raíz SYSTEM “http://www.empresa.com/docs.dtd” [
<!ELEMENT nombre (#PCDATA)>
] >
DTD externo de tipo PUBLIC
Se entiende que SYSTEM se utiliza cuando el documento DTD es privado. Si se trata de
un documento de uso público, entonces se usa PUBLIC. La sintaxis sería:
<!DOCTYPE raíz PUBLIC “nombreDTD” “DTD_URL”>
La raíz sigue siendo el nombre del elemento raíz. El nombreDTD es el nombre público
que se le da al DTD en cuestión. Si disponemos de un repositorio de DTDs públicos
(como ocurre en entornos de trabajo como Oxygene por ejemplo) le cargaría sin ir a
Internet. Si el nombreDTD no es reconocido se usa la dirección URL para descargarlo y
utilizarlo. Ejemplo:
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Este es el DOCTYPE para una página web escrita en XHTML 1.0 estricto, utilizada para
validar miles de páginas web.
atributo standalone de la etiqueta de cabecera
La etiqueta <?xml de cabecera de todo documento XML, posee un atributo llamado
standalone que puede tomar dos valores:
yes. En caso de el documento XML no utilice DTD externa
(9)
lenguajes de marcas y sistemas de gestión de información
(unidad 2) Validación XML
no. Cuando el documento obligatoriamente hace uso de DTD externa
(2.2.3) definiciones en un DTD
En un código DTD (tanto externo como interno) se pueden definir:
Los elementos que se pueden utilizar en un documento XML. En esta definición
se indica además que pueden contener dichos elementos.
Los atributos que pueden poseer los elementos. Además incluso indicando sus
posibles valores válidos.
Entidades que puede utilizar el documento XML.
(2.2.4) elementos
Mediante un DTD podemos especificar elemento que se puede utilizar en un XML se
define en su DTD mediante una etiqueta !ELEMENT. La sintaxis de la misma es:
<!ELEMENT nombre tipo>
El nombre es el identificador que tendrá el elemento en el documento XML (hay que
recordar que se distingue entre mayúsculas y minúsculas).
El tipo indica el funcionamiento del elemento, relativo al contenido que puede
tener. A continuación se indican las posibilidades de este parámetro
tipos de contenido en los elementos
EMPTY
Significa que el elemento no podrá tener contenido alguno, es un elemento vacío (como
la etiqueta br de las páginas web). Ejemplo de definición de elemento vacío:
<!ELEMENT línea EMPTY >
Cuando se indica como tipo la palabra EMPTY, se indica que el elemento no puede tener
contenido, pero sí podrá contener atributos (si se especifican en el DTD).
Los elementos definidos con EMPTY sólo pueden utilizarse de esta forma:
<línea></línea>
o bien:
<línea />
ANY
Permite cualquier contenido en el elemento, sin restricciones de ningún tipo. Es decir
puede contener texto, otro tipo de datos y cualquier etiqueta. Además puede tener
atributos.
(10)
Ejemplo:
1er curso de administración de sistemas informáticos en red
autor: Jorge Sánchez – www.jorgesanchez.net
<?xml version="1.0"?>
<!DOCTYPE persona [
<!ELEMENT persona (nombre, apellidos)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos ANY>
]>
<per
Comentarios de: Validación de Documentos XML (0)
No hay comentarios