ACCARY-BARBIER / CNAM - Cycle C ère partie : Technologies XML CHAPITRE 1 : XML et DTD CHAPITRE 2 : Schémas XML CHAPITRE 3 : XPath et XSLT CHAPITRE 4 : Applications XML
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Limitations des DTD Les DTDs ont des limitations : Syntaxe particulière Pas la même que celle du balisage des instances Type de données limités : PCDATA Comment imposer qu'un élément soit un entier entre 0 et 100 Pas de définition précise du nombre d'occurrence Constructeurs (, et | ) et indicateurs ( *, + et ? ) ne suffisent pas Possibilités de réutilisations très limitées (uniquement grâce aux ENTITIES) Pas d’héritage
ACCARY-BARBIER / CNAM - Cycle C Objectif de XML-Schémas Développer un mécanisme de schéma (au sens BD) pour exprimer des contraintes sur un type de document Contraintes structurales Ordre, occurrence des éléments, attributs (comme les DTD) En + : intégration des espaces de noms, contraintes incomplètes, héritage Typage des données : chaînes de caractères, entiers, dates, données binaires, uri, etc. Mode d’expression des schémas : structure d’éléments et attributs, syntaxe XML Validation des instances par rapport aux schémas
ACCARY-BARBIER / CNAM - Cycle C Avantages de Schémas sur les DTDs Typage des données Plusieurs types de données Possibilité de créer des types Même syntaxe que les documents On peut parser les schémas avec les parseurs XML On peut transformer les schémas avec XSLT Schémas orientés objet On peut étendre ou restreindre un type Schémas extensibles comme les documents XML On peut réutiliser un schémas dans d'autres schémas On peut créer son propre type de données sur la base d'un type standard On peut référencer plusieurs schémas dans le même document
ACCARY-BARBIER / CNAM - Cycle C Histoire Les schémas XML ont été créés au W3C dans l’activité XML octobre 1998 : création du XML Schema WG février 1999 : publication de la note "XML Schema Requirements" mars 1999 : publication des premiers drafts mai 2001 : recommandation XML Schema 1.0 en 3 documents Primer Structures Datatypes juillet 2002 : nouveau charter (maintenance)
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Structure d’un schéma XML Un schéma XML est un document XML Elément racine Ses éléments de haut niveau servent essentiellement à déclarer Les éléments du type de document défini Les types Les notations Les éléments subordonnés servent essentiellement à déclarer Les modèles de contenus Les attributs applicables aux éléments
ACCARY-BARBIER / CNAM - Cycle C Exemple de schéma XML DTD Schéma XML <attribute name="timestamp" type="date" minOccurs="1"/> D’après H. Thomson
ACCARY-BARBIER / CNAM - Cycle C Caractéristiques des schémas Distinction entre définition de types et définition des éléments qui peuvent apparaître dans les instances Les éléments ont un nom et un type Types simples et complexes Mécanismes de construction de types Classes d’équivalence Construction modulaire Mécanismes d’extension Facilités de documentation des schémas (via oXygen)
ACCARY-BARBIER / CNAM - Cycle C Déclaration d'élément nom : permet de nommer l'élément type : donne le type de l'élément Simple, Complexe
ACCARY-BARBIER / CNAM - Cycle C Déclaration d’attributs : principe nom : permet de nommer l'attribut type : donne le type de l'attribut Simple uniquement Déclaration après les déclarations de type complexe
ACCARY-BARBIER / CNAM - Cycle C Attributs : indicateurs d'occurrences Déclarations d’attributs use : contrôle l’occurrence required, optional, prohibited Default : donne la valeur par défaut Doit être du type déclaré type_attr Fixed (facultatif) : fixe la valeur de l'attribut Les concepts de valeur fixe et de valeur par défaut sont exclusifs
ACCARY-BARBIER / CNAM - Cycle C Groupe d'attributs
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Types Ensemble de contraintes sur les contenus d’élément et les valeurs d’attribut Types simples : contraintes sur les valeurs des chaînes de caractères Pour les éléments qui ne contiennent que du contenu de base (texte, nombres, dates, etc.) Types complexes : contraintes sur les éléments qui contiennent d’autres éléments et/ou ont des attributs Les attributs sont toujours de type simple.
ACCARY-BARBIER / CNAM - Cycle C Types simples Types des éléments qui ne contiennent pas d’autres éléments ou types des attributs Les types simples sont prédéfinis ou dérivés des types prédéfinis Un certain nombre de types simples sont prédéfinis : Chaîne de caractères, nombre décimal, date, entier positif, etc. string, normalizedString, token, byte, unsignedByte, base64Binary, hexBinary, integer, positiveInteger, negativeInteger, nonNegativeInteger, nonPositiveInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, boolean, time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay, Name, QName, NCName, anyURI, language, ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS
ACCARY-BARBIER / CNAM - Cycle C Hiérarchie des types simples prédéfinis
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Types complexes Types des éléments qui contiennent d’autres éléments et/ou ont des attributs Les types complexes sont déclarés par l’élément complexType qui contient Des déclarations d’éléments contenus Déclarations directes Déclarations par référence à un autre élément Des déclarations d’attributs Les éléments sont déclarés par l’élément element Les attributs sont déclarés par l’élément attribute
ACCARY-BARBIER / CNAM - Cycle C Séquences, ensembles et choix Trois éléments pour exprimer les modèles de contenu : Séquence ( sequence ) : les éléments déclarés par les fils doivent apparaître dans l’instance dans le même ordre que dans le schéma Ensemble sans ordre ( all ) : les éléments déclarés par les fils peuvent apparaître au plus une fois dans l’instance, dans un ordre quelconque. all doit être le seul fils d’un modèle de contenu Choix ( choice ) : un seul élément déclaré par un des fils peut apparaître dans l’instance Un élément offre une facilité d’écriture : Groupe ( group ) : équivalent des entités paramètres de XML (interdit dans all ) Les attributs minOccurs et maxOccurs s’appliquent aux éléments sequence, all et choice
ACCARY-BARBIER / CNAM - Cycle C Séquence d'éléments, groupe et choix
ACCARY-BARBIER / CNAM - Cycle C Elément All
ACCARY-BARBIER / CNAM - Cycle C Contraintes d'occurrences et de valeurs Le nombre d’occurrences est contrôlé par les attributs minOccurs et maxOccurs Valeurs possibles : minOccurs : entier positif ou nul maxOccurs : entier positif ou nul, unbounded Valeurs par défaut des deux attributs : 1 (une occurrence obligatoire si les deux attributs sont omis) Les valeurs par défaut et valeur fixe sont définies par les attributs default et fixed default spécifie la valeur à considérer si l’élément est vide dans l’instance Aucune action si l’élément est absent dans l’instance
ACCARY-BARBIER / CNAM - Cycle C Contenu mixte Elément à contenu mixte : Elément qui contient au même niveau : Eléments et texte Attributs et texte attribut mixed de l'élément Par défaut, mixed ="false"
ACCARY-BARBIER / CNAM - Cycle C Contenu non contraint et contenu nul Elément qui n’a aucune contrainte sur son contenu Type de base d’où sont dérivés tous les types simples et complexes : anyType anyType est le type par défaut Elément à contenu nul : Elément qui peut être ne pas avoir de contenu Permet la distinction entre élément absent et élément présent sans contenu Attribut nillable de l'élément Ou
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Types simples dérivés On peut créer de nouveaux types simples en dérivant des types simples existants (prédéfinis ou dérivés) Un nouveau type simple peut être défini par Restriction : sous-ensemble des valeurs d’un type existant liste : liste de valeurs d’un type existant union : choix de valeurs parmi un ensemble de types existant extension Un nouveau type simple est déclaré par un élément simpleType qui contient un élément restriction, list ou union
ACCARY-BARBIER / CNAM - Cycle C Restriction de type simple La restriction d’un type simple se fait par facettes : Pour les nombres, dates, durées : Valeur minimum, valeur maximum, nombre de chiffres, patterns, énumération pour les chaînes, noms, ID : Patterns (expressions régulières), longueur, longueur minimum, longueur maximum Exemple : Le type integer a 8 facettes optionnelles : totalDigits pattern whitespace enumeration maxInclusive maxExclusive minInclusive minExclusive
ACCARY-BARBIER / CNAM - Cycle C Exemples de restriction de type simple
ACCARY-BARBIER / CNAM - Cycle C Listes Suites de type simples (atomiques) 3 types prédéfinis par XML Schémas NMTOKENS ENTITIES IDREF On peut créer d'autres listes par dérivation Possibilité de contraindre encore plus les types en utilisant des facettes Ex : préciser qu'un phonenumber est limité à 10 nombres
ACCARY-BARBIER / CNAM - Cycle C Unions Pour autoriser plusieurs types simples, déclaration d'union de types simples Ex suivant, le type technicalmemo peut contenir des types phonenumber (précédemment décrit) et/ou des chaînes de caractères
ACCARY-BARBIER / CNAM - Cycle C Extension de types simples Élément avec un contenu simple et attributs indique que l'élément ne contient pas de sous-élément. Dérivation d'un type complexe à partir d'un type simple EX : Besoin de définir un élément contenant une valeur simple, et possédant un attribut, comme 67.
ACCARY-BARBIER / CNAM - Cycle C Restriction de types complexes Construction d’un nouveau type complexe en supprimant des composants à un type complexe existant Comparable à la restriction de types simples : les valeurs du nouveau type constituent un sous-ensemble des valeurs du type de base Ajout d’une valeur par défaut Ajout d’une valeur fixe Spécification du type quand aucun type n’était spécifié Réduction du nombre d’occurences (attributs minOccurs et maxOccurs ) La restriction doit répéter explicitement tous les composants du type de base qui sont conservés
ACCARY-BARBIER / CNAM - Cycle C Exemple de restriction
ACCARY-BARBIER / CNAM - Cycle C Extension de types complexes Ajouter des éléments ou attributs à un type complexe Title Author Date Publisher ISBN BookPublication Publication
ACCARY-BARBIER / CNAM - Cycle C Contrôle de la création de types dérivés (1/2) On peut interdire l’extension et/ou la restriction d’un type complexe lors de sa définition Attribut final (valeurs : extension, restriction, #all ) Ex : interdire toute restriction du type Address (mais pas l’extension)
ACCARY-BARBIER / CNAM - Cycle C Contrôle de la création de types dérivés (2/2) On peut interdire la dérivation d’un type simple facette par facette, lors de sa définition Attribut fixed dans la définition de la facette concernée Ex : interdire toute modification de la longueur du type Postcode (mais pas des autres facettes)
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C Schémas modulaires Un schéma XML peut être éclaté en plusieurs fichiers (maintenabilité, lisibilité, réutilisation, contrôle d’accès, etc.) Un fichier est inclus dans un autre par l’élément include Un fichier peut inclure plusieurs autres fichiers Possibilité d'inclusion en cascade L’ensemble des fichiers inclus et incluant doivent concerner le même espace de nom cible Ex : Inclusion avec redéfinition L’élément include permet d’utiliser des définitions et déclarations externes telles quelles. L’élément redefine permet d’utiliser des définitions et déclarations externes en les modifiants.
ACCARY-BARBIER / CNAM - Cycle C Exemple d'inclusion avec redéfinition
ACCARY-BARBIER / CNAM - Cycle C Annotations L’élément annotation permet d’annoter les schémas XML pour le lecteur humain et les applications L’élément annotation a deux sous-éléments : documentation : destiné au lecteur humain appInfo : fournit de l’information aux applications et feuilles de style L’élément annotation peut apparaître au début de la plupart des constructions
ACCARY-BARBIER / CNAM - Cycle C Schémas et instances Une instance ne référence pas forcément un schéma Une instance peut référencer son schéma par l’attribut xsi:schemaLocation Un validateur est libre d’utiliser cette information on non Ex :
ACCARY-BARBIER / CNAM - Cycle C Schémas et Infoset La validité par rapport à une DTD et sont caractère bien- formé sont définies pour des séquences de caractères La validité par rapport à un schéma XML est définie pour un Infoset Modèle de données abstrait pour les documents XML Définit un petit nombre de composants : élément, attribut, etc. Chaque composant a des propriétés : nom, enfants, etc. La validation des instances n’est pas obligatoire Deux fonctions d’un validateur : 1.Vérification de la conformité par rapport aux contraintes exprimées dans le schéma 2.Ajout d’informations à l’ infoset : types, valeurs par défaut, etc.
ACCARY-BARBIER / CNAM - Cycle C Autres mécanismes Espaces de noms Contrôle d’unicité : éléments unique, key, keyref Importations avec dérivations possibles de définitions globales venant de schémas d’espaces de noms différents
ACCARY-BARBIER / CNAM - Cycle C Conclusion Avantages des schémas XML sur les DTD Grand nombre de types offerts, possibilité d’ajouter des contraintes sur les types fournis Possibilité de créer de nouveaux types Héritage de types Support des espaces de noms Indicateurs d’occurrences plus riche Meilleur contrôle des contenus mixtes Modularité Documentation
ACCARY-BARBIER / CNAM - Cycle C Chapitre 2 : Schémas XML 1. Introduction 1.1. Pourquoi XML-Schéma 1.2. Syntaxe des Schémas 2. Typage des éléments et attributs 2.1. Types simples 2.2. Types complexes 2.3. Dérivation de types 3. Validation par schémas En savoir plus…
ACCARY-BARBIER / CNAM - Cycle C En savoir plus… Cours et tutoriels en ligne …. Jean-Jacques Thomasson, 2002, Schémas XML, Eyrolles