XML Schema XML Schéma Types Simples Restrictions de Types

Transcription

XML Schema XML Schéma Types Simples Restrictions de Types
26
27
XML Schéma
Séparation entre types et éléménts (grammaire d’arbre à types
uniques)
Types complexes, abstraits et anonymes
Sous-typage par extension et restriction
Contraintes d’intégrité (clés, clés étrangères)
XML Schema
Un schéma XML est lui même un document XML.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
28
29
Types Simples
Restrictions de Types Simples
DTD: un seul type simple (#PCDATA) et 10 types d’attributs
On peut restreindre les types simples
Schéma XML: 43 types simples
– xsd:string, xsd:byte, ...
par leur longueur (length, minLength, maxLength)
(chaînes de caractères ou listes)
– xsd:integer, xsd:long, xsd:float, xsd:double, ...
par des motifs (chaînes de caractères),
– xsd:boolean
– xsd:time, xsd:timeDuration, xsd:Date, xsd:year,
xsd:month, ...
– xsd:language, xsd:uriReference
– xsd:ID, xsd:IDREF, xsd:NMTOKEN, ...
par énumération,
par des intervalles (maxInclusive, maxExclusive,
minInclusive, minExclusive) et
autres (precision, scale, encoding, period,
duration).
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
30
31
Restriction de Types Simples par Motifs
Listes de Valeurs de Type Simple
Numéro de téléphone: +33-(0)-1-34-45-67-89
Une liste de numéros de téléphone :
DTD: #PCDATA
<xsd:simpleType name=’listeNumTél’>
<xsd:list itemType=’numTél’/>
</xsd:simpleType>
Schéma XML: Similaire aux expressions régulières de Perl
<xsd:simpleType name=’numTél’>
<xsd:restriction base=’xsd:string’>
<xsd:pattern value=’+33-(0)-\d(-\d{2}){3}’/>
</xsd:restriction>
</xsd:simpleType>
Une liste de cinq numéros de téléphone (restriction du type
précédent) :
<xsd:simpleType name=’cinqNumTél’>
<xsd:restriction base=’listNumTél’>
<xsd:length value=’5’/>
</xsd:restriction>
</xsd:simpleType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
32
33
Union de Types Simples
Eléments
Un numéro de téléphone Européen est soit un numéro français, un
numéro allement, ...
Grammaire d’arbres :
euroNumTél -> francTél | gerTél | belTél | ...
Déclaration d’éléments:
<xsd:element name type contraintes [value]/> ou
<xsd:element ref contraintes/>
Contraintes: minOccurs, maxOccurs, fixed
Schéma :
<xsd:simpleType name=’euroNumTél’>
<xsd:union memberTypes=’francTél
gerTél
belTél
...’/>
</xsd:simpleType>
Exemple:
<xsd:element name=’nom’
type=’xsd:string’
minOccurs=’0’
maxOccurs=’2’/>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
34
35
Attributs
Types Complexes
Déclaration d’attributs:
<xsd:attribute name use [value]/>
Trois constructeurs de type:
– xsd:sequence: séquence ordonnée d’éléménts
Use : required, optional, fixed, prohibited
– xsd:all: séquence non-ordonnée d’éléménts
Exemple:
– xsd:choice: choix d’éléménts (DTD: ’ ’)
<xsd:attribute name=’langue’
type=’xsd:language’
optional=’true’/>
– xsd:group: regroupement (DTD: ’(...)’).
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
36
37
Type Complexe: Exemple
Contenu Mélangé (mixed)
Modèle de contenu DTD: (titre, année)
XML Schéma:
DTD: (#PCDATA | cinéma | film)*
<xsd:complexType name=’FilmType’>
<xsd:sequence>
<xsd:element name=’titre’ type=’xsd:string’/>
<xsd:element name=’année’ type=’xsd:year’/>
</xsd:sequence>
</xsd:complexType>
Grammaire :
Schéma XML :
<xsd:complexType name=’OfficielType’ mixed=’true’>
<xsd:choice minOccurs=’0’ maxOccurs=’unbounded’>
<xsd:element name=’cinema’ type=’CinemaType’ />
<xsd:element name=’film’ type=’FilmType’ />
</xsd:choice>
</xsd:complexType>
FilmType -> Titre Année
Titre -> titre String
Année -> année xsd:year
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
38
39
Groupes: Exemple
Valeurs Nulles
DTD: ((B|C)*,D)+
On distingue entre les éléments vides et les éléments avec un
contenu inconnu :
XML schéma:
<xsd:complexType>
<xsd:group minOccurs=’1’ maxOccurs=’unbounded’>
<xsd:sequence>
<xsd:group minOccurs=’0’ maxOccurs=’unbounded’>
<xsd:choice>
<xsd:element name=’B’ xsd:type=’xsd:string’/>
<xsd:element name=’C’ xsd:type=’xsd:string’/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:complexType>
Schéma XML:
<xsd:element name=’heureFilm’
type=’xsd:time’
nullable=’true’/>
Élément XML:
<heureFilm xsi:null=’true’/>
xsi:null est défini dans l’espace de noms pour des instances
(http://www.w3.org/2000/10/XMLSchema-instance).
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
40
41
Extension de Types Complexes
Extension de Types Complexes
Cinémas avec un site Web et un pays (fichier webcountry.xsd):
<complexType name=’cybercinemaType’>
<complexContent>
<extension base=’officiel:cinemaType’>
<sequence>
<element name=’url’ type=’xsd:string’/>
</sequence>
</extension>
</complexContent>
</complexType>
Grammaire d’abres :
CybercinemaType -> Nom Adresse (Seance)* Url,
Nom -> nom String, Url -> url String, ...
Chaque occurrence de CinemaType dans le modèle de
contenu d’une règle est remplacée par
(CinemaType|CybercinemaType)
Le remplacement automatique peut être empeché par les
attributs block et final. Ces deux attributs peuvent prendre
comme valeurs #all ou une liste contenant les valeurs
restriction, extension et/ou substitution :
<xsd:complexType name=’CinemaType’
block=’restriction’>
...
</xsd:complexType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
42
43
Utilisation de Types Étendus
Restriction de Types Complexes
On indique explicitement le type (grammaire à types uniques) :
On définit un type spécifique pour les cinémas avec une à trois
séances (fichier seance.xsd):
<cinema xsi:type=’CybercinemaType’>
<nom>St André des Arts</nom>
<officiel:adresse>
<ville> Paris </ville>
<rue> rue St. André des Arts </rue>
<numéro> 13 </numéro>
</officiel:adresse>
<url>http://www.st-andré.com</url>
</cinema>
<complexType name=’séanceobligType’>
<complexContent>
<restriction base=’cinemaType’>
<complexType content=’elementOnly’>
<sequence minOccurs=’1’ maxOccurs=’3’>
<element ref=’seance’/>
</sequence>
<element name=’nom’ type=’string’/>
<element ref=’adresse’/>
</complexType>
</complexContent>
</complexType>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
44
45
Valeur unique
Clés et Références
L’attribut film_id d’un film doit être unique:
Une clé est unique (filmcli = clé):
<unique name=’toto’>
<selector>film</selector>
<field>@film_id</field>
</unique>
<key name=’filmclé’>
<selector>film</selector>
<field>@film_id</field>
</key>
Les valeurs des element <selector> et <field> sont des
expressions XPath.
Référence (filmref = clé etrangère):
La valeur de <field> doit être unique à l’intérieur de chaque
élément sélectionné par le sélecteur.
<keyref name=’filmref’ refer=’filmclé’>
<selector>séance</selector>
<field>@ref_film</field>
</keyref>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann

Documents pareils

Limites des DTD Espaces de noms XML : Une introduction (2

Limites des DTD Espaces de noms XML : Une introduction (2 Types dérivés Types dérivés prédéfinis Restriction sur des types primitifs Ex : Entier positif : positiveInteger

Plus en détail

XML Schema - Université de Cergy

XML Schema - Université de Cergy