Limites des DTD. XML : Une introduction (2) Exemple. Espaces de noms. Description de documents XML



Documents pareils
Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

MINISTÈRE DES SOLIDARITÉ ET DE LA COHÉSION SOCIALE

Master d Informatique Corrigé du partiel novembre 2010

Préparation d'un fichier XML pour le reporting des activités avec l'étranger concernant les services, les transferts et les marchandises. Ed.

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

L architecture des services Web

Outils logiciels pour l'ingénierie documentaire

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

XML : documents et outils

Structurer ses données : les tableaux. Introduction à la programmation

OASIS Date de publication

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

Learning Object Metadata

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Programmation Internet Cours 4

Introduction aux «Services Web»

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

L'essentiel de XML. Cours XML. Olivier Carton

Auguria_PCM Product & Combination Manager

as Architecture des Systèmes d Information

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Diagramme de classes

4. SERVICES WEB REST 46

Programmation en Java IUT GEII (MC-II1) 1


Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Les services usuels de l Internet

XMLInvoice Standard de facturation dans le domaine de la santé publique suisse

Web Application Models

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

BD et XML : Exercices

Devenez un véritable développeur web en 3 mois!

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Généralités sur le Langage Java et éléments syntaxiques.

Gestion Électronique de Documents et XML. Master 2 TSM

XML avec Oracle. Par Christian Soutou. Maître de conférences, IUT de Blagnac, Université de Toulouse Le Mirail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Web Tier : déploiement de servlets

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

OCL - Object Constraint Language

C r é a t i o n D e S i t e s. P o l C R O V A T T O

Paris Airports - Web API Airports Path finding

Gestion documentaire (Extraits du CCI version 1.2)

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

18 TCP Les protocoles de domaines d applications

Sécurité. Objectifs Gestion de PKI Signature Cryptage Web Service Security

XMLInvoice Standard de facturation dans le domaine de la santé publique suisse

Installation de DocBook sur un système Linux

Les outils de création de sites web

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

PHP 5.4 Développez un site web dynamique et interactif

Utilitaires méconnus de StrataFrame

API FTP SMSENVOI V1.1

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Chapitre 2. Classes et objets

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

A. À propos des annuaires

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Internet et Programmation!

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

INSTALLATION ET CONFIGURATION DE OPENLDAP

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Alfstore workflow framework Spécification technique

OpenPaaS Le réseau social d'entreprise

CONSERVATOIRE NATIONAL DES ARTS ET METIERS. Centre Régional Associé de Nantes. Mémoire présenté en vue d obtenir l examen probatoire en informatique

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Le standard d'échange de données pour l'archivage (SEDA)

Chapitre VI- La validation de la composition.

Java Licence Professionnelle CISII,

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Olivier Mondet

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

Programmation Web Avancée Introduction aux services Web

Bases de données. Chapitre 1. Introduction

Processus 2D-Doc. Version : 1.1 Date : 16/11/2012 Pôle Convergence AGENCE NATIONALE DES TITRES SECURISÉS. Processus 2D-Doc.

Par Daniel FAIVRE WebMapper ... Publication de cartes pour Internet avec ArcGis

Héritage presque multiple en Java (1/2)

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Les Services Web. Jean-Pierre BORG EFORT

Programmer en JAVA. par Tama

TP1 : Initiation à Java et Eclipse

Bases de Données. Plan

TP 1. Prise en main du langage Python

Initiation à html et à la création d'un site web

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,

Rappels Entrées -Sorties

Transcription:

Limites des DTD XML : Une introduction (2) Description de documents XML http://kiwi.emse.fr/3a/dn.html J.J. Girardot Syntaxe spécifique Analyseurs XML non appropriés Typage Pas de possibilité de typer les contenus Typage faible des valeurs d attributs (orienté document plutôt que XML-Data) Pas de modélisation partielle d'un document la modélisation doit être complète dans le DTD on peut inclure des fichiers externes on peut définir des parties conditionnelles Exemple Qu'est-ce qu'un «title»? J.J. GIRARDOT - EMSE 11/2004 1 <section><title>book-signing Event</title> <signing> <author title="mr" name="vikram Seth" /> <book title="a Suitable Boy" price="$22.95" /> </signing> <signing> <author title="dr" name="oliver Sacks" /> <book title="the Island of the Color-Blind" price="$12.95" /> </signing> </section> J.J. GIRARDOT - EMSE 11/2004 3 Espaces de noms J.J. GIRARDOT - EMSE 11/2004 2 On désire manipuler en XML des documents de structures différentes Les DTD fournissent une solution Chaque DTD définit une structure spécifique de document On veut utiliser au sein d'un même document des éléments et attributs issus de types de documents différents Exemple : écrire un article, utilisant des formules mathématiques et des dessins ; DTD impliqués : DocBook MathML (Mathematical Mark-Up Language) SVC (Scalable Vector Graphics) Problèmes On ne peut simplement «mélanger» les DTD (conflits de noms) On ne peut plus «copier» des fragments de documents si l'on change les noms J.J. GIRARDOT - EMSE 11/2004 4

Solution Associer des «vocabulaires» (DTD ou Schémas) à des URI. Contrainte : permettre de retrouver automatiquement une définition associée à une URI c.f. description des URI Référencer ces vocabulaires par des alias, utilisés comme préfixes dans les balises. Syntaxe choisie <préfixe>:<identificateur> Le préfixe est un identificateur Il a été associé à une URI, qui désigne une DTD L'identificateur est défini dans la DTD Attribution des URI J.J. GIRARDOT - EMSE 11/2004 5 Organisme : IANA http://www.iana.org/assignments/uri-schemes Environ 30 schémas enregistrés, attribués par l'iana : http:, ftp:, etc. Schéma non enregistrés Schémas publics liste maintenue (officieusement) par le W3C http://www.w3.org/addressing/schemes Schémas privés Utilisés par des entreprises comme Microsoft, WebTV, etc Des centaines sont utilisés et/ou créés chaque année J.J. GIRARDOT - EMSE 11/2004 7 Les URI Uniform Ressource Identifier Normalisation IAB & W3C Classification URL : Uniform Ressource Locator URN : Uniform Ressource Name Historique Référencer une ressource par son nom ou son adresse. URI : RFC 2396, URL : RFC 2717, URN : RFC 2276. Pratique actuelle : URI devient le terme générique pour l'ensemble des types de références. les concepts d'url et d'urn s'estompent, certains URI ne sont pas des URL ou URN manifestes, etc... Les URN J.J. GIRARDOT - EMSE 11/2004 6 Correspondent à des «NameSpace», définis par des NID Catégorie 1 : de la forme urn-<num> Définis : urn-1, urn-2, urn-3 Catégorie 2 : identificateurs spécifiques : 'ietf' [RFC 2648], URN Namespace for IETF Documents 'pin'[rfc 3043], The Network Solutions Personal Internet Name (PIN): A URN Namespace for People and Organizations 'issn' [RFC 3043], Using The ISSN as URN within an ISSN-URN Namespace 'oid' [RFC 3061], A URN Namespace of Object Identifiers 'newsml' [RFC 3085], URN Namespace for NewsML Resources 'oasis' [RFC 3121], A URN Namespace for OASIS 'xmlorg' [RFC 3120], A URN Namespace for XML.org 'publicid' [RFC 3151], A URN Namespace for Public Identifiers J.J. GIRARDOT - EMSE 11/2004 8

