Title: XML Schema (XSD)
1XML Schema (XSD)
2XML Schema Introducción
- Un archivo XML Schema
- Define los elementos que pueden aparecer en un
documento - Define los atributos que pueden aparecer en un
documento - Defines que elementos son elementos hijos en la
jerarquÃa - Define el orden de los elementos hijos
- Define la cantidad de elementos hijos
- Define si un elemento es vacÃo (empty) o puede
incluir texto - Define los tipos de datos para los elementos y
los atributos - Define los valores por default y fijos para los
elementos y los atributos
3XML Schema Introducción
- XML Schemas son extensibles a futuras adiciones
- XML Schemas son más ricos y poderosos que los
DTDs - XML Schemas están escritos de acuerdo a la
sintaxis XML - XML Schemas soportan tipos de datos
- XML Schemas soportan namespaces
4Esquema XML (XML Schema)
- Soportado por W3C (http//www.w3.org/XML/Schema)
- XML Schema was approved as a W3C Recommendation
on 2 May 2001 and a second edition incorporating
many errata was published on 28 October 2004
5XML Schema Introducción
- Con el soporte de tipos de datos
- Es fácil describir el contenido del documento que
es permisible - Es fácil validar si los datos son correctos
- Es fácil trabajar con datos provenientes de una
base de datos - Es fácil definir restricciones en los datos
(facetas) - Es fácil definir patrones de datos (formato de
los datos) - Es fácil convertir datos entre diferentes tipos
6XML Schema Introducción
- Beneficios de que XML Schema se escriba en XML
- No es necesario aprender un nuevo lenguaje
- Se puede usar el mismo editor de XML
- Se puede usar el mismo parser de XML para
verificar la sintaxis de los archivos XML Schema - Se puede manipular cada esquema usando XML DOM
- Se puede transformar el esquema con XSLT
7XML Schema Comunicación segura de datos
- Suponga la siguiente fecha "03-11-2004
- 3 de Noviembre del 2004 o 11de Marzo de 2004?
- Un elemento XML con el tipo de dato siguiente
- ltdate type"date"gt2004-03-11lt/dategt
- Asegura el entendimiento del contenido entre
aplicaciones, debido a que el tipo de dato XML
conocido como date requiere el formato
"YYYY-MM-DD".
8De DTD a XML Schema
- lt?xml version"1.0"?gtltnotegt lttogtTovelt/togtÂ
ltfromgtJanilt/fromgt ltheadinggtReminderlt/headinggtÂ
ltbodygtTo write Tove!lt/bodygtlt/notegt
- lt!ELEMENT note (to, from, heading,
body)gtlt!ELEMENT to (PCDATA)gtlt!ELEMENT from
(PCDATA)gtlt!ELEMENT heading (PCDATA)gtlt!ELEMENT
body (PCDATA)gt
lt?xml version"1.0"?gtltxsschema
xmlnsxs"http//www.w3.org/2001/XMLSchema"target
Namespace"http//www.mysite.com"xmlns"http//ww
w.mysite.com"elementFormDefault"qualified"gtltxs
element name"note"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"to"
type"xsstring"/gt     ltxselement name"from"
type"xsstring"/gt     ltxselement
name"heading" type"xsstring"/gt    Â
ltxselement name"body" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
lt/xsschemagt
9Referencia al archivo de definición
- lt?xml version"1.0"?gtlt!DOCTYPE note
SYSTEM"http//www.mysite.com/dtd/note.dtd"gtltnot
egt lttogtTovelt/togt ltfromgtJanilt/fromgtÂ
ltheadinggtReminderlt/headinggt ltbodygtDon't forget
me this weekend!lt/bodygtlt/notegt
- lt?xml version"1.0"?gtltnotexmlns"http//www.mys
ite.com"xmlnsxsi"http//www.w3.org/2001/XMLSche
ma-instance"xsischemaLocation"http//www.mysite
.com note.xsd"gt lttogtTovelt/togtÂ
ltfromgtJanilt/fromgt ltheadinggtReminderlt/headinggtÂ
ltbodygtDon't forget me this weekend!lt/bodygtlt/notegt
10Declaración en el esquema
Prefijo
Elementos y tipos del esquema vienen de
www.w3.org/...
Elementos definidos (to, from, ) vienen de
www.mysite.com
- lt?xml version"1.0"?gtltxsschema
xmlnsxs"http//www.w3.org/2001/XMLSchema"target
Namespace"http//www.mysite.com"xmlns"http//ww
w.mysite.com"elementFormDefault"qualified"gt...
...lt/xsschemagt
Elemento raÃz
Namespace por default
Namespace qualified
11Referencia al XML Schema
Los elementos usados están declarados en este
namespace
- lt?xml version"1.0"?gtltnote
- xmlns"http//www.mysite.com"
- xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
ce" - xsischemaLocation"http//www.mysite.com
note.xsd"gt -  lttogtTovelt/togt ltfromgtJanilt/fromgtÂ
ltheadinggtReminderlt/headinggt ltbodygtDon't forget
me this weekend!lt/bodygt - lt/notegt
Namespace de la instancia del XML Schema
Namespace
Nombre y ubicación del XML Schema
12Elementos simples
- No puede contener otros elementos o atributos
- Puede contener únicamente texto
- Tipos incluidos en la definición XML Schema
(boolean, string, date, etc.), o - Un tipo personalizado que el usuario puede definir
13Sintaxis de los elementos simples
- ltxselement name"xxx" type"yyy"/gt
- Tipos más comunes
- xsstring
- xsdecimal
- xsinteger
- xsboolean
- xsdate
- xstime
14Elementos simples Ejemplo
- ltlastnamegtAguilarlt/lastnamegtltagegt36lt/agegtltdatebo
rngt1970-03-27lt/dateborngt
- ltxselement name"lastname" type"xsstring"/gtltxs
element name"age" type"xsinteger"/gtltxselemen
t name"dateborn" type"xsdate"/gt
Definición
15Valores default y fijo
- ltxselement name"color" type"xsstring"
default"red"/gt - ltxselement name"color" type"xsstring"
fixed"red"/gt
- ltxselement name"lastname" type"xsstring"/gtltxs
element name"age" type"xsinteger"/gtltxselemen
t name"dateborn" type"xsdate"/gt
Definición
16Sintaxis de los Atributos
- ltxsattribute name"xxx" type"yyy"/gt
- Tipos más comunes
- xsstring
- xsdecimal
- xsinteger
- xsboolean
- xsdate
- xstime
17Atributos Ejemplo
- Uso
- ltlastname lang"EN"gtSmithlt/lastnamegt
- Definición
- ltxsattribute name"lang" type"xsstring"/gt
- ltxsattribute name"lang" type"xsstring"
default"EN"/gt - ltxsattribute name"lang" type"xsstring"
fixed"EN"/gt - ltxsattribute name"lang" type"xsstring"
use"required"/gt
Default, fixed, optional/required
18XSD Restricciones o facetas
- Las restricciones son usadas para definir valores
aceptables para los elementos o atributos XML.
Estas restricciones se llaman facetas. - Restringiendo valores
- ltxselement name"age"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsinteger"gt    Â
ltxsminInclusive value"0"/gt    Â
ltxsmaxInclusive value"120"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
19XSD Restricciones en los tipos de datos
20XSD Restricciones en un conjunto de valores
- ltxselement name"car"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxsenumeration value"Audi"/gt    Â
ltxsenumeration value"Golf"/gt    Â
ltxsenumeration value"BMW"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
- ltxselement name"car" type"carType"/gtltxssimpl
eType name"carType"gt ltxsrestriction
base"xsstring"gt   ltxsenumeration
value"Audi"/gt   ltxsenumeration
value"Golf"/gt   ltxsenumeration
value"BMW"/gt lt/xsrestrictiongtlt/xssimpleTypegt
21XSD Restricciones en una serie de valores
- ltxselement name"letter"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"a-z"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
- ltxselement name"initials"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"A-ZA-ZA-Z"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
22XSD Restricciones en una serie de valores
- ltxselement name"initials"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"a-zA-Za-zA-Za-zA-Z"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselement
gt
- ltxselement name"choice"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"xyz"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
23XSD Restricciones en una serie de valores
- ltxselement name"prodid"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsinteger"gt    Â
ltxspattern value"0-90-90-90-90-9"/gt Â
 lt/xsrestrictiongt lt/xssimpleTypegtlt/xselemen
tgt
- ltxselement name"letter"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"(a-z)"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
24XSD Restricciones en una serie de valores
- ltxselement name"letter"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"(a-zA-Z)"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
- ltxselement name"gender"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"malefemale"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
25XSD Restricciones en una serie de valores
- ltxselement name"password"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"a-zA-Z8"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
- ltxselement name"password"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxspattern value"a-zA-Z0-98"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
26XSD Restricciones sobre los caracteres de espacio
- ltxselement name"address"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxswhiteSpace value"preserve"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
- ltxselement name"address"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxswhiteSpace value"replace"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
27XSD Restricciones sobre los caracteres de espacio
- ltxselement name"address"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxswhiteSpace value"collapse"/gt  Â
lt/xsrestrictiongt lt/xssimpleTypegtlt/xselementgt
- El procesador XML removerá los espacios en blanco
redundantes (saltos de lÃnea, tabuladores,
espacios son reemplazados con espacios espacios
en blanco antes y después de cada lÃnea son
removidos múltiples espacios en blanco son
reducidos a un solo espacio en blanco)
28XSD Restricciones sobre la longitud
- ltxselement name"password"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxslength value"8"/gt   lt/xsrestrictiongtÂ
lt/xssimpleTypegtlt/xselementgt
- ltxselement name"password"gt ltxssimpleTypegt  Â
ltxsrestriction base"xsstring"gt    Â
ltxsminLength value"5"/gt     ltxsmaxLength
value"8"/gt   lt/xsrestrictiongtÂ
lt/xssimpleTypegtlt/xselementgt
29XSD Elementos complejos
- Un elemento complejo es un elemento XML que
contiene otros elementos y/o atributos. - Existen cuatro tipos de elementos complejos
- Elementos vacÃos
- Elementos que contienen solamente otros elementos
- Elementos que contienen solamente texto
- Elementos que contienen tanto otros elementos
como texto
30XSD Tipos de elementos complejos
ltproduct pid"1345"/gt
ltemployeegt ltfirstnamegtJohnlt/firstnamegtÂ
ltlastnamegtSmithlt/lastnamegtlt/employeegt
ltfood type"dessert"gtIce creamlt/foodgt
ltdescriptiongtIt happened on ltdate
lang"norwegian"gt03.03.99lt/dategt
....lt/descriptiongt
31XSD Definición de un elemento complejo
- ltemployeegt ltfirstnamegtJohnlt/firstnamegtÂ
ltlastnamegtSmithlt/lastnamegtlt/employeegt
- ltxselement name"employee"gt ltxscomplexTypegt Â
 ltxssequencegt     ltxselement
name"firstname" type"xsstring"/gt    Â
ltxselement name"lastname" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
Definición
32XSD Definición de un elemento complejo
- ltemployeegt ltfirstnamegtJohnlt/firstnamegtÂ
ltlastnamegtSmithlt/lastnamegtlt/employeegt
- ltxselement name"employee" type"personinfo"/gtlt
xscomplexType name"personinfo"gtÂ
ltxssequencegt   ltxselement name"firstname"
type"xsstring"/gt   ltxselement
name"lastname" type"xsstring"/gtÂ
lt/xssequencegtlt/xscomplexTypegt
Definición
33XSD Definición de un elemento complejo
- ltxselement name"employee" type"fullpersoninfo"/
gtltxscomplexType name"personinfo"gtÂ
ltxssequencegt   ltxselement name"firstname"
type"xsstring"/gt   ltxselement
name"lastname" type"xsstring"/gtÂ
lt/xssequencegtlt/xscomplexTypegtltxscomplexType
name"fullpersoninfo"gt ltxscomplexContentgt  Â
ltxsextension base"personinfo"gt    Â
ltxssequencegt       ltxselement name"address"
type"xsstring"/gt       ltxselement
name"city" type"xsstring"/gt      Â
ltxselement name"country" type"xsstring"/gt   Â
 lt/xssequencegt   lt/xsextensiongtÂ
lt/xscomplexContentgtlt/xscomplexTypegt
Definición
34XSD Definición de un elemento complejo
- ltemployeegt ltfirstnamegtJohnlt/firstnamegtÂ
ltlastnamegtSmithlt/lastnamegtlt/employeegt
- ltxselement name"employee"gt ltxscomplexTypegt Â
 ltxssequencegt     ltxselement
name"firstname" type"xsstring"/gt    Â
ltxselement name"lastname" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
Definición
35XSD Elementos complejos vacÃos
- ltproduct prodid"1345" /gt
- ltxselement name"product"gt ltxscomplexTypegt  Â
ltxscomplexContentgt     ltxsrestriction
base"xsinteger"gt       ltxsattribute
name"prodid" type"xspositiveInteger"/gt    Â
lt/xsrestrictiongt   lt/xscomplexContentgtÂ
lt/xscomplexTypegtlt/xselementgt
Definición
ltxselement name"product"gt ltxscomplexTypegt  Â
ltxsattribute name"prodid" type"xspositiveInte
ger"/gt lt/xscomplexTypegtlt/xselementgt
ltxselement name"product" type"prodtype"/gtltxs
complexType name"prodtype"gt ltxsattribute
name"prodid" type"xspositiveInteger"/gtlt/xscom
plexTypegt
36XSD Elementos complejos que contienen solamente
elementos
- ltpersongt ltfirstnamegtJohnlt/firstnamegtÂ
ltlastnamegtSmithlt/lastnamegtlt/persongt
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
Definición
ltxselement name"person" type"persontype"/gtltxs
complexType name"persontype"gtÂ
ltxssequencegt   ltxselement name"firstname"
type"xsstring"/gt   ltxselement
name"lastname" type"xsstring"/gtÂ
lt/xssequencegtlt/xscomplexTypegt
37XSD Elementos complejos que contienen solamente
texto
- ltxselement name"somename"gt ltxscomplexTypegt Â
 ltxssimpleContentgt     ltxsextension
base"basetype"gt       ....       ....    Â
lt/xsextensiongt   lt/xssimpleContentgtÂ
lt/xscomplexTypegtlt/xselementgtOltxselement
name"somename"gt ltxscomplexTypegt  Â
ltxssimpleContentgt     ltxsrestriction
base"basetype"gt       ....       ....    Â
lt/xsrestrictiongt   lt/xssimpleContentgtÂ
lt/xscomplexTypegtlt/xselementgt
Expandir o limitar el tipo base simple
38XSD Elementos complejos que contienen solamente
texto
- ltshoesize country"france"gt35lt/shoesizegt
- ltxselement name"shoesize"gt ltxscomplexTypegt Â
 ltxssimpleContentgt     ltxsextension
base"xsinteger"gt       ltxsattribute
name"country" type"xsstring" /gt    Â
lt/xsextensiongt   lt/xssimpleContentgtÂ
lt/xscomplexTypegtlt/xselementgt
Definición
ltxselement name"shoesize" type"shoetype"/gtltxs
complexType name"shoetype"gtÂ
ltxssimpleContentgt   ltxsextension
base"xsinteger"gt     ltxsattribute
name"country" type"xsstring" /gt  Â
lt/xsextensiongt lt/xssimpleContentgtlt/xscomplex
Typegt
39XSD Elementos complejos mixtos
- ltlettergt Dear Mr.ltnamegtJohn Smithlt/namegt.Â
Your order ltorderidgt1032lt/orderidgt will be
shipped on ltshipdategt2001-07-13lt/shipdategt.lt/lett
ergt
Hace posible que los datos de tipo caracter
aparezcan entre los elementos hijo de letter
- ltxselement name"letter"gt ltxscomplexType
mixed"true"gt   ltxssequencegt     ltxselement
name"name" type"xsstring"/gt     ltxselement
name"orderid" type"xspositiveInteger"/gt    Â
ltxselement name"shipdate" type"xsdate"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
Definición
40XSD Elementos complejos mixtos
- ltlettergt Dear Mr.ltnamegtJohn Smithlt/namegt.Â
Your order ltorderidgt1032lt/orderidgt will be
shipped on ltshipdategt2001-07-13lt/shipdategt.lt/lett
ergt
- ltxselement name"letter" type"lettertype"/gtltxs
complexType name"lettertype" mixed"true"gtÂ
ltxssequencegt   ltxselement name"name"
type"xsstring"/gt   ltxselement name"orderid"
type"xspositiveInteger"/gt   ltxselement
name"shipdate" type"xsdate"/gtÂ
lt/xssequencegtlt/xscomplexTypegt
Definición
41XSD Indicadores
- Existen siete tipos de indicadores
- Indicadores de orden
- All
- Choice
- Sequence
- Indicadores de occurrencia
- maxOccurs
- minOccurs
- Indicadores de grupo
- Group name
- attributeGroup name
42Indicadores de orden ALL
- Especifica que los elementos hijo pueden aparecer
en cualquier orden, y que cada elemento hijo
puede ocurrir solamente una vez. - ltxselement name"person"gt ltxscomplexTypegt  Â
ltxsallgt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt  Â
lt/xsallgt lt/xscomplexTypegtlt/xselementgt
43Indicadores de orden CHOICE
- Especifica que los elementos hijo puede aparecer
(uno o el otro). - ltxselement name"person"gt ltxscomplexTypegt  Â
ltxschoicegt     ltxselement name"employee"
type"employee"/gt     ltxselement name"member"
type"member"/gt   lt/xschoicegtÂ
lt/xscomplexTypegtlt/xselementgt
44Indicadores de orden SEQUENCE
- Especifica que los elementos hijo deben aparecer
en estricta secuencia, tal y como se han
definido. - ltxselement name"person"gt  ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
45Indicadores de ocurrencia
Indicadores maxOccurs y minOccurs (número de
veces que un elemento hijo puede ocurrir)
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"full_name"
type"xsstring"/gt     ltxselement
name"child_name" type"xsstring - maxOccurs"10"/gt   lt/xssequencegtÂ
lt/xscomplexTypegtlt/xselementgt
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"full_name"
type"xsstring"/gt     ltxselement
name"child_name" type"xsstring"Â Â Â Â Â
maxOccurs"10" minOccurs"0"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
maxOccurs"unbounded"
46XSD Práctica 8 (Escribir archivo XSD para
Familia.xml)
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltpers
ons xmlnsxsi"http//www.w3.org/2001/XMLSchema-in
stance"xsinoNamespaceSchemaLocation"family.xsd"
gtltpersongt ltfull_namegtHege Refsneslt/full_namegt
 ltchild_namegtCecilielt/child_namegtlt/persongtltper
songt ltfull_namegtTove Refsneslt/full_namegtÂ
ltchild_namegtHegelt/child_namegtÂ
ltchild_namegtStalelt/child_namegtÂ
ltchild_namegtJimlt/child_namegt ltchild_namegtBorgelt/
child_namegtlt/persongtltpersongtÂ
ltfull_namegtStale Refsneslt/full_namegtlt/persongtlt/
personsgt
47XSD Respuesta a Práctica 8 (Archivo Familia.xsd
para Familia.xml)
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltxssc
hema xmlnsxs"http//www.w3.org/2001/XMLSchema"e
lementFormDefault"qualified"gtltxselement
name"persons"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"person"
maxOccurs"unbounded"gt       ltxscomplexTypegt Â
       ltxssequencegt           ltxselement
name"full_name" type"xsstring"/gt          Â
ltxselement name"child_name" type"xsstring"Â Â Â
        minOccurs"0" maxOccursunbounded"/gt  Â
      lt/xssequencegt       lt/xscomplexTypegt Â
   lt/xselementgt   lt/xssequencegtÂ
lt/xscomplexTypegtlt/xselementgtlt/xsschemagt
48XSD Indicadores de grupo Grupos de elementos
(Se debe usar ALL, CHOICE o SEQUENCE)
- ltxsgroup name"groupname"gt...lt/xsgroupgt
- ltxsgroup name"persongroup"gt ltxssequencegt  Â
ltxselement name"firstname" type"xsstring"/gt Â
 ltxselement name"lastname" type"xsstring"/gtÂ
  ltxselement name"birthday" type"xsdate"/gtÂ
lt/xssequencegtlt/xsgroupgt - ltxselement name"person" type"personinfo"/gt
- ltxscomplexType name"personinfo"gtÂ
ltxssequencegt   ltxsgroup ref"persongroup"/gt Â
 ltxselement name"country" type"xsstring"/gtÂ
lt/xssequencegtlt/xscomplexTypegt
49XSD Definiciones extensibles Motivación
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltpers
ons xmlns"http//www.microsoft.com"xmlnsxsi"ht
tp//www.w3.org/2001/XMLSchema-instance"xsiSchem
aLocation"http//www.microsoft.com
family.xsd"gtltpersongt ltfirstnamegtHegelt/firstnam
egt ltlastnamegtRefsneslt/lastnamegtÂ
ltchildrengt   ltchildnamegtCecilielt/childnamegtÂ
lt/childrengtlt/persongtltpersongtÂ
ltfirstnamegtStalelt/firstnamegt ltlastnamegtRefsneslt/
lastnamegtlt/persongtlt/personsgt
50XSD Definiciones extensibles ltanygt
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt     ltxsany
minOccurs"0"/gt   lt/xssequencegtÂ
lt/xscomplexTypegtlt/xselementgt
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltxssc
hema xmlnsxs"http//www.w3.org/2001/XMLSchema"t
argetNamespace"http//www.mysite.com"xmlns"http
//www.mysite.com"elementFormDefault"qualified"gt
ltxselement name"children"gtÂ
ltxscomplexTypegt   ltxssequencegt    Â
ltxselement name"childname" type"xsstring"Â Â Â Â
 maxOccurs"unbounded"/gt   lt/xssequencegtÂ
lt/xscomplexTypegtlt/xselementgtlt/xsschemagt
51XSD Definiciones extensibles ltanygt
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltpers
ons xmlns"http//www.microsoft.com"xmlnsxsi"ht
tp//www.w3.org/2001/XMLSchema-instance"xsiSchem
aLocation"http//www.microsoft.com
family.xsdhttp//www.mysite.com
children.xsd"gtltpersongt ltfirstnamegtHegelt/firstn
amegt ltlastnamegtRefsneslt/lastnamegtÂ
ltchildrengt   ltchildnamegtCecilielt/childnamegtÂ
lt/childrengtlt/persongtltpersongtÂ
ltfirstnamegtStalelt/firstnamegt ltlastnamegtRefsneslt/
lastnamegtlt/persongtlt/personsgt
52XSD Definiciones extensibles Motivación
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltpers
ons xmlns"http//www.microsoft.com"xmlnsxsi"ht
tp//www.w3.org/2001/XMLSchema-instance"xsiSchem
aLocation"http//www.microsoft.com
family.xsd"gtltperson gender"female"gtÂ
ltfirstnamegtHegelt/firstnamegt ltlastnamegtRefsneslt/l
astnamegtlt/persongtltperson gender"male"gtÂ
ltfirstnamegtStalelt/firstnamegt ltlastnamegtRefsneslt/
lastnamegtlt/persongtlt/personsgt
53XSD Definiciones extensibles ltanyAttributegt
- ltxselement name"person"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement name"firstname"
type"xsstring"/gt     ltxselement
name"lastname" type"xsstring"/gt  Â
lt/xssequencegt   ltxsanyAttribute/gtÂ
lt/xscomplexTypegtlt/xselementgt
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltxssc
hema xmlnsxs"http//www.w3.org/2001/XMLSchema"t
argetNamespace"http//www. mysite.com"xmlns"htt
p//www.mysite.com"elementFormDefault"qualified"
gtltxsattribute name"gender"gtÂ
ltxssimpleTypegt   ltxsrestriction
base"xsstring"gt     ltxspattern
value"malefemale"/gt   lt/xsrestrictiongtÂ
lt/xssimpleTypegtlt/xsattributegtlt/xsschemagt
54XSD Definiciones extensibles ltanyAttributegt
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltpers
ons xmlns"http//www.microsoft.com"xmlnsxsi"ht
tp//www.w3.org/2001/XMLSchema-instance"xsiSchem
aLocation"http//www.microsoft.com
family.xsdhttp//www.mysite.com
attribute.xsd"gtltperson gender"female"gtÂ
ltfirstnamegtHegelt/firstnamegt ltlastnamegtRefsneslt/l
astnamegtlt/persongtltperson gender"male"gtÂ
ltfirstnamegtStalelt/firstnamegt ltlastnamegtRefsneslt/
lastnamegtlt/persongtlt/personsgt
55XSD Manejando idiomas(Bloqueando la sustitución
de elementos)
ltxselement name"name" type"xsstring"
block"substitution"/gtltxselement name"nombre"
substitutionGroup"name"/gtltxscomplexType
name"custinfo"gt ltxssequencegt   ltxselement
ref"name"/gt lt/xssequencegtlt/xscomplexTypegtlt
xselement name"customer" type"custinfo"
block"substitution"/gtltxselement namenombre"
substitutionGroup"customer"/gt
- ltcustomergt ltnamegtJohn Smithlt/namegtlt/customergt
- ltclientegt ltnombregtJohn Smithlt/nombregtlt/clientegt
56XSD Sustitución de elementos
- El uso correcto de substitutionGroup
- El tipo de los elementos sustituibles debe ser el
mismo o derivado del tipo del elemento principal.
Si el tipo del elemento sustituible es el mismo
que el tipo del elemento principal, entonces no
es necesario especificar el tipo del elemento
sustituible. - Todos los elementos en substitutionGroup (el
elemento principal y los elementos sustituibles)
debe ser declarados como elementos globales, de
otro modo no funcionara! - Que son los elementos globales?
- Los elementos globales son aquellos que son hijos
inmediatos del elemento del "schema"! - Los elementos locales son aquellos que se
encuentran anidados dentro de otros elementos.
57XSD Práctica 9(Despacho de órdenes)
- lt?xml version"1.0" encoding"ISO-8859-1"?gtltship
order orderid"889923"xmlnsxsi"http//www.w3.or
g/2001/XMLSchema-instance"xsinoNamespaceSchemaLo
cation"shiporder.xsd"gt ltorderpersongtJohn
Smithlt/orderpersongt ltshiptogt   ltnamegtOla
Nordmannlt/namegt   ltaddressgtLanggt
23lt/addressgt   ltcitygt4000 Stavangerlt/citygt  Â
ltcountrygtNorwaylt/countrygt lt/shiptogtÂ
ltitemgt   lttitlegtEmpire Burlesquelt/titlegt  Â
ltnotegtSpecial Editionlt/notegt  Â
ltquantitygt1lt/quantitygt   ltpricegt10.90lt/pricegtÂ
lt/itemgt ltitemgt   lttitlegtHide your
heartlt/titlegt   ltquantitygt1lt/quantitygt  Â
ltpricegt9.90lt/pricegt lt/itemgtlt/shipordergt
58XSD Respuesta a Práctica 9
- lt?xml version"1.0" encoding"ISO-8859-1"
?gtltxsschema xmlnsxs"http//www.w3.org/2001/XML
Schema"gtltxselement name"shiporder"gtÂ
ltxscomplexTypegt   ltxssequencegt    Â
ltxselement name"orderperson" type"xsstring"/gt
     ltxselement name"shipto"gt      Â
ltxscomplexTypegt         ltxssequencegt        Â
  ltxselement name"name" type"xsstring"/gt   Â
       ltxselement name"address"
type"xsstring"/gt           ltxselement
name"city" type"xsstring"/gt          Â
ltxselement name"country" type"xsstring"/gt   Â
     lt/xssequencegt       lt/xscomplexTypegt  Â
  lt/xselementgt     ltxselement name"item"
maxOccurs"unbounded"gt       ltxscomplexTypegt Â
       ltxssequencegt           ltxselement
name"title" type"xsstring"/gt          Â
ltxselement name"note" type"xsstring"
minOccurs"0"/gt           ltxselement
name"quantity" type"xspositiveInteger"/gt     Â
     ltxselement name"price" type"xsdecimal"/gt
         lt/xssequencegt      Â
lt/xscomplexTypegt     lt/xselementgt  Â
lt/xssequencegt   ltxsattribute name"orderid"
type"xsstring" use"required"/gtÂ
lt/xscomplexTypegtlt/xselementgtlt/xsschemagt
59XSD Respuesta alternativa a Práctica 9
- lt?xml version"1.0" encoding"ISO-8859-1"
?gtltxsschema xmlnsxs"http//www.w3.org/2001/XML
Schema"gtlt!-- definition of simple elements
--gtltxselement name"orderperson"
type"xsstring"/gtltxselement name"name"
type"xsstring"/gtltxselement name"address"
type"xsstring"/gtltxselement name"city"
type"xsstring"/gtltxselement name"country"
type"xsstring"/gtltxselement name"title"
type"xsstring"/gtltxselement name"note"
type"xsstring"/gtltxselement name"quantity"
type"xspositiveInteger"/gtltxselement
name"price" type"xsdecimal"/gtlt!-- definition
of attributes --gtltxsattribute name"orderid"
type"xsstring"/gtlt!-- definition of complex
elements --gtltxselement name"shipto"gtÂ
ltxscomplexTypegt   ltxssequencegt    Â
ltxselement ref"name"/gt     ltxselement
ref"address"/gt     ltxselement
ref"city"/gt     ltxselement ref"country"/gt  Â
lt/xssequencegt lt/xscomplexTypegtlt/xselementgt
- ltxselement name"item"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement
ref"title"/gt     ltxselement ref"note"
minOccurs"0"/gt     ltxselement
ref"quantity"/gt     ltxselement
ref"price"/gt   lt/xssequencegtÂ
lt/xscomplexTypegtlt/xselementgtltxselement
name"shiporder"gt ltxscomplexTypegt  Â
ltxssequencegt     ltxselement
ref"orderperson"/gt     ltxselement
ref"shipto"/gt     ltxselement ref"item"
maxOccurs"unbounded"/gt   lt/xssequencegt  Â
ltxsattribute ref"orderid" use"required"/gtÂ
lt/xscomplexTypegtlt/xselementgtlt/xsschemagt
60XSD Respuesta alternativa a Práctica 9
- lt?xml version"1.0" encoding"ISO-8859-1"
?gtltxsschema xmlnsxs"http//www.w3.org/2001/XML
Schema"gtltxssimpleType name"stringtype"gtÂ
ltxsrestriction base"xsstring"/gtlt/xssimpleType
gtltxssimpleType name"inttype"gtÂ
ltxsrestriction base"xspositiveInteger"/gtlt/xss
impleTypegtltxssimpleType name"dectype"gtÂ
ltxsrestriction base"xsdecimal"/gtlt/xssimpleTyp
egtltxssimpleType name"orderidtype"gtÂ
ltxsrestriction base"xsstring"gt   ltxspattern
value"0-96"/gt lt/xsrestrictiongtlt/xssimple
Typegt - ltxscomplexType name"shiptotype"gtÂ
ltxssequencegt   ltxselement name"name"
type"stringtype"/gt   ltxselement
name"address" type"stringtype"/gt  Â
ltxselement name"city" type"stringtype"/gt  Â
ltxselement name"country" type"stringtype"/gtÂ
lt/xssequencegtlt/xscomplexTypegt
- ltxscomplexType name"itemtype"gtÂ
ltxssequencegt   ltxselement name"title"
type"stringtype"/gt   ltxselement name"note"
type"stringtype" minOccurs"0"/gt   ltxselement
name"quantity" type"inttype"/gt   ltxselement
name"price" type"dectype"/gtÂ
lt/xssequencegtlt/xscomplexTypegtltxscomplexType
name"shipordertype"gt ltxssequencegt  Â
ltxselement name"orderperson" type"stringtype"/gt
   ltxselement name"shipto" type"shiptotype"/gt
   ltxselement name"item" maxOccurs"unbounded"
type"itemtype"/gt lt/xssequencegtÂ
ltxsattribute name"orderid" type"orderidtype"
use"required"/gtlt/xscomplexTypegtltxselement
name"shiporder" type"shipordertype"/gtlt/xssche
magt
61XSD Tipos de datos(String)
- Tipos de datos usados para valores que contienen
cadenas de caracteres. - Definición
- ltxselement name"customer" type"xsstring"/gt
- Uso
- ltcustomergtJohn Smithlt/customergt
- ltcustomergt      John Smith    lt/customergt
62XSD Tipos de datos(Derivados de String)
63XSD Tipos de datos(NormalizedString)
- Contienes caracteres, pero el procesador XML
removerá los saltos de lÃnea, avances de carro y
tabuladores (sustitución con espacios). - Definición
- ltxselement name"customer" type"xsnormalizedStr
ing"/gt - Uso
- ltcustomergtJohn Smithlt/customergt
- ltcustomergt      John Smith    lt/customergt
64XSD Tipos de datos(Token)
- Contienes caracteres, pero el procesador XML
removerá los saltos de lÃnea, avances de carro,
tabuladores y múltiples espacios (sustitución con
espacios). Adicionalmente, remueve los espacios
al inicio y final de cada lÃnea. - Definición
- ltxselement name"customer" type"xstoken"/gt
- Uso
- ltcustomergtJohn Smithlt/customergt
- ltcustomergt      John Smith    lt/customergt
65XSD Tipos de datos(Restricciones sobre String)
- Las restricciones que pueden ser usadas con los
tipos de datos String son las siguientes - enumeration
- length
- maxLength
- minLength
- pattern (NMTOKENS, IDREFS, and ENTITIES cannot
use this constraint) - whiteSpace
66XSD Tipos de datos(Date)
- El tipo de dato Date especifica una fecha y debe
ser especificado de la siguiente manera
YYYY-MM-DD, donde - YYYY indica el año
- MM indica el mes
- DD indica el dÃa
- Definición
- ltxselement name"start" type"xsdate"/gt
- Uso
- ltstartgt2002-09-24lt/startgt
- Zona
- ltstartgt2002-09-24Zlt/startgt
- ltstartgt2002-09-24-0600lt/startgt
- ltstartgt2002-09-240600lt/startgt
67XSD Tipos de datos(Time)
- El tipo de dato Time especifica una hora y debe
ser especificado de la siguiente manera
hhmmss, donde - hh indica la hora
- mm indica el minuto
- ss indica el segundo
- Definición
- ltxselement name"start" type"xstime"/gt
- Uso
- ltstartgt090000lt/startgt
- ltstartgt093010.5lt/startgt
- Zona
- ltstartgt093010Zlt/startgt
- ltstartgt093010-0600lt/startgt
- ltstartgt0930100600lt/startgt
68XSD Tipos de datos(DateTime)
- El tipo de dato DateTime especifica una fecha con
una determinada hora y debe ser especificado de
la siguiente manera YYYY-DD-MMThhmmss, donde - YYYY indica el año
- MM indica el mes
- DD indica el dÃa
- T indica el inicio de la sección hora requerida
- hh indica la hora
- mm indica el minuto
- ss indica el segundo
- Definición
- ltxselement name"startdate" type"xsdateTime"/gt
- Uso
- ltstartdategt2002-05-30T090000lt/startdategt
- ltstartdategt2002-05-30T093010.5lt/startdategt
- Zona
- ltstartdategt2002-05-30T093010Zlt/startdategt
- ltstartdategt2002-05-30T093010-0600lt/startdategt
69XSD Tipos de datos(Duration)
- El tipo de dato Duration es usado para
especificar un intervalo de tiempo y debe ser
especificado de la siguiente manera
PnYnMnDTnHnMnS, donde - P indica el periodo (requerido)
- nY indica el número de años
- nM indica el número de meses
- nD indica el número de dÃas
- T indica el inicio de la sección hora (en caso de
usar horas) - nH indica el número de horas
- nM indica el número de minutos
- nS indica el número de segundos
- Definición
- ltxselement name"period" type"xsduration"/gt
- Uso
- ltperiodgtP5Ylt/periodgt
- ltperiodgtP5Y2M10Dlt/periodgt
- ltperiodgtP5Y2M10DT15Hlt/periodgt
- ltperiodgtPT15Hlt/periodgt
70XSD Tipos de datos(Date y Time)
71XSD Tipos de datos(Restricciones en Date y Time)
- Las restricciones que pueden ser usadas con los
tipos de datos Date/Time son las siguientes - enumeration
- maxExclusive
- maxInclusive
- minExclusive
- minInclusive
- pattern
- whiteSpace
72XSD Tipos de datos(Numeric Decimal o Integer)
- Valores Numéricos con Decimales
-
- Definición
- ltxselement name"prize" type"xsdecimal"/gt
- Uso
- ltprizegt999.50lt/prizegt
- ltprizegt999.5450lt/prizegt
- ltprizegt-999.5230lt/prizegt
- ltprizegt0lt/prizegt
- ltprizegt14lt/prizegt
- Valores Numéricos sin Decimales (Enteros)
- Definición
- ltxselement name"prize" type"xsinteger"/gt
- Uso
- ltprizegt999lt/prizegt
- ltprizegt999lt/prizegt
73XSD Tipos de datos(Restricciones en Numeric)
- Las restricciones que pueden ser usadas con los
tipos de datos Numeric son las siguientes - enumeration
- fractionDigits
- maxExclusive
- maxInclusive
- minExclusive
- minInclusive
- pattern
- totalDigits
- whiteSpace
74XSD Tipos de datos(Numeric)
75XSD Otros Tipos de Datos
- boolean, base64Binary, hexBinary, float, double,
anyURI, QName, and NOTATION. - boolean
- Definición
- ltxsattribute name"disabled" type"xsboolean"/gt
- Uso
- ltprize disabled"true"gt999lt/prizegt
76XSD Otros Tipos de Datos
- base64Binary (Base64-encoded binary data)
- hexBinary (hexadecimal-encoded binary data)
- Binary
- Definición
- ltxselement name"blobsrc" type"xshexBinary"/gt
77XSD Otros Tipos de Datos
- boolean, base64Binary, hexBinary, float, double,
anyURI, QName, and NOTATION. - anyURI
- Definición
- ltxsattribute name"src" type"xsanyURI"/gt
- Uso
- ltpic src"http//www.mysite.com/images/smiley.gif"
/gt
78XSD Tipos de datos(Otros tipos)
79XSD Tipos de datos(Restricciones en los otros
tipos)
- Las restricciones que pueden ser usadas son las
siguientes - enumeration (un tipo de dato Boolean no puede
usar esta restricción) - length (un tipo de dato Boolean no puede usar
esta restricción) - maxLength (un tipo de dato Boolean no puede usar
esta restricción) - minLength (un tipo de dato Boolean no puede usar
esta restricción) - pattern
- whiteSpace
80Esquema Un ejemplo
- ltSchema name "libreria4_esq.xml"
- xmlns"urnschemas-microsoft-comxml-data"
- xmlnsdt"urnschemas-microsoft-comdatatypes"gt
- ltElementType name "autor" content"textOnly
- dttype"string"gt
- ltdescriptiongt
- lttitlegtAutorlt/titlegt
- ltbodygtAutor o editorlt/bodygt
- lt/descriptiongt
- lt/ElementTypegt
- ltElementType name "titulo" content"textOnly"
- dttype"string"gt
- ltdescriptiongt
- lttitlegtTÃtulolt/titlegt
- ltbodygtTÃtulolt/bodygt
- lt/descriptiongt
- lt/ElementTypegt
- ltElementType name "libro" content"eltOnly"
model"closed"gt - ltdescriptiongt
- lttitlegtLibrolt/titlegt
- ltbodygtLibro de la librerÃalt/bodygt
- lt/descriptiongt
- ltelement type"autor" minOccurs"1"
maxOccurs"" /gt - ltelement type"titulo" minOccurs"1"
maxOccurs"1" /gt - ltelement type"precio" minOccurs"1"
maxOccurs"1" /gt - lt/ElementTypegt
- ltElementType name "libreria4" content"eltOnly"
model"closed"gt - ltdescriptiongt
- lttitlegtLibrerÃalt/titlegt
- ltbodygtLa librerÃalt/bodygt
- lt/descriptiongt
- ltelement type"libro" minOccurs"0"
maxOccurs"" /gt - lt/ElementTypegt
- lt/Schemagt
81XSD Práctica 10
- Escribir un esquema para archivos XML usando XML
Schema, en donde se consideren instancias XML que
cumplan las restricciones realizadas en la
práctica 5 (catálogo de libros). - Reescribir el archivo XML para que incluya en su
prólogo el correspondiente archivo .xsd.