Realizar un esquema para el almacenamiento de CD musicales con las



Documentos relacionados
ESQUEMAS INTRODUCCION A LA VALIDACIÓN DE DOCUMENTOS MEDIANTE ESQUEMAS. 7.3 Partes importantes de los esquemas Repeticiones de elementos

XML para FP : Introducción

XML-Schema. XML-Schema. XML-Schema. XML-Schema. Ventajas de XML-Schema con respecto a las DTD s:

Contenido. Complemento Nomina. Estructura

Práctica 4 Manejo avanzado de Bison

Validación de un XML

Estructura. Elementos Elemento: Intereseshipotecarios Diagrama. Contenido. Complemento de Intereses hipotecarios

Tecnologías XML Esquemas XML

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

XML-Schema. XML-Schema. Espacios de Nombre. W3C XML Schema intenta superar las limitaciones de las DTDs con respecto a ellos

ModusOne. ModusOne Client. Version: 5.2

2ª Convocatoria 2008/2009 (15-IX-2009) 4º Ing. Informática. CPS. Universidad de Zaragoza Tiempo de realización: 3 horas

Modelado de datos XML: XML-Schema

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

- Se admiten los ficheros XML sin prólogo en las conversiones que hacen uso del separador de ficheros XML.

NÚMEROS NATURALES Y NÚMEROS ENTEROS

FUNDACION EDUCATIVA OBRERA FUNEDO TECNICO EN SECRETARIADO EJECUTIVO SISTEMATIZADO

Sistemas de Información 12/13 XML (extensible Mark-up Language)

Modulo 1 El lenguaje Java

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

XML, parte 3. M. en C. Erika Vilches

XML Schema. Sergio Luján Mora.

UTILIZACION DE ESQUEMAS XML DE LA AGENCIA TRIBUTARIA PARA CALCULO RETENCIONES

SINTAXIS DE LOS XML SCHEMA

MANUAL TÉCNICO Sistema Declaración Informativa de Inversiones en Jurisdicciones de Baja Imposición Fiscal (JBIF) Versión 2.0

- Access es un gestor de bases de datos relacionales gráfico e interactivo.

Definición de XQuery.

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Requisitos para la generación de Xml válido

Contenido. Complemento de Estado de Cuenta Bancario. Estructura

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Manual de usuario Sucursal Virtual

Análisis de esquemas XML [1]

Comentarios al Real Decreto 1619/2012 por el que se aprueba el Reglamento por el que se regulan las obligaciones de facturación realizados por el REAF

Manual de usuario. Modulo Configurador V.1.0.1

1. Observaciones para la cumplimentación de los ficheros XML del 3

Añadido de Funcionalidades en D2 para su lanzamiento en BATCH

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

manual rápido SOLUCION TPV ESPECIAL TIENDAS ALIMENTACIÓN

ÍNDICE. Introducción. Alcance de esta NIA Fecha de vigencia

XML Schema. Departamento de Informática Universidad de Oviedo

FORMATO DE INFORMACIÓN DE COMPRAS Y VENTAS

Instructivo de Microsoft Excel 2003

Iniciativas para el Desarrollo del Jugador Normas para partidos en cancha pequeña & Registro por año de nacimiento Preguntas Frecuentes

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Estructura. Elementos Elemento: Retenciones Diagrama

2 Estructura de un Documento XML

SITUACIÓN ACTUAL ENTORNO A LAS OBLIGACIONES DE FACTURACIÓN

Aprobación del nuevo Reglamento por el que se regulan las obligaciones de facturación

GUIA DE ELABORACION DE DOCUMENTOS ELECTRONICOS XML Versión 1.1

Datos Estadísticos y el Lenguaje XML

Como registrar tu Equipo en un Evento

Inside. Gestión de Expedientes y Documentos Electrónicos

Estructura Elemento: EstadoDeCuentaCombustible Diagrama

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Recursos de Aprendizaje

2.3 Declaraciones de listas de atributos para los tipos de elementos... 8

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

Guía del usuario de DocuShare Agent

Cómo ingresar a la Sucursal Electrónica?

Base de datos relacional

Transformación de documentos XML con

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Normas de gestión documental y archivo electrónico

MODELO DE CONTRATO DE AGENTE DE COMPRAS INTERNACIONAL

Base de datos en Access

El nombre de cada uno de los archivos, debe especificarse mediante la siguiente secuencia de caracteres:

Fundamentos de las tecnologías de la información

XML Namespaces. Sergio Luján Mora.

Guía para realizar trabajos universitarios

TALLER No.1 AUDITORÍA A CUENTAS POR COBRAR DE COMFAPOPAYAN UTILIZANDO SOFTWARE DE AUDITORÍA - IDEA.

PLANES DE EMPRESA ICEX CONSOLIDA. Manual de Usuario

XML. Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos. Marzo de gsyc-profes (arroba) gsyc.urjc.

SISTEMA DE BECAS AL EXTERIOR

Nota informativa respecto al tratamiento de las facturas electrónicas que puedan recibirse por los centros gestores que utilizan SOROLLA2

Combinar comentarios y cambios de varios documentos en un documento

Tema: Sobrecarga de Operadores.

Sistemas Inteligentes de Gestión. Relación de ejercicios CLIPS. Sistemas expertos basados en reglas con encadenamiento hacia adelante

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Unidad 1 números enteros 2º ESO

Procedimiento para la solicitud de MODIFICACIONES en los Títulos Universitarios Oficiales de Grado y Máster

P/. Factura Electrónica D/. Manual de Usuario Proveedores

Diseño Estructurado de Algoritmos

Juego del TRESILLO en Villar de Cañas (CUENCA)

Para completarlo deberá tener en cuenta las siguientes

Informes de conjunto

Imágenes y objetos IMÁGENES

RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B)

IMPLEMENTACION DE UNA BASE DE DATOS EN ACCESS

Creación de documentos XML

Cómo gestionar menús en Drupal 7

Manual de rol gestor de GAV para moodle 2.5

4. (Junio 2005) Se está diseñando un lenguaje de programación para manejar objetos gráficos. Entre las constantes que tiene que manipular están las

Otros tipos de Consultas

Trabajo Semanal Alternativo

UML, ejemplo sencillo sobre Modelado de un Proyecto

Transcripción:

Ejemplos Realizar un esquema para el almacenamiento de CD musicales con las especificaciones detalladas en el ejemplo del tema 2. Escriba también un documento de instancia para ese esquema. Diseñar un esquema que permita el almacenamiento de una lista con los tipos de cambio de divisas. Se deberá guardar información sobre: Información sobre el creador de la lista, derechos de copyright, Fecha y hora elaboración de la lista. Moneda base a partir de la cual se establece el cambio. Por cada moneda aparecerá: o o o Abreviatura de la divisa (por ejemplo USD para dólares americanos, EUR para euros o GBP para libras esterlinas). Denominación de la divisa. Tipo de cambio respecto a la moneda base. Crear también un documento de instancia que cumpla las especificaciones del esquema. Se deberá crear una versión sin utilizar espacio de nombres (atributo nonamespaceschemalocation) y una versión con espacio de nombres (atributo schemalocation). o Hacer las modificaciones oportunas tanto en el esquema como en el documento de instancia. Validad los documentos con alguna herramienta. 52

Atributos Un atributo se declara con el elemento xs:attribute. Algunos Atributos del elemento: name, un nombre no cualificado (nombre XML sin dos puntos) con el nombre del atributo. type, especifica el tipo de contenido del atributo. default, el atributo tiene el valor predeterminado especificado con el valor de este atributo. fixed, el atributo tiene un valor fijo, expecificado por el valor de este atributo. use, se utiliza para indicar cómo aparecen los elementos dentro de los elementos descritos. Puede tomar los valores: o optional, el atributo tiene un valor opcional (uso predeterminado). o required, el atributo es obligatorio. o prohibited, no puede haber ningún atributo para el elemento con ese nombre. ref, hace referencia a un atributo declarado en otro lugar del esquema. o Si aparece no puede aparecer también el atributo ref. 53

Atributos (II) Los atributos se pueden declarar tanto en un elemento de contenido simple (sin elementos anidados), como complejo (con elementos anidados). Declaración en tipos complejos. La declaración se ubica dentro de la declaración de tipo complejo y después del modelo de contenido. <xs:element name="alumno" minoccurs="1" maxoccurs="unbounded"> <xs:complextype> <xs:sequence> <xs:element name="nombre_completo" minoccurs="1" maxoccurs="1"> <xs:complextype> <xs:sequence> <xs:element name="primer_apellido" type="xs:string" minoccurs="1" maxoccurs="1"/> <xs:element name="segundo_apellido" type="xs:string" minoccurs="0" maxoccurs="1"/> <xs:element name="nombre" type="xs:string" minoccurs="1" maxoccurs="1"/> </xs:sequence> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="expediente" type="xs:integer" use="required" /> </xs:complextype> </xs:element> 54

Atributos Declaración en elementos de contenido simple Los valores de los atributos no pueden contener elementos. Siempre se declaran de contenido simple. Un elemento de tipo simple, no puede contener atributos. Para declarar atributos en elementos de contenido simple hay que redefinir un elemento simple como complejo. Declarar el elemento sin tipo. o El tipo se dará en la redefinición. Definir un tipo complejo. o De esta forma ya puede contener atributos. Definir el contenido del tipo como contenido simple. o El elemento no puede tener subelementos. Definir el tipo del elemento como ampliación de algún tipo existente. o El atributo base, especifica el tipo del elemento. o El elemento xs:extension permite la redefinición. Permite añadir al tipo base uno o más atributos. Declarar el atributo dentro de la ampliación. 55

Atributos Declaración en elementos de contenido simple (II) Ejemplo: Declaración del elemento asignatura. El contenido es de tipo cadena. Contiene un atributo codigo de tipo entero. <xs:element name ="asignatura"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name ="codigo" type="xs:integer" use="required" /> </xs:extension> </xs:simplecontent> </xs:complextype> </xs:element> <asignatura codigo="315"> Análisis y Diseño de Sistemas de Información para Internet </asignatura> 56

Atributos Grupos de atributos Se pueden definir grupos de atributos para ser utilizados por múltiples elementos. Para definir un grupo de atributos se utiliza el elemento xs:attributegroup. t <xs:attributegroup name="nombregrupoatributos"> lista de declaraciones de atributos </xs:attributegroup> Para hacer referencia al grupo de atributos definido también se utiliza xs:attributegroup. El atributo ref permite hacer referencia al grupo de atributos previamente definido. <xs:attributegroup ref= "nombregrupoatributos" /> 57

Atributos Grupos de atributos (II) <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="linea"> <xs:complextype> <xs:sequence> <xs:element name="inicio"> <xs:complextype> <xs:attributegroup ref ="punto" /> </xs:complextype> </xs:element> <xs:element name="fin"> <xs:complextype> <xs:attributegroup ref ="punto" /> </xs:complextype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> <xs:attributegroup name="punto"> <xs:attribute name="x" type="xs:decimal" /> <xs:attribute name="y" type ="xs:decimal" /> </xs:attributegroup> </xs:schema> <?xml version="1.0" encoding="utf-8"?> <linea xmlns:xsi= http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation= "linea.xs"> <inicio x="34.56" y="18.45" /> <fin x="34.56" y="87.8" /> </linea> 58

Tipos de contenido Además de elementos que contienen información o elementos que contienen otros elementos, existen más tipos de contenido: Elementos vacíos. Elementos con contenido simple. Elementos con contenido mixto. Elementos con contenido de cualquier tipo. Elementos vacíos. No contienen ningún tipo de elemento. Su información se mantiene mediante atributos o por su posición respecto al resto de los elementos del documento. o Por ejemplo, la etiqueta <img /> de XHTML obtiene información mediante sus atributos, o la etiqueta <br /> por su posición. Para declarar elementos vacíos, simplemente no hay que asignarle ningún tipo. Ejemplo: los elementos inicio y fin del esquema anterior. <xs:element name="inicio"> <xs:complextype> <xs:attributegroup ref ="punto" /> </xs:complextype> </xs:element> 59

Tipos de contenido Contenido simple El elemento xs:simplecontent se utiliza para indicar que el elemento sólo puede tener contenido y no elementos. Aparece como hijo de un elemento xs:complextype. <xs:element name="primer primer_apellido apellido" minoccurs="1" maxoccurs="1"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string" /> </xs:simplecontent> t> </xs:complextype> </xs:element> Esta declaración no tiene mucho sentido. o Se podría declarar el elemento primer_apellido simplemente como un dato de tipo xs:string. <xs:element name="primer_apellido" minoccurs="1" maxoccurs="1" type=" xs:string" /> 60

Tipos de contenido Contenido simple (II) La utilidad de este elemento tiene otras dos funciones principales: i Especificar que el elemento simple va a tener atributos. <xs:element name ="asignatura"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name ="codigo" type="xs:integer" </xs:extension> </xs:simplecontent> </xs:complextype> </xs:element> use="required" /> Crear un nuevo tipo de dato simple, derivado de un dato primitivo. A estos tipos de datos derivados se les puede hacer referencia desde una declaración de elemento o de atributo dentro del esquema. 61

Tipos de contenido Contenido complejo y mixto Contenido complejo. El elemento xs:complexcontent indica que un tipo complejo está siendo derivado de otro tipo complejo. Aparece siempre dentro de un elemento xs:complextype. Contenido mixto. En un elemento xs:complextype el atributo mixed con el valor true permite incluir en el elemento tanto t texto t como otros elementos. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="carta"> <xs:complextype mixed="true"> <xs:choice minoccurs="0" maxoccurs ="unbounded"> <xs:element name="nombre" type="xs:string" /> <xs:element name="pedido" type="xs:integer" /> <xs:element name ="fecha" type="xs:date" /> </xs:choice> </xs:complextype> </xs:element> </xs:schema> <?xml version="1.0" encoding="utf-8"?> <carta xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="carta.xs"> Estimada <nombre>maría Jiménez</nombre>: El pedido cursado a su nombre con el número <pedido>12345</pedido> ha sido expedido con fecha de <fecha>2008-10-01</fecha>. </carta> 62

Anotaciones Los esquemas pueden incluir comentarios como cualquier otro documento XML. Problema: los analizadores no están obligados a conservar los comentarios, por lo que podrían eliminarlos. La especificación XML Schema incluye el elmento xs:annotation con este fin. El elemento xs:annotation se puede utilizar en dos niveles distintos: Documentación del esquema. Debe aparecer como primer elemento del esquema. Dentro de un elemento del esquema. La mayoría de los elementos del esquema admiten este elemento para ampliar su información. Contiene dos elementos hijo: xs:documentation. Puede incluir cualquier tipo de información (información sobre el copyright, versión, fecha de creación, etc.). xs:appinfo. También puede incluir cualquier tipo de información. Los creadores de XML la incluyeron para proporcionar información a las aplicaciones que lo manejen (por ejemplo, un texto de ayuda contextual). <xs:attribute name="expediente" type="xs:integer" use="required"> <xs:annotation> <xs:documentation>es un dato obligatorio del alumno</xs:documentation> <xs:appinfo>incluye información sobre el año y el centro</xs:appinfo> </xs:annotation> ti </xs:attribute> 63

Tipos simples derivados El elemento xs:simpletype se suele utilizar para derivar tipos simples. La derivación se puede hacer por distintos métodos: Restricción. o Indica que el tipo simple es una restricción de otro tipo de dato. Unión. o El tipo derivado es el resultado de la unión de varios tipos simples. Listas. o El contenido del tipo simple puede ser una lista de elementos separados por espacios en blanco. Utilización de tipos simples derivados. Es posible derivar un tipo simple dentro de un elemento xs:element. <xs:element name="nombreelemento"> <xs:simpletype> declaración del tipo simple </xs:simpletype> </xs:element> 64

Tipos simples derivados (II) También es posible realizar la declaración de un tipo de dato y utilizarlo en otro lugar del esquema. <xs:element name="nombreelemento" type="pre:nombretipodato" /> <!-- Fuera de la declaración del elemento raíz --> <xs:simpletype name="nombretipodato"> declaración del tipo simple </xs:simpletype> El elemento utiliza un prefijo para declarar el tipo. Esto es necesario ya que la declaración del nombretipodato está fuera del elemento raíz. En la declaración del esquema sería necesario asignar ese prefijo al espacio de nombres del esquema. <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="espacio de nombres" xmlns:pre="el mismo espacio de nombres"> 65

Derivación por restricción: facetas La derivación por restricción hace mediante el elemento xs:restriction. Hay que indicar el tipo de dato que restringe mediante el atributo base. <xs:restriction base="tipodato"> facetas de restricción <xs:restriction> Dentro del elemento xs:restriction se indicarán las facetas de las restricción. Una faceta es una propiedad que define la forma en que se restringe un rango de valores. Una restricción puede incluir varias as facetas. Las facetas pueden hacer: Restricción de longitud (xs:length, xs:minlength o xs:maxlength). Restricción por formato (xs:pattern). Restricción por enumeración (xs:enumeration). Restricción por espacios en blanco (xs:whitespace). Restricción por valor (xs:maxinclusive, xs:mininclusive, xs:maxexclusive, xs:minexclusive). Restricción por precisión (xs:totaldigits, xs:fractiondigits). 66

Derivación por restricción: facetas Facetas generales Enumeraciones. Restringe los posibles valores de un dato a una serie de elementos predefinidos. id Se puede aplicar a todos los tipos de datos, excepto a los de tipo boolean. <xs:simpletype name="estadocivil"> <xs:restriction base="xs:string" > <xs:enumeration value="soltero" /> <xs:enumeration value="casado" /> <xs:enumeration value="otros"/> </xs:restriction> </xs:simpletype> <xs:simpletype name="centro"> <xs:restriction base="xs:string"> <xs:enumeration value="facultad de Informática" /> <xs:enumeration value="escuela Universitaria de Informática" /> </xs:restriction> </xs:simpletype> 67

Derivación por restricción: facetas Facetas generales (II) whitespace. Determina el tratamiento que el procesador XML hará de los espacios en blanco dentro del contenido de un elemento. El atributo value, permite determinar el tratamiento. Puede tomar los valores: o preserve, conserva los espacios en blanco tal y como están en el documento origen (sin los espacios en blanco iniciales o finales. o replace, sustituye los caracteres de tabulación, avance de línea y retorno de carro por espacios en blanco. o collapse, realiza la conversión preserve para después comprimir los espacios en blanco restantes a un solo espacio. Se puede aplicar a cualquier tipo de datos. En los tipos de datos string se puede utilizar cualquier tratamiento. En los tipos de datos normalizedstring se podrá utilizar el tratamiento replace o collapse. En cualquier otro tipo de datos la faceta sólo podrá tomar el valor collapse. 68

Derivación por restricción: facetas Facetas generales (III) Restricción de formato. El elemento xs:pattern permite restringir i el contenido del elemento a partir de una expresión regular. Solo se admiten aquellos valores que concuerden con la expresión regular. Se puede aplicar a todos los elementos. Caracteres para las expresiones regulares Patrón Coincide con Ejemplo (ABC) Una cadena que coincide con ABC ABC A B C Una cadena que coincide con A o con B o con C B A?B Una cadena que coincide con A, cualquier carácter y B AxB, A1B, AB A*B Una cadena que coincide con A, 0 o más caracteres y B AxxxB, A123B, AB A+B Una cadena que coincide id con A, 1 o más caracteres y B AxxxB, A123B, AB A{2,3}x Una secuencia de entre 2 y 3 cadenas A, seguidas del carácter x AAx, AAAx A{5}x Una secuencia de 5 cadenas A seguidas de un carácter x AAAAAx A{3,}x Una secuencia de 3 o más cadenas A seguidas de un carácter x AAAx, AAAAAAAAx [abcde] Alguno de loa caracteres que aparecen entre corchetes a, c, e 69

Derivación por restricción: facetas Facetas generales (IV) Caracteres para las expresiones regulares. Patron Coincide con Ejemplo [a m]x Cualquier carácter entre la a y la m, seguido del carácter x ax, gx, hx [^abcd]x Cualquier carácter que no sea a, b, c, d seguido de una x hx,mx [a z [aeiou]] Cualquier carácter entre a la y la z, excepto las vocales b, g, h, z \s Un espacio en blanco, tabulación, retorno de carro o avance de línea \S Cualquier carácter excepto un espacio en blanco, tabulación, retorno de carro o avance de línea \d Un dígito decimal \D Cualquier carácter excepto un dígito decimal \w Cualquier carácter de una palabra (que no sea signo de puntuación, un separador o cualquier otro símbolo). \W Cualquier carácter excepto un carácter de una palabra (que no sea signo de puntuación, un separador o cualquier otro símbolo). \p{l} Una letra de cualquier lenguaje \p{lu} \p{ll} \p{n} \p{d} \p{p} \p{sc} Una letra mayúscula de cualquier lenguaje Una letra minúscula de cualquier lenguaje Un número (romano, fracciones, etc) Una dígito de cualquier lenguaje Un signo de puntuación Un símbolo monetario de cualquier lenguaje 70

Derivación por restricción: facetas Facetas generales (V) Restricción de contenido Ejemplo: El código de asignatura debe tener tres dígitos, el primero debe ser un dígito entre 1 y 5. <xs:simpletype name="tipocódigo"> <xs:restriction ti base="xs:string"> "> <xs:pattern value="[1-5]\d{2}" /> </xs:restriction> </xs:simpletype> Ejemplo: El expediente debe empezar por dos dígitos, el dígito 0 o 1 o tres dígitos. <xs:simpletype name="tipoexpediente"> ped e te <xs:restriction base="xs:string"> <xs:pattern value="\d{2}[1-2]\d{3}" /> </xs:restriction> </xs:simpletype> 71

Derivación por restricción: facetas Restricción de la longitud En datos de tipo cadena o derivados se puede limitar el número de caracteres: La faceta xs:length limita de forma exacta el número de caracteres del elemento.. El atributo value permite especificar el número de elementos. La faceta xs:minlength limita el número mínimo de caracteres. La faceta xs:maxlength limita el número máximo de caracteres. Ejemplo: el datos primer_apellido debe tener un máximo de 50 caracteres. <xs:element name="segundo_apellido" minoccurs="0" maxoccurs="1"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:maxlength value="50" /> </xs:restriction> </xs:simpletype> </xs:element> 72

Derivación por restricción: facetas Restricción de los valores máximo y mínimos En los valores numéricos, se pueden utilizar las siguientes facetas: minexclusive. maxexclusive. mininclusive. maxinclusive. El atributo value, especificará los valores máximos y mínimos. Ejemplo, limitar la calificación a valores entre 1 y 10. <xs:simpletype name="nota"> <xs:restriction base ="xs:decimal"> <xs:mininclusive value="0" /> <xs:maxinclusive value ="10" /> </xs:restriction> </xs:simpletype> 73

Derivación por restricción: facetas Restricción de la precisión En los valores numéricos, la faceta totaldigits determina el número total de dígitos. La faceta factiondigits determina el número de decimales del número. Ejemplo: Limitar la nota a dos decimales. <xs:simpletype name="nota"> <xs:restriction base ="xs:decimal"> <xs:mininclusive value="0" /> <xs:maxinclusive value ="10" /> <xs:fractiondigits value="2" /> </xs:restriction> </xs:simpletype> 74

Otros tipos derivados simples: Listas El elemento xs:list aparece dentro de un tipo simple. Indica que el contenido del elemento va a estar formado de una lista de elementos simples separados por espacios en blanco. El tipo de los elementos de la lista se indica por el atributo itemtype. Ejemplo, unas coordenadas de pueden dar de la forma "18.56N 28.16W 16W",, separados por espacios en blanco. <xs:simpletype name ="coordenadas"> <xs:list itemtype ="xs:string" /> </xs:simpletype> 75

Otros tipos derivados simples: Uniones El elemento xs:union aparece dentro de un tipo simple. Indica que el contenido del elemento simple va a estar formado un elemento que es la unión de uno o más tipos de elemento simples. Los tipos de los elementos se especifican en el atributo membertypes. Estará formado por una lista de tipos simples separados por comas. Ejemplo, el tratamiento para una persona. <xs:simpletype name="tratamientomasculino"> <xs:restriction base="xs:string"> <xs:enumeration value="sr." /> <xs:enumeration value ="D." /> </xs:restriction> </xs:simpletype> <xs:simpletype name="tratamientofemenino"> <xs:restriction base="xs:string"> <xs:enumeration value="sra." /> <xs:enumeration value ="Dña." /> <xs:enumeration value="sta." /> </xs:restriction> </xs:simpletype> <xs:element name="tratamiento" minoccurs="0"> <xs:simpletype> <xs:union membertypes ="ratamientofemenino tratamientomasculino" /> </xs:simpletype> </xs:element> 76

Tipos complejos derivados La derivación de tipos complejos (aquellos que contienen otros elementos) se realiza mediante el elemento xs:complexcontent. xs:complexcontent puede aparecer: Dentro de un elemento xs:complextype. o Cuando estamos definiendo un elemento. De forma independiente. o Cuando estamos definiendo un nuevo tipo de datos que utilizaremos en otro lugar. La derivación se puede hacer Por extensión. Elemento xs:extension, cuando el nuevo tipo de dato es resultado de ampliar un tipo de datos existente. Por restricción. Elemento xs:restriction, cuando el nuevo tipo de dato limita un tipo de datos existente. 77

Tipos complejos derivados Elemento xs:extension El elemento xs:extension se ha utilizado para añadir atributos a un tipo de contenido simple. <xs:extension base="xs:tipobase > <xs:attribute t name="nombreatributo" t " type="xs:tipobase ti " /> </xs:extension> Aplicada a otro tipo base, añade elementos a un tipo existente. Si se añade a un tipo base simple, añade atributos. Si se aplica a un tipo base complejo el nuevo tipo añade nuevos elementos o atributos. Los nuevos elementos aparecerán después de los del tipo base. Los elementos se tratarán como si estuvieran dentro de un elemento de tipo secuencia. 78

Tipos complejos derivados Elemento xs:extension (II) Ejemplo. En el tema 1 se definió un tipo persona persona primerapellido SegundoApellido nombre teléfono teléfono Se podría definir un tipo empleado que añadiera un los elementos sueldo y departamento. 79

Tipos complejos derivados Elemento xs:extension (III) Se declara como elemento de primer nivel el tipo de dato genérico. <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:complextype name="tipopersona"> <xs:sequence> <xs:element name="primerapellido" type="xs:string" /> <xs:element name="segundoapellido" type="xs:string" /> <xs:element name="nombre" type="xs:string" /> <xs:element name="telefonos"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" name="telefono"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:long"> <xs:attribute name="tipo" type="xs:string" use="required" /> </xs:extension> </xs:simplecontent> </xs:complextype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="dni" type="xs:string" use="required" /> </xs:complextype> 80

Tipos complejos derivados Elemento xs:extension (IV) Se declara el elemento agendaempresarial que puede tener varios elementos de tipo persona o empleado. El tipo empleado añade al tipo persona los elemento sueldo y departamento. Añade también el atributo fechacontrato. <xs:element name="agendaempresarial"> <xs:complextype> <xs:choice maxoccurs="unbounded"> <xs:element name="persona" type="tipopersona"/> <xs:element name="empleado"> <xs:complextype> <xs:complexcontent> <xs:extension base="tipopersona"> <xs:sequence> <xs:element name="sueldo" type="xs:decimal" /> <xs:element name="departamento" type="xs:string" /> </xs:sequence> <xs:attribute name="fechacontrato" type ="xs:date" use="required"/> </xs:extension> </xs:complexcontent> </xs:complextype> </xs:element> </xs:choice> </xs:complextype> </xs:element> </xs:schema> 81

Tipos complejos derivados Elemento xs:restriction El elemento xs:restriction se ha utilizado para incluir facetas en los tipos simples. Utilizado en un tipo complejo se puede utilizar para redefinir i un tipo complejo quitando elementos y/o atributos. Para restringir elementos es necesario definir de nuevo el tipo completo excepto los elementos que se desea eliminar. También es posible redefinir el tipo de los nuevos elemento simples utilizando facetas. Para restringir atributos, habrá que definirlos utilizando el valor prohibited en el atributo use. 82

Tipos complejos derivados Elemento xs:restriction (II) La restricción se puede hacer Estableciendo algún valor por omisión cuando antes no había. Estableciendo un valor fijo cuando antes no estaba establecido. Estableciendo algún tipo en algún elemento cuando antes no estaba establecido. Especificando un nuevo límite de cardinalidad. Excluyendo algún elemento (maxoccurs=0, O 0 minoccurs=0). Estableciendo algún límite máximo, en lugar de unbounded. Eliminando atributos que estaban presentes en el tipo inicial. 83

Tipos complejos derivados Elemento e xs:restriction (III) Ejemplo <xs:complextype name="impresora" > <xs:sequence> <xs:element name="resolucion"/> <xs:element name="trabajosimpresos" minoccurs="0" /> </xs:sequence> <xs:attribute name="calidadmaxima" type="xs:decimal" /> </xs:complextype> <xs:complextype name="impresoraespecial" > <xs:complexcontent> <xs:restriction base="impresoras" > <xs:sequence> <xs:element name="resolucion"/> </xs:sequence> <xs:attribute name="calidadmaxima" use="prohibited" /> </xs:restriction> </xs:complexcontent> </xs:complextype> Al tipo Impresora, el tipo ImpresoraEspecial Elimina el elemento trabajosimpresos. Elimina el atributo calidadmaxima. 84

Tipos complejos derivados Elemento e xs:restriction (IV) Ejemplo <xs:complextype name="trabajosimpresos" > <xs:simplecontent> <xs:extension base="integer"> <xs:attribute name="numero"/> </xs:extension> </xs:simplecontent> </xs:complextype> <xs:complextype name="trabajosimpresosrestringidos" > <xs:simplecontent> <xs:restriction base="trabajosimpresos" > <xs:mininclusive value="0"/> <xs:maxinclusive value="1500"/> <xs:attribute name="numero" use="prohibited" /> </xs:restriction> </xs:complexcontent> </xs:complextype> Al tipo TrabajosImpresos, el tipo TrabajosImpresosRestringidos Limita los valores mínimos y máximos entre 0 y 1500 Elimina el atributo número. 85

Exclusividad y claves El elemento xs:unique obliga a que el valor de un elemento o atributo sea único dentro de un conjunto de elementos. Para construir esta restricción Se utiliza una expresión de XPath para indicar el conjunto de elementos dónde se aplica esa restricción. xs:selector xpath="expresiónxpath", indica una expresión de XPath que haga referencia al elemento dónde se establece la restricción. Se definen los valores de los elementos y atributos únicos. xs:field xpath="expresiónxpath", indica en una expresión XPath el elemento o atributo que será único. Por ejemplo, dentro del elemento alumno se define un elemento único <xs:unique name ="clavealumno"> <xs:selector xpath ="uni:alumnos" /> <xs:field xpath ="uni:expediente" /> </xs:unique> 86

Exclusividad y claves El elemento xs:key indica la clave única de un elemento. La diferencia con xs:unique es que todos los elementos seleccionados deben tener el elemento o atributo xs:key, mientras que no es necesario que todos tengan el elemento definido como xs:unique. El elemento xs:keyref indica en un elemento que debe hacer referencia a algún elemento xs:key del esquema. Ambas se definen con las mismas expresiones que xs:unique. 87

Ejercicios Realizar un esquema xml y un documento de instancia para almacenar recetas de cocina. Cada receta tendrá: Identificador de la receta. Número de comensales. Dificultad. Precio aproximado por comensal. Tiempo estimado. o De preparación o De cocción. Instrucciones (en formato html) Ingredientes. o Nombre ingrediente o Unidades o peso (el ingrediente puede venir en unidades, gramos, kilos, litros, centímetros cúbicos, etc.) o Observaciones 88

Ejercicios (II) Diseñe un esquema para almacenar información de una serie de equipos y jugadores de una liga. Cada equipo contiene información sobre: Identificador del equipo Nombre del equipo Nombre del entrenador o Una persona con los datos DNI, y su nombre completo (apellidos, nombre). o Además contiene un elemento con su número de licencia de entrenador. Jugadores. o Una lista de elementos con los DNI de los jugadores. Cada jugador contiene Identificador del equipo dónde juega. Dorsal. Nombre del jugador. o Una persona con su DNI y nombre completo. Diseñe también un documento de instancia para que cumpla los requisitos del esquema. 89