Notes Description de base : RFC 2717 Règles de création : RFC 2718 Syntaxe des URN : RFC 2141 urn: <nid> : <namespace specific string> Syntaxe des URI : RFC 2396 <scheme>://<authority><path>?<query> quelques schémas : http, ftp, gopher, news, telnet, mailto, etc. URL & formes abrégées Syntaxe : http://www.ibiblio.org/xml/signature.xml URL abrégé : /xml/signature.xml URL abrégé relatif : signature.xml Utilisation des NameSpaces J.J. GIRARDOT - EMSE 11/2004 9 Un NameSpace est référencé par un attribut spécial Syntaxes de l'attribut : xmlns = "valeur" xmlns:<prefixe>="valeur" Le préfixe est un identificateur choisi par l'utilisateur La valeur est une URI désignant l'espace de nom Exemples : xmlns:edi='http://ecom.example.org/schema' xmlns='http://www.w3.org/1999/xhtml' J.J. GIRARDOT - EMSE 11/2004 11 Qu'est-ce qu'un espace de Noms? Un ensemble d'identificateurs, appartenant à l'un des trois groupes (sans conflit de nom) : types de données attributs globaux éléments attributs propres à un élément Les types de données permettent de spécifier des types spécifiques à une application déterminée Dans un document : un attribut qualifié est cherché dans les attributs globaux un attribut non qualifié est cherché dans les attributs de l'élément courant Terminologie J.J. GIRARDOT - EMSE 11/2004 10 Préfixe : l'identificateur qui précède «:» dans un nom de balise ou d'attribut le préfixe est défini par l'utilisation d'un attribut xmlns : xmlns:<prefixe>='<espace de noms>' Espace de noms : un URI Nom local : l'identificateur qui suit «:» dans un nom de balise ou d'attribut Nom qualifié : la combinaison d'un préfixe et d'un nom local séparés par le caractère «:», ou un identificateur sans préfixe Nom étendu : l'identification conceptuellement constituée d'un espace de noms et d'un nom local J.J. GIRARDOT - EMSE 11/2004 12

Sémantique L'utilisation d'un attribut xmlns définit une référence à un espace de noms xmlns : espace de noms par défaut xmlns:préfixe : alias d'un espace de nom L'espace de noms ainsi référencé est «actif» pour la balise où apparaît l'attribut, et pour toute balise contenue dans celle-ci Un espace de noms ainsi référencé peut être masqué par une nouvelle déclaration, effectué au sein d'une balise contenu dans la balise courante Plusieurs espaces de noms peuvent être référencés au sein d'une même balise Exemple 2 J.J. GIRARDOT - EMSE 11/2004 13 <?xml version="1.1"?> <!-- initially, the default namespace is "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:isbn:0-395-36341-6'> <title>cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> <notes> <!-- make HTML the default namespace for some commentary --> <p xmlns='http://www.w3.org/1999/xhtml'> This is a <i>funny</i> book! </p> </notes> </book> J.J. GIRARDOT - EMSE 11/2004 15 Exemple 1 Éléments provenant de deux NameSpaces <?xml version="1.1"?> <!-- unprefixed element types are from "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:isbn:0-395-36341-6'> <title>cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> </book> Exemple 3 J.J. GIRARDOT - EMSE 11/2004 14 <?xml version='1.1'?> <Beers> <!-- the default namespace inside tables is that of HTML --> <table xmlns='http://www.w3.org/1999/xhtml'> <th><td>name</td><td>origin</td><td>description</td></th> <tr> <!-- no default namespace inside table cells --> <td><brandname xmlns="">huntsman</brandname></td> <td><origin xmlns="">bath, UK</origin></td> <td> <details xmlns=""><class>bitter</class><hop>fuggles</hop> <pro>wonderful hop, light alcohol, good summer beer</pro> <con>fragile; excessive variance pub to pub</con> </details> </td> </tr> </table> </Beers> J.J. GIRARDOT - EMSE 11/2004 16

Exemple 4 Utilisation incorrecte les noms étendus des attributs d'un même élément doivent être différents <!-- http://www.w3.org is bound to n1 and n2 --> <x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org" > <bad a="1" a="2" /> <bad n1:a="1" n2:a="2" /> </x> Exemple 5 Utilisation correcte <!-- http://www.w3.org is bound to n1 and is the default --> <x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <good a="1" b="2" /> <good a="1" n1:a="2" /> </x> Note : dans le second exemple, a="1" est l'attribut local de l'élément good du NS "http://www.w3.org", alors que n1:a="2" est l'attribut global de ce même NS. J.J. GIRARDOT - EMSE 11/2004 17 Quelques NameSpaces et leurs URI XML Schemas : http://www.w3.org/2001/xmlschema SMIL 2.0 : http://www.w3.org/2001/smil20/pr/ XHTML : http://www.w3.org/1999/xhtml Voice XML : http://www.w3.org/2001/vxml RDF : http://www.w3.org/1999/02/22-rdf-syntax-ns# SVG : http://www.w3.org/2000/svg Xlink : http://www.w3.org/1999/xlink XSLT : http://www.w3.org/1999/xsl/transform XSI : http://www.w3.org/2001/xmlschema-instance EV : http://www.w3.org/2001/xml-events... J.J. GIRARDOT - EMSE 11/2004 19 XML Schemas Syntaxe XML (il existe un Schéma for Schemas) Utilisation et support des Namespaces J.J. GIRARDOT - EMSE 11/2004 18 Déclarations «orientées objet» (héritage, types abstraits ) Définition de types global (top-level) et local (inlined) Modularité (inclusion de schema et redéfinitions) Structure auto-documentée Expression de la cardinalité des sous-éléments Valeurs nulles (absence de contenus) Attributs et éléments par défaut Any-element, any-attribute Unicité des contraintes et ID/IDREF attribute scope Expressions régulières pour specifier des chardata et des attributs valides Nombreux types de données prédéfinis pour les contenus et les attributs J.J. GIRARDOT - EMSE 11/2004 20

