LMSGI04 Definición de Esquemas y Vocabularios en XML
LMSGI04 Definición de Esquemas y Vocabularios en XML
LMSGI04 Definición de Esquemas y Vocabularios en XML
XML
Caso práctico
María había salido a dar un paseo por el
puerto, como todos los domingos por la
mañana iba acompañada de su marido José
Ramón y su hijo.
Caso práctico
Al día siguiente, cuando habla con Juan, sus dudas quedan disipadas.
Resulta que hay varias posibilidades para asegurar una normalización en
el formato de los documentos XML.Juan comienza por describir la
estructura de un documento XML y Félix y María descubren que puede ser un
poco más compleja que la que habían estado usando hasta entonces para
generar sus documentos.
Hasta ahora hemos trabajado con documentos básicos de XML. En la primera unidad vimos
que un documento XML básico estaba formado por un prólogo y un ejemplar. Recordamos
que cada una de esas partes tiene el siguiente cometido:
Estos documentos básicos están incompletos, ya que solo hemos declarado el tipo de
documento que va a ser (qué ejemplar vamos a definir), pero no hemos definido qué
cualidades tiene ese ejemplar.
Para completarlos y definir en profundidad las cualidades del ejemplar, usaremos o bien
DTDs o bien XML Schemas.
Autoevaluación
Marcar los componentes de un documento XML:
Prólogo.
Ejemplar.
Cabecera.
Mostrar retroalimentación
Solución
1. Correcto
2. Correcto
3. Correcto
4. Incorrecto
1.1.- Declaración de tipo de documento
Autoevaluación
La definición de tipo de documento ha de ser:
Única.
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto
1.2.- Definición de la sintaxis de
documentos XML
Recordamos que en estos documentos las etiquetas de
marcado describen la estructura del documento.
Sabemos que los atributos no pueden tener nodos que dependan de ellos, por tanto solo
pueden corresponder con hojas de la estructura de árbol que jerarquiza los datos.
¿Significa esto que todas las hojas van a ser atributos? Pues no, es cierto que los atributos
son hojas, pero las hojas pueden ser atributos o elementos.
En ese caso, ¿qué criterios podemos utilizar para decidir si un dato del documento que se
pretende estructurar ha de representarse mediante un elemento o un atributo? Aunque no
siempre se respetan, podemos usar los siguientes criterios:
¿Cómo se declaran?
xmnls:"URI_namespace"
¿Y si se usa un prefijo que nos informe sobre cuál es el vocabulario al que está asociada
esa definición?
xmnls:prefijo="URI_namespace"
En ambos casos URI_namespace es la localización del conjunto del vocabulario del
espacio de nombres al que se hace referencia.
Autoevaluación
Marcar las afirmaciones válidas que hacen referencia a un espacio de
nombres.
Mostrar retroalimentación
Solución
1. Correcto
2. Incorrecto
3. Correcto
4. Incorrecto
2.- Definiciones de tipo de documento,
DTD.
Caso práctico
Según Juan el método más sencillo para intentar normalizar los
documentos con los que trabajan, consiste en definir unos vocabularios
que han de cumplir los documentos que generan, estos se llaman Definición
de Tipo de Documento. Además, aunque no es un lenguaje XML, tiene una
sintaxis sencilla y fácil para que ella y Félix puedan comprenderla y utilizarla.
Están formadas por una relación precisa de qué elementos pueden aparecer en un
documento y dónde, así como el contenido y los atributos del mismo. Garantizan que
los datos del documento XML cumplen las restricciones que se les haya impuesto en
el DTD, ya que estas últimas permiten:
Su sintaxis no es XML.
No soportan espacios de nombres.
No definen tipos para los datos. Solo hay un tipo de elementos terminales, que son los
datos textuales.
No permite las secuencias no ordenadas.
No es posible formar claves a partir de varios atributos o elementos.
Una vez que se define un DTD no es posible añadir nuevos vocabularios.
Cuando están definidas dentro del documento XML se ubican entre corchetes después del
nombre del ejemplar en el elemento <!DOCTYPE> pero, cuando está definido en un fichero
externo ¿a qué tipo de fichero corresponde? Definimos el DTD externo en un fichero de
texto plano con extensión dtd.
Autoevaluación
Marcar las afirmaciones referidas a un DTD:
Permite la formación de identificadores compuestos por varios atributos.
Mostrar retroalimentación
Solución
1. Incorrecto
2. Correcto
3. Correcto
4. Incorrecto
2.1.- Declaraciones de tipos de elementos
terminales
Los tipos terminales son aquellos elementos que se
corresponden con hojas de la estructura de árbol formada por los
datos del documento XML asociado al DTD. La declaración de
tipos de elementos está formada por la cadena <!ELEMENT>
separada por, al menos un espacio del nombre del elemento XML
que se declara, y seguido de la declaración del contenido que
puede tener dicho elemento.
<!ELEMENT A EMPTY>
ANY: Permite que el contenido del elemento sea cualquier cosa. Un ejemplo de
definición de un elemento de este tipo es:
<!ELEMENT A ANY>
(#PCDATA): Indica que los datos son analizados en busca de etiquetas, resultando
que el elemento no puede contener elementos, es decir solo puede contener datos de
tipo carácter exceptuando los siguientes: <, &, ]], >. Si es de este tipo, el elemento A
tendrá una definición como:
<!ELEMENT A (#PCDATA)>
EJEMPLO
Autoevaluación
Los elementos terminales de tipo ANY son aquellos que están:
Vacíos
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
2.2.- Declaraciones de tipos de elementos
no terminales
¿Y qué sucede cuando un elemento puede aparecer en el documento varias veces, hay
que indicarlo de algún modo? Pues sí, también hay que indicar cuando un elemento puede
no aparecer. Para ello usamos los siguientes operadores, que nos permiten definir la
cardinalidad de un elemento:
EJEMPLO
1 <alumno>
2 <nombre>Olga</nombre>
3 <dirección>El Percebe 13</dirección>
4 </alumno>
Autoevaluación
La diferencia entre el operador ? y el + es que el primero permite que el
elemento sobre el que se aplica esté presente una vez, como máximo,
mientras que el operador + no limita el número máximo de veces que
está presente el elemento en el documento XML.
Verdadero.
Falso.
Solución
1. Opción correcta
2. Incorrecto
2.3.- Declaraciones de listas de atributos
para los tipos de elementos
Ya sabemos cómo declarar elementos, ahora veamos el
modo de declarar los atributos asociados a un elemento.
Para ello utilizamos la cadena <!ATTLIST seguida del
nombre del elemento asociado al atributo que se declara,
luego el nombre de éste último seguido del tipo de atributo
y del modificador. Este elemento puede usarse para
declarar una lista de atributos asociada a un elemento, o
repetirse el número de veces necesario para asociar a
dicho elemento esa lista de atributos, pero
individualmente.
(lunes|martes|miércoles|jueves|viernes|sábado|domingo)
#REQUIRED>
¿También hemos de declarar si el valor de un atributo es obligatorio o no? Si, para ello se
usan los siguientes modificadores:
EJEMPLO
Autoevaluación
¿Cuál de los siguientes atributos permite añadir a los datos una
restricción de integridad referencial?
MTOKEN.
ID.
IDREF.
CDATA.
Incorrecto, los datos de este tipo garantizan que tienen un nombre que
cumple las normas de XML.
Genial, es correcto.
No está bien. Este tipo de datos se usa para cadenas de texto.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
2.4.- Declaraciones de entidades
¿Qué sucede si queremos declarar valores
constantes dentro de los documentos?
¿podemos?
Las entidades nos permiten definir
constantes en un documento XML. Cuando
se usan dentro del documento XML se
limitan por "&" y ";", por ejemplo &entidad;
¿Se puede definir una entidad diferente? ¿Cómo? Utilizando la siguiente sintaxis:
<!ENTITY nombre_entidad "valor de la entidad"> Por ejemplo,
Externas: Permiten establecer una relación entre el documento XML y otro documento
a través de la URL de éste último. Un ejemplo de declaración de una entidad externa
es:
En este caso el contenido de los ficheros es analizado, por lo que deben seguir la
sintaxis XML.
Cuando es necesario incluir ficheros con formatos binarios, es decir ficheros que no se
analicen, se utiliza la palabra reservada NDATA en la definición de la entidad y habrá
que asociar a dicha entidad una declaración de notación, tal y como muestra el ejemplo
del apartado siguiente.
De parámetro: Permite dar nombres a partes de un DTD y hacer referencia a ellas a lo
largo del mismo. Son especialmente útiles cuando varios elementos del
DTD comparten listas de atributos o especificaciones de contenidos. Se denotan por
%entidad;
Autoevaluación
Las entidades permiten definir elementos cuyo valor es constante
dentro de un DTD.
Verdadero.
Falso.
Genial, es correcto.
Solución
1. Incorrecto
2. Opción correcta
2.5.- Declaraciones de notación
Cuando se incluyen ficheros binarios en un fichero, ¿cómo le
decimos qué aplicación ha de hacerse cargo de ellos? La
respuesta es utilizando notaciones. La sintaxis para declarar
notaciones es:
Por ejemplo, una notación llamada gif donde se indica que se hace referencia a un editor
de formatos gif para visualizar imágenes será:
Para asociar una entidad externa no analizada a esta notación basta declarar dicha entidad
del siguiente modo:
Autoevaluación
Las notaciones permiten:
Solución
1. Incorrecto
2. Opción correcta
3. Incorrecto
4. Incorrecto
2.6.- Secciones condicionales
Permiten incluir
o ignorar partes
de la declaración
de un DTD. Para
ello se usan dos
tokens:
INCLUDE,
permite
que se vea
esa parte
de la
declaración
del DTD.
Su sintaxis
es:
<![INCLUDE [Dec
Por ejemplo:
IGNORE, permite ocultar esa sección de declaraciones dentro del DTD. La forma de
uso es:
Por ejemplo:
Autoevaluación
Las sentencias condicionales permiten definir unos elementos u otros
dentro del fichero XML en función de una determinada condición.
Verdadero.
Falso.
Solución
1. Incorrecto
2. Opción correcta
3.- XML Schema
Caso práctico
Félix, quien considera que la normalización de los documentos XML que
manejan en la empresa va a ser un duro trabajo para María, él y otros
trabajadores inexpertos, plantea la posibilidad de que se encargue de ello
algún trabajador de la consultoría informática que dirige Juan.
Los elementos XML que se utilizan para generar un esquema han de pertenecer al espacio
de nombre XML Schema, que es: http://www.w3.org/2001/XMLSchema.
Debes conocer
En este primer enlace encontrarás los fundamentos del estándar XML
Schema.
Debes conocer
En este enlace encontrarás los tipos de datos admitidos por el estándar.
https://www.w3.org/TR/xmlschema-2/
Autoevaluación
¿Cuál de los siguientes tipos no hace referencia a un dato de tiempo?
dateTime.
duration.
gDayMonth.
gMonthDay.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
3.1.1.- Facetas de los tipos de datos
¿Cuáles son las restricciones que podemos aplicar sobre los valores de los datos de un
elemento o atributo?
Están definidos por las facetas, que solo pueden aplicarse sobre tipos simples utilizando el
elemento xs:restriction. Se expresan como un elemento dentro de una restricción y se
pueden combinar para lograr restringir más el valor del elemento. Son, entre otros:
Patrón Significado
1.- Creación de una cadena de texto con una longitud máxima de 9 caracteres y dos
valores posibles.
2.- Creación de un elemento en el que se respetan los espacios tal y como se han
introducido.
3.- Creación de un elemento calificaciones de dos dígitos cuyo valor es un número
entero comprendido entre 1 y 10, ambos inclusive.
4.- Creación de la máscara de un DNI mediante pattern.
3.1.3.- Facetas: soluciones a los ejercicios
Ejercicio Resuelto 1
1.- Creación de una cadena de texto con una longitud máxima de 9
caracteres y dos valores posibles.
Mostrar retroalimentación
1 <xs:simpleType name="estado">
2 <xs:restriction base="xs:string">
3 <xs:maxLength value="9"/>
4 <xs:enumeration value="conectado"/>
5 <xs:enumeration value="ocupado"/>
6 </xs:restriction>
7 </xs:simpleType>
Ejercicio Resuelto
Ejercicio Resuelto 2
2.- Creación de un elemento en el que se respetan los espacios tal y
como se han introducido.0
Mostrar retroalimentación
1 <xs:simpleType name="nombre">
2 <xs:restriction base="xs:string">
3 <xs:whitespace value="preserve"/>
4 </xs:restriction>
5 </xs:simpleType>
Ejercicio Resuelto 3
3.- Creación de un elemento calificaciones de dos dígitos cuyo valor es
un número entero comprendido entre 1 y 10, ambos inclusive.
Mostrar retroalimentación
1 <xs:simpleType name="calificaciones">
2 <xs:restriction base="xs:integer">
3 <xs:totalDigits value="2"/>
4 <xs:minExclusive value="0"/>
5 <xs:maxInclusive value="10"/>
6 </xs:restriction>
7 </xs:simpleType>
Ejercicio Resuelto 4
4.- Creación de la máscara de un DNI mediante pattern.
Mostrar retroalimentación
1 <xs:simpleType name="dni">
2 <xs:restriction base="xs:string">
3 <xs:pattern value="[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0
4 </xs:restriction>
5 </xs:simpleType>
3.2.- Elementos del lenguaje
A continuación se listan los más usados:
Autoevaluación
Para hacer un elemento complejo formado por un listado de elementos
en los que importa el orden hay que usar el elemento:
<xs:choice>.
<xs:group>.
<xs:all>.
<xs:secuence>.
1. Incorrecto
2. Incorrecto
3. Incorrecto
4. Opción correcta
Debes conocer
Este enlace te permitirá consultar las estructuras del estándar XML Schema.
Ejercicio Resuelto
Define un esquema correspondiente a un documento XML para estructurar la
información personal sobre los alumnos de un centro educativo.
Mostrar retroalimentación
Ejercicio Resuelto 1
1.- Creación de un elemento simple de nombre edad que representa la edad
de un alumno de la ESO, por tanto su rango está entre los 12 y los 18 años.
Mostrar retroalimentación
1 <xs:element name="edad">
2 <xs:simpleType>
3 <xs:restriction base="xs:positiveInteger">
4 <xs:minInclusive value="12"/>
5 <xs:maxInclusive value="18"/>
6 </xs:restriction>
7 </xs:simpleType>
8 </xs:element>
Ejercicio Resuelto 2
2.- Creación de una lista con los días de la semana en letras.
Mostrar retroalimentación
Mostrar retroalimentación
1 <xs:complexType name="alumno">
2 <xs:secuence>
3 <xs:element name="nombre" type="xs:string" minOccurs="1" max
4 <xs:element name="apellidos" type="xs:string" minOccurs="1"
5 <xs:element name="web" type="xs:string" minOccurs="0" maxOcc
6 <xs:complexType>
7 <xs:attribute name="href" type="xs:string"/>
8 </xs:complexType>
9 </xs:element>
10 <xs:secuence>
11 </xs:complexType>
3.4.- Asociación con documentos XML
Una vez que tenemos creado el fichero XSD ¿cómo lo asociamos a un fichero XML?
Ejercicio Resuelto
Dado el ejemplo de esquema de la sección 3.2.1. construye un documento
XML que cumpla las especificaciones definidas en el archivo XML Schema.
Mostrar retroalimentación
Autoevaluación
La asociación de un documento XML a un esquema se hace en:
El ejemplar.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
3.5.- Documentación del esquema
Una vez que hemos visto como crear un esquema vamos a ver el
modo de incorporar cierta documentación (quién es el autor,
limitaciones de derechos de autor, utilidad del esquema, etc.) al
mismo.
En lugar de usar los comentarios, XML Schema tiene definido un soyignatius - www.flickr.com (CC
elemento xs:annotation que permite guardar información BY-NC-ND)
EJEMPLO
1 <xs:schema xmlns:xsi=http://www.w3.org/2001/XMLSchema>
2 <xs:annotation>
3 <xs:documentation xml:lang ="es-es">
4 Materiales para formación e-Learning
5 <modulo>Lenguajes de marcas y sistemas de gestión de información.<modulo>
6 <fecha_creación> 2011<fecha_creacion>
7 <autor> Nuky La Bruji</autor>
8 </xs:documentation>
9 </xs:annotation>
10 <xs:element name="lmsgi" type=xs:string>
11 <xs:annotation>
12 <xs:appinfo>
13 <texto_de_ayuda>Se debe de introducir el nombre completo del tema</texto
14 <xs:appinfo>
15 </xs:annotation>
16 </xs:element>
17 </xs:schema>
Autoevaluación
La mejor solución para documentar un esquema es usar los
comentarios:
Verdadero.
Falso.
Genial, correcto.
Solución
1. Incorrecto
2. Opción correcta
4.- Herramientas de creación y validación
Caso práctico
Antes de comenzar a trabajar con la normalización de los documentos que
utiliza la empresa de María y Félix. Marina le presenta a Juan un informe
sobre las diferentes herramientas que pueden facilitarles el trabajo de edición
y validación de los documentos XSD y XML.
Igual que hasta ahora, para crear y validar los documentos XML y
los esquemas basta con un editor de texto plano y un navegador.
¿Pero no hay ninguna herramienta que nos facilite el trabajo? Pues
sí, existen aplicaciones que permiten al usuario visualizar, validar y
editar documentos en el lenguaje XML. Algunos de estos productos
son: