XML Schemas - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

XML Schemas

Description:

... largo que un DTD pero a cambio: Mayor precisi n en la definici n de ... S lo puede contener texto (cualquier tipo de dato) pero no otros elementos ni atributos ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 46
Provided by: Min142
Category:
Tags: xml | cambio | de | schemas | tipo

less

Transcript and Presenter's Notes

Title: XML Schemas


1
XML Schemas
  • LENGUAJES PARA INTERNET
  • 2006
  • María Rodríguez Fernández

2
XML Schemas
  • Schemas permiten
  • Describir estructura
  • Anidación
  • Multiplicidad
  • Ordenamiento
  • Describir tipos
  • Para velocidad operatoria
  • Para mejor almacenamiento
  • Para búsquedas
  • Para ingreso de datos
  • Para detectar errores
  • Representados en archivos .XSD

3
Ejemplo 1 XML Schema
lt?XML version"1.0"gt ltlibro isbn"123456"gt lttít
ulogtEl Alephlt/títulogt ltautorgtJ. L.
Borgeslt/autorgt ltañogt1946lt/añogt ltpreciogt1560lt/p
reciogt lt/librogt
  • El DTD correspondiente es

lt!ELEMENT libro (título, autor, año?,
precio)gtlt!ELEMENT título (PCDATA)gtlt!ELEMENT
autor (PCDATA)gtlt!ELEMENT año (PCDATA)gt (entero
positivo, mayor de 1900)lt!ELEMENT precio
(PCDATA)gt (non-negative integer)lt!ATTLIST libro
isbn ID REQUIREDgt
4
ltschema targetNamespace'http//www.ac.upc.es/aad/
libro' xmlns'http//www.w3.org/2001/XMLSchema'gt
ltsimpleType name'linea'gt ltrestriction
base'string'gt ltmaxLength value'50'/gt
lt/restrictiongt lt/simpleTypegt ltsimpleType
name'sigloXX'gt ltrestriction base'integer'gt
ltminInclusive value'1900'/gt ltmaxInclusive
value'1999'/gt lt/restrictiongt lt/simpleTypegt ltel
ement name'libro' type'TipoLibro'/gt ltcomplexTyp
e name'TipoLibro'gt ltsequencegt ltelement
name'titulo' type'linea'/gt ltelement
name'autor' type'linea'/gt ltelement
name'anyo' type'sigloXX'/gt ltelement
name'precio' type'decimal'gt
ltcomplexTypegt ltattribute name'divisa'
type'string'/gt lt/complexTypegt
lt/elementgt lt/sequencegt ltattribute name'isbn'
type'ID'/gt lt/complexTypegt lt/schemagt
Espacio de nombres
Raiz
5
Ventajas de los Schemas
  • Utilizan una cantidad mayor de tipos de dato
  • Son extensibles
  • Están escritos en XML
  • Resulta más largo que un DTD pero a cambio
  • Mayor precisión en la definición de tipos de
    datos
  • ltdate typedategt1999-03-11lt/dategt
  • 11 de marzo o 3 de noviembre?
  • La exportación e importación de datos en formato
    xml más sencilla para cualquiera que use un
    procesador de documentos xml que previamente
    valide el documento contra un esquema

6
De DTD a Schema
lt!ELEMENT address (company?,
name, street, city, state, zip,
phone)gt lt!ELEMENT company
(PCDATA)gt lt!ELEMENT name (PCDATA)gt lt!ELEMENT
street (PCDATA)gt lt!ELEMENT city (PCDATA)gt lt!ELEM
ENT state (PCDATA)gt lt!ELEMENT zip (PCDATA)gt lt!EL
EMENT phone (PCDATA)gt
schema en XML
ltelementType name"address" gt ltsequencegt
ltelementType name"company" minOccur"0"
maxOccur "1"/gt ltelementType name"name"
minOccur"1" maxOccur "1"/gt
ltelementType name"street" minOccur"1"
maxOccur "1"/gt ltelementType name"city"
minOccur"1" maxOccur "1"/gt
ltelementType name"state" minOccur"1"
maxOccur "1"/gt ltelementType name"zip"
minOccur"1" maxOccur "1"/gt
ltelementType name"phone" minOccur"1"
maxOccur "5"/gt ltsequencegt lt/elementTypegt
7
Reglas
minOccurrs0 maxOcurrsunbounded
minOccurrs1 maxOcurrsunbounded ? minOccurrs0
maxOcurrs1 , xsdsequence xsdchoice X
xsdelement
8
Vincular un Schema a un documento XML
  • ltdoc
  • xmlns"http//www.w3schools.com"
  • xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
    ce"
  • xsischemaLocation"http//www.w3schools.com
    note.xsdgt

9
Contenido básico del schema
  • El espacio de nombres del XMLSchema es usualmente
    xsd
  • ltxsdschema xmlnsxsd"http//www.w3.org/2001/XM
    LSchema"gt
  • Schema es el elemento raíz del documento

10
Definir un elemento simple
  • Sólo puede contener texto (cualquier tipo de
    dato) pero no otros elementos ni atributos
  • Se define como
  • ltxselement name"name" type"type"
    /gtdonde
  • name es el nombre del elemento
  • Los valores más comunes de tipos de datos (type)
    son xsboolean xsinteger
    xsdate xsstring xsdecimal xstime
  • Otros atributos
  • default"default value" si no se especifica
    otro valor
  • fixed"value" no se puede especificar otro valor
  • Ejemplo ltxsdelement name"apellido"
    type"xsdstring"/gt

11
Definir un atributo
  • Los atributos se declaran
  • ltxsattribute name"name" type"type"
    /gtDonde
  • name y type es igual que en xselement
  • Otros atributos
  • default"default value" si no se especifica
    otro valor
  • fixed"value" no se puede especificar otro
    valor
  • use"optional" el atributo no es
    obligatorio (por defecto)
  • use"required" el atributo debe estar
    presente
  • Ejemplo ltxsdattribute nameidioma"
    type"xsdstring"/gt

12
Guión de prácticas
  • http//petra.euitio.uniovi.es/mariarf

13
Definición de tipos
  • De los tipos básicos pueden derivarse nuevos
    tipos, simples o complejos.
  • Los tipos simples contienen texto y se definen
    mediante xsdsimpleType
  • ltxsdelement namenombre typexsdstring/gt
  • ltxsdattribute nameidentificacion
    typexsdID/gt
  • y los complejos Pueden contener cualquier
    combinación de contenido de elementos ,
    información de caracteres y atributos y se
    definen con xsdcomplexType

14
(No Transcript)
15
Restricciones
  • Permiten restringir el valor que se le puede dar
    a un elemento o atributo XML.
  • Tipos
  • Sobre valores
  • Sobre un conjunto de valores
  • Sobre series de valores
  • Sobre espacios en blanco

16
Restricciones sobre valores
  • La forma general de establecer una restricción
    sobre un valor es
  • ltxselement name"name"gt (o xsattribute)
    ltxsrestriction base"type"gt ... Las
    restricciones ... lt/xsrestrictiongtlt/xselem
    entgt
  • Por ejemplo
  • ltxselement nameedad"gt ltxsrestriction
    base"xsinteger"gt ltxsminInclusive
    value"0"gt ltxsmaxInclusive
    value"140"gt lt/xsrestrictiongtlt/xselementgt

17
Restricciones sobre un conjunto de valores
Enumeration
  • Restringe el valor a un conjunto de valores
  • Ejemplo
  • ltxselement nameestacion"gt
    ltxssimpleTypegt ltxsrestriction
    base"xsstring"gt ltxsenumeration
    valueprimavera"/gt
    ltxsenumeration valueverano"/gt
    ltxsenumeration valueotoño"/gt
    ltxsenumeration valueinvierno"/gt
    lt/xsrestrictiongt lt/xssimpleTypegtlt/xseleme
    ntgt

18
Restricciones sobre series de valores
  • Para limitar el contenido del elemento xml
    definiendo las series de números y letras que se
    pueden usar usaremos patrones

ltxselement name"letra"gt ltxssimpleTypegt
ltxsrestriction base"xsstring"gt ltxspattern
value"a-z"/gt lt/xsrestrictiongt lt/xssimpleTyp
egt lt/xselementgt
19
Restricciones sobre espacios en blanco
  • whiteSpace dice lo que hay que hacer con los
    espacios en blanco
  • value"preserve" Mantiene los espacios en
    blanco como están
  • value"replace" Campia los espacios en
    blanco (saltos, tab)por espacios
  • value"collapse" Reemplaza todas las
    secuencias de espacios en blanco por un sólo
    espacio en blanco

20
Restricciones en números
  • minInclusive número debe ser value
  • minExclusive -- número debe ser gt value
  • maxInclusive -- número debe ser value
  • maxExclusive -- número debe ser lt value
  • totalDigits -- número debe tener exactamente
    value dígitos
  • fractionDigits número no debe tener más de
    value dígitos después del punto decimal.

