XML Schema
IES de TEIS - Obd. Vázquez - Curso 2021-22
DOCUMENTOS XML
Mecanismos de validación
• DTD (Definición de Tipo de Documento)
• XML Schema (Definición de esquema XML)
IES de TEIS - Obd. Vázquez - Curso 2021-22
LIMITACIONES DE LOS DTD
• Utilizan una sintaxis propia (no son XML)
• No podemos especificar mucho sobre los tipos de datos/atributos:
- ¿Un elemento que sólo contenga valores numéricos?
- ¿Un elemento que contenga una fecha en formato correcto?
- ¿Un elemento como NIF, que siga un patrón de 8 dígitos + 1 letra?
• Orden rígido en los elementos
- (DNI, nombre, apellidos) : ¿podemos alterar el orden?
• Los elementos no permiten valores enumerados ni valores por defecto
• Los elementos no permiten valores identificativos
• Cardinalidad muy limitada:
- opcional/obligatorio; simple/múltiple
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO CON XMLSchema
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO CON XMLSchema
IES de TEIS - Obd. Vázquez - Curso 2021-22
DETECCION DE ERROR DE TIPOS
IES de TEIS - Obd. Vázquez - Curso 2021-22
DETECCION DE ERROR DE TIPOS
IES de TEIS - Obd. Vázquez - Curso 2021-22
ENLACE A UN ESQUEMA
(Obviamos el espacio de nombres)
¿Cómo se define el XMLSchema?
¿Cómo se enlaza desde el documento XML?
IES de TEIS - Obd. Vázquez - Curso 2021-22
ENLACE A UN ESQUEMA
XMLSchema
Documentos instancias XML
IES de TEIS - Obd. Vázquez - Curso 2021-22
TIPOS DE ELEMENTOS
ELEMENTOS SIMPLES
• Sólo contienen información
• No tienen elementos descendientes ni tampoco atributos
• Sintaxis
<xs:element name=“nnnn" type=“xs:tipo"/>
• Ejemplo
<xs:element name="nome" type="xs:string"/>
• Pueden tener un valor por defecto
<xs:element name="cidade" type="xs:string" default="Vigo"/>
• Pueden tener un valor por fijo (no se puede cambiar):
<xs:element name="color" type="xs:string" fixed="blanco"/>
IES de TEIS - Obd. Vázquez - Curso 2021-22
TIPOS DE ELEMENTOS
ELEMENTOS SIMPLES (continuación)
• Cardinalidad
Se indica mediante los attributos minOccurs y maxOccurs
• Ejemplo
• Valor por defecto para ambos atributos es 1 obligatorio y único
• Elemento opcional minOccurs = 0
• Elemento múltiple maxOccurs =“unbounded”
IES de TEIS - Obd. Vázquez - Curso 2021-22
Tipos simples predefinidos
• Existen múltiples tipos (ver página 7 y 8 del documento base)
• Algunos son:
- De texto
string
- Numéricos
decimal
integer
negativeInteger – positiveInteger – nonPositiveInteger (negativos + 0)
byte
- Fecha y hora
date
time
- Booleanos
boolean
IES de TEIS - Obd. Vázquez - Curso 2021-22
ATRIBUTOS
• Se declaran igual que los elementos simples
<xs:attribute name=“nombreAtributo" type="xs:tipoAtributo"/>
• Ejemplo:
<xs:attribute name="numeroExpedente" type="xs:unsignedShort"/>
• También pueden tener valores por defecto y valores fijos
<xs:attribute name="provincia" type="xs:NMTOKEN" default="Lugo"/>
<xs:attribute name="provincia" type="xs:NMTOKEN" fixed="Lugo"/>
• Por defecto, son opcionales.
• Se puede variar la obligatoriedad mediante el atributo “use”
<xs:attribute name="numExpedente" type="xs:unsignedShort“ use=“optional”/>
<xs:attribute name="numExpedente" type="xs:unsignedShort“ use=“required”/>
IES de TEIS - Obd. Vázquez - Curso 2021-22
TIPOS DE ELEMENTOS
ELEMENTOS COMPLEJOS
• Pueden contener elementos descendentes y/o atributos
• Primero se indican los elementos hijos y después los atributos (si existen)
• El nombre del elemento se indica como valor del atributo “name” y se
emplea la indicación <xs:complexType>
• Ejemplo (cinco elementos hijos y además un atributo)
IES de TEIS - Obd. Vázquez - Curso 2021-22
INDICADORES DE ORDEN
Existen 3 indicadores de orden
• <xs:sequence>
Deben aparecer todos los elementos en el mismo orden indicado
• <xs:choice>
Lista de elementos alternativos (sólo puede aparecer uno de los indicados)
• <xs:all>
Lista de elementos que pueden aparecer en cualquier orden.
No es muy recomendable pero, si aparece, debe aparecer como hijo único
en el nivel más alto del modelo de contenido (es decir, no puede aparecer
dentro de <xs:sequence>, <xs:choice> o <xs:all>)
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO - <xs:sequence>
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO - <xs:choice>
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO - <xs:all>
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO - <xs:all> erróneo
IES de TEIS - Obd. Vázquez - Curso 2021-22
EJEMPLO
Elemento “persoa” compuesto de tres elementos hijos: “nome”,
“direccion” y “telefono_fijo” o bien “telefono_movil”. Contiene también
atributo “dni”
IES de TEIS - Obd. Vázquez - Curso 2021-22
SOLUCION (archivo .xsd)
IES de TEIS - Obd. Vázquez - Curso 2021-22
TIPOS DE ELEMENTOS
ELEMENTOS MIXTOS
• Pueden contener tanto texto como elementos hijos y atributos
• Se declaran especificando el atributo mixed=“true” en la etiqueta
<xs:complexType>
• Ejemplo:
• Fragmento xml válido
IES de TEIS - Obd. Vázquez - Curso 2021-22
TIPOS DE ELEMENTOS
ELEMENTOS CON DATOS Y ATRIBUTO/S
• Ejemplo:
• Deben ir dentro de las etiquetas <xs:simpleContent> y <xs:extension>
IES de TEIS - Obd. Vázquez - Curso 2021-22
DECLARACION DE NUEVOS TIPOS
• Es posible crear un tipo de dato “personalizado”.
• Puede aplicarse sobre tipos simples: simpleType o compuestos: complexType
• Puede ser reutilizado en diferentes partes del mismo esquema
• Ejemplo:
IES de TEIS - Obd. Vázquez - Curso 2021-22
RESTRICCIONES
• Sirven para limitar el conjunto de valores posibles para un elemento o
atributo.
• Siempre se aplican sobre un tipo existente, llamado “tipo base”
• Ejemplo:
- Valor comprendido en un rango determinado
(edad entre 3 y 6 años, inclusive)
- Número de caracteres fijo, mínimo o máximo
(contraseña con 8 caracteres alfanuméricos)
- Conjunto de valores permitidos
(calificación: apto / no apto)
- Número de dígitos y/o número de decimales
(DNI con 8 dígitos o precio con 2 decimales)
- Valor numérico mayor/menor que otro valor
(nota > 5)
- Patrones
(matrícula con 4 dígitos seguidos de 3 letras)
Etc.
IES de TEIS - Obd. Vázquez - Curso 2021-22
RESTRICCIONES
Extraído de documentación de Ricardo Eíto Brun
enumeration Establece una lista de valores
“aceptados”
fractionDigits Número de cifras decimales
length Número de caracteres obligatorios
maxExclusive y maxInclusive Valor máximo de un rango
minExclusive y minInclusive Valor mínimo en un rango
maxLength y minLength Número máximo y mínimo de
caracteres permitidos
pattern Define una secuencia de caracteres
permitida
totalDigits Número exacto de dígitos
permitidos
whiteSpace Indica cómo se deben de tratar los
espacios en blanco
IES de TEIS - Obd. Vázquez - Curso 2021-22
DECLARACION DE RESTRICCIONES
RESTRICCION SOBRE ELEMENTO SIMPLE: Ejemplo1
IES de TEIS - Obd. Vázquez - Curso 2021-22
DECLARACION DE RESTRICCIONES
RESTRICCION SOBRE ELEMENTO SIMPLE: Ejemplo2
IES de TEIS - Obd. Vázquez - Curso 2021-22
DECLARACION DE RESTRICCIONES
RESTRICCIONES EQUIVALENTES “con nombre”
IES de TEIS - Obd. Vázquez - Curso 2020-21