XML Schema (XSD) - PowerPoint PPT Presentation

About This Presentation
Title:

XML Schema (XSD)

Description:

XML Schema (XSD) Introducci n a XML ... a futuras adiciones XML Schemas son m s ricos y poderosos que los DTDs XML Schemas est n escritos de acuerdo a la sintaxis ... – PowerPoint PPT presentation

Number of Views:122
Avg rating:3.0/5.0
Slides: 82
Provided by: VAIO75
Category:
Tags: xml | xsd | schema | sintaxis

less

Transcript and Presenter's Notes

Title: XML Schema (XSD)


1
XML Schema (XSD)
  • Introducción a XML

2
XML 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

3
XML 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

4
Esquema 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

5
XML 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

6
XML 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

7
XML 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".

8
De 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
9
Referencia 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

10
Declaració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
11
Referencia 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
12
Elementos 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

13
Sintaxis de los elementos simples
  • ltxselement name"xxx" type"yyy"/gt
  • Tipos más comunes
  • xsstring
  • xsdecimal
  • xsinteger
  • xsboolean
  • xsdate
  • xstime

14
Elementos 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
15
Valores 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
16
Sintaxis de los Atributos
  • ltxsattribute name"xxx" type"yyy"/gt
  • Tipos más comunes
  • xsstring
  • xsdecimal
  • xsinteger
  • xsboolean
  • xsdate
  • xstime

17
Atributos 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
18
XSD 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

19
XSD Restricciones en los tipos de datos
20
XSD 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

21
XSD 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

22
XSD 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

23
XSD 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

24
XSD 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

25
XSD 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

26
XSD 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

27
XSD 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)

28
XSD 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

29
XSD 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

30
XSD Tipos de elementos complejos
  • ltproduct pid"1345"/gt

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
31
XSD 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
32
XSD 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
33
XSD 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
34
XSD 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
35
XSD 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
36
XSD 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
37
XSD 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
38
XSD 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
39
XSD 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
40
XSD 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
41
XSD Indicadores
  • Existen siete tipos de indicadores
  • Indicadores de orden
  • All
  • Choice
  • Sequence
  • Indicadores de occurrencia
  • maxOccurs
  • minOccurs
  • Indicadores de grupo
  • Group name
  • attributeGroup name

42
Indicadores 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

43
Indicadores 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

44
Indicadores 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

45
Indicadores 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"
46
XSD 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

47
XSD 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

48
XSD 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

49
XSD 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

50
XSD 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

51
XSD 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

52
XSD 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

53
XSD 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

54
XSD 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

55
XSD 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

56
XSD 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.

57
XSD 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

58
XSD 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

59
XSD 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

60
XSD 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

61
XSD 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

62
XSD Tipos de datos(Derivados de String)
63
XSD 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

64
XSD 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

65
XSD 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

66
XSD 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

67
XSD 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

68
XSD 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

69
XSD 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

70
XSD Tipos de datos(Date y Time)
71
XSD 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

72
XSD 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

73
XSD 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

74
XSD Tipos de datos(Numeric)
75
XSD 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

76
XSD Otros Tipos de Datos
  • base64Binary (Base64-encoded binary data)
  • hexBinary (hexadecimal-encoded binary data)
  • Binary
  • Definición
  • ltxselement name"blobsrc" type"xshexBinary"/gt

77
XSD 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

78
XSD Tipos de datos(Otros tipos)
79
XSD 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

80
Esquema 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

81
XSD 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.
Write a Comment
User Comments (0)
About PowerShow.com