21
Restricciones en strings
  • length el string debe contener exactamente
    value caracteres
  • minLength el string debe contener al menos
    value caracteres
  • maxLength el string no debe contener más de
    value caracteres
  • pattern el value es una expresión regular que
    el string debe cumplir

22
Elementos complejos
  • Elementos que contienen otros elementos hijo o
    que tienen atributos.
  • Se suelen dividir en 4 tipos
  • Elementos vacíos
  • Elementos no vacíos con atributos
  • Elementos con elementos hijos
  • Elementos con elementos hijos y con texto o
    valor propio

23
Ejemplos de elementos complejos
ltproduct pid"1345"/gt
ltcomida tipopostregtheladolt/comidagt
ltdescripciongtSucedió el ltdategt03.03.99lt/dategtlt/des
cripciongt
ltempleadogt ltnombregtManuellt/nombregt ltapellidosgtSuar
ezlt/apellidosgt lt/empleadogt
24
Sintaxis
  • Se definen como ltxselement name"name"gt
    ltxscomplexTypegt ...
    lt/xscomplexTypegt lt/xselementgt
  • Ejemplo

ltxsdelement name"empleado"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement name"nombre" type"xsdstring"/gt
ltxsdelement name"apellidos"
type"xsdstring"/gt lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
25
Segunda versión
  • También podremos usar la siguiente sintaxis si
    queremos usar el tipo en más de un elemento

ltxsdelement name"empleado" type"personainfo"/gt
ltxsdelement name"estudiante" type"personainfo"/
gt ltxsdelement name"miembro" type"personainfo"/gt
ltxsdcomplexType name"personainfo"gt
ltxsdsequencegt ltxsdelement
name"nombre" type"xsdstring"/gt
ltxsdelement name"apellido" type"xsdstring"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt
26
Extensión y derivación
  • Un tipo complejo puede estar basado en otro tipo
    complejo
  • ltxscomplexType name"newType"gt
    ltxscomplexContentgt ltxsextension
    base"otherType"gt ...cosas
    nuevas... lt/xsextensiongt
    lt/xscomplexContentgtlt/xscomplexTypegt

27
Ejemplo de extensión
  • Definir un tipo complejo que se adapte a la
    dirección postal para Estados Unidos, asumiendo
    que ya hay definido un tipo Dirección
  • ltxscomplexType nameUSADireccion"gtltxscomplexC
    ontentgt ltxsextension basetipoDireccion"gt
    ltsequencegt
  • ltelement nameestado
    typeUSAEstado/gt ltelement
    namecodigopostal typepositiveInteger/gt
  • lt/sequencegt lt/xsextensiongtlt/xscom
    plexContentgt
  • lt/xscomplexTypegt

28
Herencia
ltxsdelement name"empleado" type"fullpersonainfo
"/gt ltxsdcomplexType name"personainfo"gt
ltxsdsequencegt ltxsdelement name"nombre"
type"xsdstring"/gt ltxsdelement
name"apellido" type"xsdstring"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt ltxsdcomplexTyp
e name"fullpersonainfo"gt ltxsdcomplexContentgt
ltxsdextension base"personainfo"gt
ltxsdsequencegt ltxsdelement
name"direccion" type"xsdstring"/gt
ltxsdelement name"ciudad" type"xsdstring"/gt
ltxsdelement name"pais" type"xsdstring"/gt
lt/xsdsequencegt lt/xsdextensiongt
lt/xsdcomplexContentgt lt/xsdcomplexTypegt
29
Elementos vacíos con atributos
  • Los elementos vacíos son complejos

ltxsdelement name"producto"gt
ltxsdcomplexTypegt ltxsdattribute
name"prodid" type"xsdpositiveInteger"/gt
lt/xsdcomplexTypegt lt/xsdelementgt
30
Elementos de texto con atributos
  • ltxsdelement name"shoesize"gt
  • ltxsdcomplexTypegt
  • ltxsdsimpleContentgt
  • ltxsdextension base"xsdinteger"gt
  • ltxsdattribute name"country"
    type"xsdstring" /gt lt/xsdextensiongt
  • lt/xsdsimpleContentgt
  • lt/xsdcomplexTypegt
  • lt/xsdelementgt

31
Elementos mixtos
  • Pueden contener texto y elementos
  • Se añade mixed"true" al elemento xscomplexType
  • El texto no se menciona en el elemento y puede ir
    en cualquier sitio (básicamente se ignora)
  • ltxscomplexType name"paragraph" mixed"true"gt
    ltxssequencegt ltxselement
    name"someName
    type"xsanyType"/gt lt/xssequencegtlt/xscomple
    xTypegt

32
Indicadores
  • De Orden
  • En un determinado orden o secuencia sequence
  • Pudiendo el autor del documento escoger alguno de
    los elementos del grupo choice
  • Dar al autor total libertad tanto respecto al
    orden como a la selección de elementos all
  • De ocurrencias cardinalidades

33
xssequence
  • Elementos que contienen elementos
  • ltxsdelement name"persona"gt
    ltxsdcomplexTypegt ltxsdsequencegt
    ltxsdelement name " nombre" type"xsdstring"
    /gt ltxsdelement name " apellido"
    type"xsdstring" /gt lt/xsdsequencegt
    lt/xsdcomplexTypegtlt/xsdelementgt

34
xschoice
  • Elementos que contienen alternativa de elementos
  • ltxselement nametransporte"gt
  • ltxscomplexTypegt ltxschoicegt
    ltxselement name " tren" type"xsstring" /gt
    ltxselement name " avion" type"xsstring"
    /gt
  • ltxselement name " coche"
    type"xsstring" /gt lt/xschoicegtlt/xscomplexTypegt
  • lt/xselementgt

35
xsall
  • xsall permite a los elementos aparecer en
    cualquier orden
  • ltxsdelement name"person"gt ltxsdcomplexTypegt
    ltxsdallgt ltxsdelement name "nombre"
    type"xsdstring" /gt ltxsdelement name
    "apellidos" type"xsdstring" /gt
    lt/xsdallgt lt/xsdcomplexTypegtlt/xsdelementgt

36
Cardinalidades
  • minOccurs y maxOccurs
  • Se utilizan para indicar el número máximo y
    mínimo de veces que puede aparecer un elemento
    hijo de un elemento complejo
  • minOccurs0 Opcionalidad
  • maxOccurs unbounded no existe valor límite

37
Ejercicio
  • Transforma el modelo de contenido
  • (a(b, c?))
  • en una definición mediante XMLSchema

38
Solución
  • ltcomplexTypegt
  • ltchoice minOccurs0 maxOccursunboundedgt
  • ltelement refa/gt
  • ltsequencegt
  • ltelement refb/gt
  • ltelement refc minOccurs0
    maxOccurs1/gt
  • lt/sequencegt
  • lt/choicegt
  • lt/complexTypegt

39
Completar el documento Esquema
  • Generalización de comentarios
  • annotation mecanismo para documentar los
    componentes de un esquema, haciendo una función
    similar a los comentarios
  • appinfo proporciona información a otras
    aplicaciones, lo que supone un procesamiento
    externo al propio documento
  • documentation texto o referencia a texto dentro
    del elemento annotation

40
Ejemplo
  • ltxsdcomplexType nombreelementogt
  • ltxsdannotationgt
  • ltxsddocumentationgteste elemento es ..
    lt/xsddocumentationgt
  • lt/xsdannotationgt
  • lt/xsdcomplexTypegt

41
Primitivas de un Schema
  • schema es el elemento root.
  • annotation pone comentarios al complexType.
    Primitivas appinfo y documentation.
  • complexType equivalente a una combinación de
    atributos y la lista de elementos que están entre
    paréntesis en una declaración de una DTD.
  • elementdefine un elemento y utiliza ciertos
    atributos adicionales.
  • Type attribute asocia un tipo simple o complejo
    a un elemento.
  • minOcurrs y maxOcurrs especifica la cantidad
    máxima y mínima que un elemento ocurre.

42
Primitivas de un Schema (2)
  • attribute elemento hijo de un complexType o de
    un attributeGroup. Tienen un scope local.
  • group Element permite agrupar elementos de la
    misma forma que se hacia con paréntesis en los
    DTDs.
  • choice, sequence all Elements

43
Ya no necesitamos DTDs?
  • Schemas no proporcionan la funcionalidad ENTITY
  • Incluidos en la especificación XML (otras
    sintaxis requieren ir en fichero aparte)

44
Referencias
  • Recomendación XML Schemas
  • Introducción a los conceptos http//www.w3.org/TR
    /xmlschema-0/
  • Estructuras http//www.w3.org/TR/xmlschema-1/
  • Tipos de datos http//www.w3.org/TR/xmlschema-2/.
  • Validador de XML Schemas
  • http//www.w3.org/2001/03/webdata/xsv

45
Alguna pregunta?
Write a Comment
User Comments (0)
About PowerShow.com