Exemple : BookStore.dtd <!ELEMENT BookStore (Book+)> <!ELEMENT Book (Title, Author, Date, ISBN, Publisher)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> <!ELEMENT Date (#PCDATA)> <!ELEMENT ISBN (#PCDATA)> <!ELEMENT Publisher (#PCDATA)> Une dtd simple J.J. GIRARDOT - EMSE 11/2004 21 BookStore.xsd xsd = Xml-Schema Definition <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" 1 targetnamespace="http://www.books.org" 2 xmlns="http://www.books.org" 3 elementformdefault="qualified"> 4 5 <xsd:element name="bookstore"> 6 <xsd:element ref="book" minoccurs="1" maxoccurs="unbounded"/> <xsd:element name="book"> <xsd:element ref="title" minoccurs="1" maxoccurs="1"/> <xsd:element ref="author" minoccurs="1" maxoccurs="1"/> <xsd:element ref="date" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="publisher" minoccurs="1" maxoccurs="1"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> J.J. GIRARDOT - EMSE 11/2004 22 Utilisation du schéma <?xml version="1.0"?> <BookStore xmlns ="http://www.books.org" 1 xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.books.org BookStore.xsd"> <Book> <Title>My Life and Times</Title> <Author>Paul McCartney</Author> <Date>July, 1998</Date> <ISBN>94303-12021-43892</ISBN> <Publisher>McMillin Publishing</Publisher> </Book>... </BookStore> 1. Cette déclaration d'un espace de noms par défaut indique que tous les noms non qualifiés sont définis dans l'espace de noms dont l'uri est http://www.books.org. 2. Nous allons faire référence à un attribut "schemalocation" dont les caractéristiques sont définies dans la norme 1 des schémas, à l'uri http://www.w3.org/2001/xmlschema-instance. 3. L'attribut "schemalocation" indique au valideur de schémas que l'espace de noms http://www.books.org est défini par "BookStore.xsd" (schemalocation se compose de deux valeurs). 2 3 J.J. GIRARDOT - EMSE 11/2004 23 Liaison schéma - document schemalocation="http://www.books.org BookStore.xsd" BookStore.xml - fait référence aux éléments de l'espace de noms http://www.books.org targetnamespace="http://www.books.org" BookStore.xsd - définit les éléments de l'espace de noms http://www.books.org J.J. GIRARDOT - EMSE 11/2004 24

Faire coexister deux espaces de noms Éléments de l espace de noms des Schémas Éléments de l espace de noms en cours de définition Solution 1 :les noms des Schémas sont qualifiés ; la cible est prise comme espace de noms par défaut. http://www.w3.org/2001/xmlschema http://www.books.org (targetnamespace) Solution 2 Choisir XMLSchema comme espace de noms par défaut http://www.w3.org/2001/xmlschema http://www.books.org (targetnamespace) complextype element sequence schema boolean string integer BookStore Author Book Title Publisher ISBN Date complextype element sequence schema boolean string integer BookStore Author Book Title Publisher ISBN Date J.J. GIRARDOT - EMSE 11/2004 25 J.J. GIRARDOT - EMSE 11/2004 26 <?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns:bk="http://www.books.org" elementformdefault="qualified"> <element name="bookstore"> <complextype> <sequence> <element ref="bk:book" maxoccurs="unbounded"/> </sequence> </complextype> </element> <element name="book"> <complextype> <sequence> <element ref="bk:title"/> <element ref="bk:author"/> <element ref="bk:date"/> <element ref="bk:isbn"/> <element ref="bk:publisher"/> </sequence> </complextype> </element> <element name="title" type="string"/> <element name="author" type="string"/> <element name="date" type="string"/> <element name="isbn" type="string"/> <element name="publisher" type="string"/> </schema> L espace de noms par défaut est celui des Schémas. Il n est pas nécessaire de qualifier : - schéma - élément - complextype - séquence - string Le préfixe bk sert à référencer l espace cible. Les noms des éléments sont des identificateurs. Il n y a pas d ambiguïté dans leur utilisation. J.J. GIRARDOT - EMSE 11/2004 27 <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns="http://www.books.org" elementformdefault="qualified"> <xsd:element name="bookstore"> <xsd:element name="book" maxoccurs="unbounded"> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> Autre écriture La définition des éléments est interne (locale) J.J. GIRARDOT - EMSE 11/2004 28

Définition des types d éléments Deux écritures: Sous forme d attribut <xsd:element name="name" type="type" minoccurs="int" maxoccurs="int"/> Sous forme de contenu <xsd:element name="name" minoccurs="int" maxoccurs="int"> Quels types sont-ils disponibles? Un exemple : date Type primitif Représentation d une date : an, mois et jour Syntaxe : CCYY-MM-DD Exemple 4 mars 2004 est noté 2004-03-04 Contraintes CC et YY compris entre 00 et 00 MM compris entre 01 et 12 DD compris entre 01 et 28, 29, 30 ou 31 selon le mois et l an J.J. GIRARDOT - EMSE 11/2004 29 J.J. GIRARDOT - EMSE 11/2004 30 Types primitifs string boolean decimal float double duration datetime time date gyearmonth gyear gmonthday gday gmonth hexbinary base64binary anyuri Qname NOTATION Note: 'T' séparateur date/time INF = infinity NAN = not-a-number "Hello World" {true, false, 1, 0} 7.08 12.56E3, 12, 12560, 0, -0, INF, -INF, NAN 12.56E3, 12, 12560, 0, -0, INF, -INF, NAN P1Y2M3DT10H30M12.3S format: CCYY-MM-DDThh:mm:ss format: hh:mm:ss.sss format: CCYY-MM-DD format: CCYY-MM format: CCYY format: --MM-DD format: ---DD format: --MM chaîne hexadécimale chaîne base 64 URI/URN/URL Nom qualifié Notation Types dérivés Types dérivés prédéfinis Restriction sur des types primitifs Ex : Entier positif : positiveinteger Types construits (user defined) Types simples Restrictions de types prédéfinis par spécifications de facettes length, minlenght, maxlength, pattern, enumeration, whitespace Types complexes Composition J.J. GIRARDOT - EMSE 11/2004 31 J.J. GIRARDOT - EMSE 11/2004 32

normalizedstring token language IDREFS ENTITIES NMTOKEN NMTOKENS Name NCName ID IDREF ENTITY integer nonpositiveinteger negativeinteger long int short byte nonnegativeinteger unsignedlong unsignedint unsignedshort unsignedbyte positiveinteger Une chaîne sans TAB, CR ou LF Une chaîne normalisée any valid xml:lang value, e.g., EN, FR,... Un identificateur Un identificateur non qualifié 456 -infini à 0 -infini à -1-9223372036854775808 à 9223372036854775807-2147483648 à 2147483647-32768 à 32767-127 à 128 0 à infini 0 à 18446744073709551615 0 à 4294967295 0 à 65535 0 à 255 1 à infini J.J. GIRARDOT - EMSE 11/2004 33 <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns="http://www.books.org" elementformdefault="qualified"> <xsd:simpletype name="isbntype"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{1}-\d{5}-\d{3}-\d{1}"/> <xsd:pattern value="\d{1}-\d{3}-\d{5}-\d{1}"/> <xsd:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"/> <xsd:element name="bookstore"> <xsd:element name="book" maxoccurs="unbounded"> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:gyear"/> <xsd:element name="isbn" type="isbntype"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> Nous définissons ici le Type ISBNType. Date est de type gyear, ISBN de type ISBNType J.J. GIRARDOT - EMSE 11/2004 34 Type énumération de schémas Exemple : type énumérés <xsd:simpletype name="isbntype"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{1}-\d{5}-\d{3}-\d{1}"/> <xsd:pattern value="\d{1}-\d{3}-\d{5}-\d{1}"/> <xsd:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"/> <xsd:simpletype name="isbntype"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{1}-\d{5}-\d{3}-\d{1} \d{1}-\d{3}-\d{5}-\d{1} \d{1}-\d{2}-\d{6}-\d{1}"/> La barre verticale signifie "ou" <xsd:simpletype name="shape"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="circle"/> <xsd:enumeration value="triangle"/> <xsd:enumeration value="square"/> Nouveau type : shape. Un élément de ce type doit avoir l une des valeurs circle, triangle, ou square. J.J. GIRARDOT - EMSE 11/2004 35 J.J. GIRARDOT - EMSE 11/2004 36

Facettes des integer Les entiers ont 8 facettes: totaldigits pattern whitespace enumeration maxinclusive maxexclusive mininclusive minexclusive Type contraint <xsd:simpletype name= "EarthSurfaceElevation"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="-1290"/> <xsd:maxinclusive value="29035"/> Nouveau type 'EarthSurfaceElevation'. Les éléments de ce type sont des entiers compris entre -1290 et 29035. J.J. GIRARDOT - EMSE 11/2004 37 J.J. GIRARDOT - EMSE 11/2004 38 Agencement des contraintes Syntaxe : Par "ou logique" pattern et enumeration Par "et logique" autres contraintes <xsd:simpletype name="nom"> <xsd:restriction base="xsd:base"> <xsd:facette value="valeur"/>... J.J. GIRARDOT - EMSE 11/2004 39 Héritage des contraintes <xsd:simpletype name= "EarthSurfaceElevation"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="-1290"/> <xsd:maxinclusive value="29035"/> <xsd:simpletype name= "BostonAreaSurfaceElevation"> <xsd:restriction base="earthsurfaceelevation"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="120"/> J.J. GIRARDOT - EMSE 11/2004 40

Déclaration des types simples Par restriction sur les facettes de types primitifs ou de types simples définis Par union de types simples <xsd:union membertypes="type1 type2 type3"> Par liste de types simples <xsd:list itemtypes="xsd:positiveinteger"> Une liste a une facette length sur laquelle il est possible de placer des restrictions J.J. GIRARDOT - EMSE 11/2004 41 Syntaxe : Types complexes <xsd:complextype name="nom"> <xsd:constructeur> <xsd:element name="nom"/> <xsd:attribute name="nom"/>... </xsd:constructeur> Les constructeurs sequence, choice et all Les contenus element ou attribute, attribut mixed J.J. GIRARDOT - EMSE 11/2004 42 Autres aspects Balise any pour autoriser n'importe quel élément Balise anyattribute pour les attributs Noms globaux et noms internes Expressions régulières pour les chaînes Types et éléments abstraits Espaces de noms distincts pour : éléments attributs types attributs globaux J.J. GIRARDOT - EMSE 11/2004 43