XML Schema (2) XML, un langage d'arbres. Année 2013-14. Master Pro ILI - Master recherche SIA. 1/38 XML Schema (2) Année 2013-14

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

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

ech-0148 Motifs d annonce Entreprises - taxes de domaine

AdressePostale 1.2 Description d une adresse postale 16/01/2004

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

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

BD et XML : Exercices

Programmation de services sensibles au contexte en téléphonie sur IP

OASIS Date de publication

Algorithmes d'apprentissage

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

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

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

Guide de création de site web optimisé

Séance 1 Introduction aux bases de données

Compte-rendu de projet de Système de gestion de base de données

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

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

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

MISE EN PLACE DES PRÉLÈVEMENTS SEPA PAR LES REMETTANTS HORS CLIENTÈLE DFT

TP3 : Creation de tables 1 seance

Outils logiciels pour l'ingénierie documentaire

Consolidation d un modèle conceptuel de données de Master Data Management

Programmation des Applications Réparties. Parsers XML DOM et SAX

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

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

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

LE PROBLEME DU PLUS COURT CHEMIN

Service d'authentification LDAP et SSO avec CAS

Chapitre 07 Le modèle relationnel des données

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1

1. Utilisation du logiciel Keepass

Windows serveur 2012 : Active Directory

2 Grad Info Soir Langage C++ Juin Projet BANQUE

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

RÈGLES DE TRANSFORMATION DU MCD AU MLD (MRD)

Diagramme de classes

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

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

Titres de créances NégOciables Refonte Informatique et organisationnelle

Créer une base de données

Document Object Model (DOM)

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Les chaînes de caractères

Couples de variables aléatoires discrètes

SOMMAIRE. Travailler avec les requêtes... 3

I4 : Bases de Données

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

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

Le bridge c'est quoi? Laval Du Breuil École de bridge Picatou, Québec

SOMMAIRE 1 INTRODUCTION 4 2 GUIDE D UTILISATION ET TUTORIAUX VIDEOS EN LIGNE 4 3 CONTACTER VOTRE SUPPORT 4 4 RACCOURCIS CLAVIER 5

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Conduite et Gestion de Projet - Cahier des charges

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Élasticité des applications à base de services dans le Cloud

Licences Windows Server 2012 R2 dans le cadre de la virtualisation

Recherche dans un tableau

VLAN Trunking Protocol. F. Nolot

Chapitre 1 : Introduction aux bases de données

des Données et Référentiels sur l'eau Service d'administration Nationale

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

Formation Méthode MDM. Architecture et procédés de modélisation des données de référence

Gestion de parc informatique - Prise en main

Guide de démarrage rapide

Le chiffre est le signe, le nombre est la valeur.

Université de Bangui. Modélisons en UML

Auguria_PCM Product & Combination Manager

Programmation Objet - Cours II

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information

Installation de Windows 2000 Serveur

Didacticiel de mise à jour Web

Conception de circuits numériques et architecture des ordinateurs

Création d objet imbriqué sous PowerShell.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Installation de Windows 2003 Serveur

Chapitre 10 Arithmétique réelle

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

Débuter avec OOo Base

Par : Abdel YEZZA, Ph.D. Date : avril 2011 / mise à jour oct (ajout de la section 3 et augmentation de la section 1)

Utiliser Access ou Excel pour gérer vos données

Module http MMS AllMySMS.com Manuel d intégration

Mobyt Intégration par Webservice TABLE DES MATIERES

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Bases de Données. Plan

Cours Composant 2. Qualité logicielle et spécications algébriques

FORMULAIRE 5 DÉCLARATION TRIMESTRIELLE D'INSCRIPTION À LA COTE

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Export vers le format WAV dans ArtemiS SUITE

Présentation du langage et premières fonctions

Conception et construction d entrepôts en XML

1. Introduction Création d'une requête...2

Dérivation CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES

Introduction : Cadkey

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

LE LANGAGE POWERSHELL

XML et Bases de données. Les bases de données XML natives.

Transcription:

1/38 XML Schema (2) Année 2013-14 XML Schema (2) XML, un langage d'arbres Master Pro ILI - Master recherche SIA Année 2013-14

2/38 XML Schema (2) Année 2013-14 Types et modèles de contenus Type Avec Attributs Sans Attribut contenu contenu vide texte simplecontent contenu avec contenu avec élts élts complexcontent contenu vide contenu texte simpletype complextype

/38 XML Schema (2) Année 2013-14 Dérivation de types simples Dénition de nouveaux types simples à partir de types prédénis pour des attributs ou pour des éléments à contenu simple. Il existe 3 méthodes pour dériver un nouveau type simple la restriction (sur les valeurs) la liste : pour créer des listes de valeurs d'un même type l'union de plusieurs types simples déjà existants

Dérivation de types simples Un nouveau type simple se dénit à l'intérieur d'une balise <xs:simpletype>. dénition globale : la balise peut se trouver à un niveau haut et porter un attribut name. Le type est ainsi nommé et réutilisable. dénition locale (sur un élément ou un attribut) : on parle d'un type anonyme. 4/38 XML Schema (2) Année 2013-14

5/38 XML Schema (2) Année 2013-14 Dérivation par restriction La dérivation par restriction : ajout de contraintes sur un type de base ; type de base déni soit à l'aide de l'attribut base de la balise <xs:restriction> ; soit déni localement par une balise <simpletype> en première position de la balise <xs:restriction>.

6/38 XML Schema (2) Année 2013-14 Dérivation par restriction <xs:simpletype name="mesentiers"> <xs:restriction base="positiveinteger"> <xs:mininclusive value="1" /> <xs:maxinclusive value="10" /> </xs:restriction> </xs:simpletype> <xs:element name="enfant"> <xs:complextype> <xs:sequence> <xs:element name="nom" type="token" /> <xs:element name="prenom" type="token" /> <xs:element name="age" type="mesentiers" /> </xs:sequence> </xs:complextype> </xs:element>

/38 XML Schema (2) Année 2013-14 Dérivation par restriction Ajout de contraintes sur le type de base : on appelle les contraintes des facettes ; les facettes sont dénies pour chaque type de base. On n'applique pas les même facettes sur les types de chaînes de caractères et sur les types numériques.

/38 XML Schema (2) Année 2013-14 Facettes : token Facettes disponibles pour des chaînes de caractères compactées : xs:length pour spécier la longueur en nombre de caractères (pas très utile, en général on préfère les facettes suivantes). Suivant le type de chaînes de caractères, il peut s'agir d'une longueur exprimée en octets ; xs:maxlength ou xs:minlength <xs:simpletype name="chainenonvide"> <xs:restriction base="token"> <xs:minlength value="1" /> </xs:restriction> </xs:simpletype>

9/38 XML Schema (2) Année 2013-14 Facettes : token xs:enumeration avec l'attribut value pour énumérer la liste des valeurs possibles ; <xs:simpletype name="type_transport"> <xs:restriction base="token"> <xs:enumeration value="vélo" /> <xs:enumeration value="métro" /> <xs:enumeration value="bus" /> </xs:restriction> </xs:simpletype> <xs:element name="transport"> <xs:complextype> <xs:attribute name="modetransport" type="type_transport" /> </xs:complextype> </xs:element>

0/38 XML Schema (2) Année 2013-14 Facettes : ottants et dates Facettes disponibles sur des nombres ottants, ou des dates : xs:enumeration xs:maxexclusive et minexclusive xs:maxinclusive et mininclusive <xs:simpletype name="aumoinscent"> <xs:restriction base="integer"> <xs:mininclusive value="100"/> </xs:restriction> </xs:simpletype>

11/38 XML Schema (2) Année 2013-14 Facettes : integer Facettes disponibles sur des entiers et types dérivés : les mêmes que précédemment, plus xs:totaldigits : nombre maximal de chires <xs:simpletype name="tel"> <xs:restriction base="nonnegativeinteger"> <xs:totaldigits value="10" /> </xs:restriction> </xs:simpletype>

2/38 XML Schema (2) Année 2013-14 Facettes : decimal Facettes disponibles sur des décimaux : les mêmes que précédemment, plus xs:fractiondigits : nombre maximal de chires après la virgule <xs:simpletype name="notesur20"> <xs:restriction base="decimal"> <xs:totaldigits value="4" /> <xs:fractiondigits value="2" /> <xs:maxinclusive value="20" /> <xs:mininclusive value="0" /> </xs:restriction> </xs:simpletype>

13/38 XML Schema (2) Année 2013-14 Dérivation par restriction en chaîne les facettes doivent être de plus en plus restrictives une seule facette ne peut pas être redénie : xs:length on peut empêcher de modier une facette par dérivation successive en appliquant sur la facette l'attribut fixed="true" xs:enumeration et xs:pattern ne peuvent pas être xés.

4/38 XML Schema (2) Année 2013-14 Exemple <xs:simpletype name="notesur20"> <xs:restriction base="decimal"> <xs:totaldigits value="4" fixed="true" /> <xs:fractiondigits value="2" fixed="true" /> <xs:maxinclusive value="20" /> <xs:mininclusive value="0" fixed="true" /> </xs:restriction> </xs:simpletype> <xs:simpletype name="notesur10"> <xs:restriction base="notesur20"> <xs:maxinclusive value="10" /> </xs:restriction> </xs:simpletype>

15/38 XML Schema (2) Année 2013-14 Cherchez l'erreur <xs:simpletype name="notesur30"> <xs:restriction base="notesur20"> <xs:maxinclusive value="30" /> </xs:restriction> </xs:simpletype>

15/38 XML Schema (2) Année 2013-14 Cherchez l'erreur <xs:simpletype name="notesur30"> <xs:restriction base="notesur20"> <xs:maxinclusive value="30" /> </xs:restriction> </xs:simpletype> Ce n'est pas une restriction de passer d'un intervalle [0,20] à [0,30]. Cette dérivation n'est donc pas autorisée.

6/38 XML Schema (2) Année 2013-14 La facette whitespace Dénit la politique de gestion des espaces : peut prendre l'une des valeurs : preserve, replace, ou collapse est utilisée pour qualier string (valeur preserve) puis par restriction normalizedstring (valeur replace) : le processeur XML remplacera les ns de ligne, retours chariot et tabulations par des espaces puis toujours par restriction token (valeur collapse) : idem + le processeur XML supprimera les espaces consécutifs et les espaces de début et de n de chaîne.

7/38 XML Schema (2) Année 2013-14 La facette pattern Contraint une valeur à respecter une expression régulière les expressions régulières sont exprimées comme en Perl mais n'utilisent pas les caractères $ et de début et n de ligne permet de dénir des exclusions <xs:simpletype name='better-us-zipcode'> <xs:restriction base='string'> <xs:pattern value='[0-9]{5}(-[0-9]{4})?'/> </xs:restriction> </xs:simpletype> <xs:simpletype name="ukpostcode"> <xs:restriction base="token"> <xs:pattern value="[a-z]{2}\d\s\d[a-z]{2}"/> </xs:restriction> </xs:simpletype>

18/38 XML Schema (2) Année 2013-14 Quelques jokers Perl Quelques rappels.... un caractère (quelconque) \d équivalent à [0-9] \D équivalent à [0-9] (tout sauf un digit) \S non espace ou tabulation \w un mot (caractères alphanumériques et '_') \W pas un mot \n nouvelle ligne \r retour chariot \t tabulation \s espace, tabulation

19/38 XML Schema (2) Année 2013-14 La facette pattern si plusieurs facettes pattern sont posées sur un même type, alors elles forment une disjonction ; si plusieurs facettes pattern sont posées successivement par dérivation, alors elles s'appliquent successivement (elles forment une conjonction)

Dérivation par listes dénit une liste d'items séparés par des espaces. balise <xs:list> avec l'attribut itemtype. exemples : <xs:simpletype name="listeentiers"> <xs:list itemtype="xs:integer"/> </xs:simpletype> <xs:simpletype name="maliste"> <xs:list itemtype="montype"/> </xs:simpletype> comment déniriez-vous une liste de token de taille 10 (n'accepte pas plus de 10 mots)? 20/38 XML Schema (2) Année 2013-14

1/38 XML Schema (2) Année 2013-14 Dérivation par listes <xs:simpletype name="listededixtokens"> <xs:restriction> <xs:simpletype> <!-- définition type de base --> <xs:list itemtype="xs:nmtoken" /> </xs:simpletype> <xs:length value="10" /> <!-- restriction --> </xs:restriction> </xs:simpletype> <xs:element name="liste10tok" type="listededixtokens" />

22/38 XML Schema (2) Année 2013-14 Dérivation par union l'union des espaces lexicaux de plusieurs types balise xs:union avec l'attribut membertypes qui contient la liste des types séparés par des blancs ou des dénitions locales à l'intérieur de xs:union ou bien un mélange des deux. la sémantique du nouveau type est donnée par l'intersection des sémantiques on ne peut plus dériver un tel type par restriction qu'à l'aide des facettes communes.

3/38 XML Schema (2) Année 2013-14 Exemple <xs:simpletype name="noteoulettre"> <xs:union membertypes="notesur20"> <xs:simpletype> <xs:restriction base="xs:token"> <xs:enumeration value="a" /> <xs:enumeration value="b" /> <xs:enumeration value="c" /> <xs:enumeration value="d" /> </xs:restriction> </xs:simpletype> </xs:union> </xs:simpletype>

4/38 XML Schema (2) Année 2013-14 Dérivation de type complexe...à contenu simple à partir d'un type simple La seule dérivation possible est d'ajouter des attributs cela s'appelle une dérivation par extension les dérivations par extension s'appliquent uniquement aux types complexes elles ont une sémantique diérente suivant que la dérivation s'applique aux contenus simples ou complexes.

25/38 XML Schema (2) Année 2013-14 Dérivation de type complexe Exemple : <xs:complextype name="notesur20amentionlibre"> <xs:simplecontent> <xs:extension base="notesur20"> <xs:attribute name="mention" type="token" /> </xs:extension> </xs:simplecontent> </xs:complextype> Remarque : le type de base de l'extension est obligatoirement déni dans l'attribut base, il ne peut pas être déni localement.

6/38 XML Schema (2) Année 2013-14 Dérivation de type complexe...à contenu simple à partir d'un autre type complexe à contenu simple Dérivation par extension : le type note étant toujours à contenu simple, il peut être dérivé par extension de la même manière que xs:notesur20 (on ajoute de nouveaux attributs). Dérivation par restriction : sur le contenu : ajout de facettes (comme pour un type simple) suppression d'attribut(s) : on pose l'attribut use="prohibited" sur le ou les attribut(s) qu'on veut exclure restriction du type d'un attribut (ajout de facettes). On peut conjuguer ces trois restrictions.

Exemple <xs:complextype name="notesur10amention"> <xs:simplecontent> <xs:restriction base="notesur20amentionlibre"> <xs:maxinclusive value="10" /> <xs:attribute name="mention"> <xs:simpletype> <xs:restriction base="xs:token"> <xs:enumeration value="tbien" /> <xs:enumeration value="bien" /> <xs:enumeration value="abien" /> <xs:enumeration value="passable" /> </xs:restriction> </xs:simpletype> </xs:attribute> </xs:restriction> </xs:simplecontent> </xs:complextype> 7/38 XML Schema (2) Année 2013-14

8/38 XML Schema (2) Année 2013-14 Dérivation de type complexe Dérivation par extension d'un type complexe à contenu complexe à partir d'un type complexe Similaire aux cas précédents, mais sémantique diérente : soit on veut dériver un nouveau type complexe en lui ajoutant des attributs on revient au cas précédent ; soit on veut dériver par extension pour enrichir la structure de nouveaux ls. On arrive ici dans des contraintes fortes. Dériver par extension, c'est : inclure dans une séquence le type de base, ajouter à sa suite son extension. Les contraintes : les nouveaux sous-éléments sont à la n, ils sont reliés au type de base par une séquence.

9/38 XML Schema (2) Année 2013-14 Dérivation de type complexe <xs:complextype name="tetape"> <xs:sequence> <xs:element ref="periode" minoccurs="0"/> <xs:element ref="titre"/> </xs:sequence> </xs:complextype> <xs:complextype name="suite"> <xs:complexcontent> <xs:extension base="tetape"> <xs:sequence> <xs:element ref="descriptif" minoccurs="0"/> </xs:sequence> </xs:extension> </xs:complexcontent> </xs:complextype>

0/38 XML Schema (2) Année 2013-14 Dérivation de type complexe Une instance de ce type devra avoir pour éléments ls : <periode>...</periode> (optionnel) <titre>...</titre> <descriptif>...</descriptif> (optionnel)

1/38 XML Schema (2) Année 2013-14 Dérivation de type complexe (2) <xs:complextype name="tetape"> <xs:choice> <xs:element ref="periode"/> <xs:element ref="titre"/> </xs:choice> </xs:complextype> <xs:complextype name="suite"> <xs:complexcontent> <xs:extension base="tetape"> <xs:choice> <xs:element ref="descriptif"/> <xs:element ref="contenu"/> </xs:choice> </xs:extension> </xs:complexcontent> </xs:complextype>

32/38 XML Schema (2) Année 2013-14 Dérivation de type complexe (2) Une instance de ce type devra avoir pour éléments ls l'une de ces quatre structures : <periode>... </periode> <descriptif>... </descriptif> <titre>... </titre> <descriptif>... </descriptif> <titre>... </titre> <contenu>... <contenu> <periode>... </periode> <contenu>... </contenu>

33/38 XML Schema (2) Année 2013-14 Dérivation de type complexe Attention au cas de xs:all : Compte-tenu des restrictions qui s'imposent quant à son utilisation, on ne peut pas dériver par extension un élément qui a en racine un connecteur xs:all.

4/38 XML Schema (2) Année 2013-14 Dérivation de type complexe Dérivation par restriction d'un type complexe à contenu complexe à partir d'un type complexe reprendre la dénition du type de base en enlevant les parties dont on ne veut plus. n'a d'intérêt que pour dénir une hiérarchie, et dans le cadre de la redénition de types. Attention : un modèle déni par restriction doit être conforme à son type de base. Cela veut dire par exemple qu'on ne peut enlever que des sous-éléments optionnels.

35/38 XML Schema (2) Année 2013-14 Dénir des identiants(1) En XML-Schema, on dénit un identiant par l'élément xs:key. Cet élément doit être posé dans un élément qui contiendra l'identiant. <xs:element name="oiseaux"> <xs:complextype> <xs:sequence maxoccurs="unbounded"> <xs:element name="fiche-observations" type="tfiche"/> <! le type TFiche indique notamment la présence d'un attribut id-obs > </xs:sequence> </xs:complextype> <! ICI >

6/38 XML Schema (2) Année 2013-14 Dénir des identiants(2) <! définition de l'identifiant > <xs:key name="numfiche"> <! les éléments fiche-observations qui > <! se trouvent en-dessous de oiseaux > <xs:selector xpath="./fiche-observations"/> <! portent un attribut (@) de nom id-obs > <! et cet attribut est un identifiant > <xs:field xpath="@id-obs"/> </xs:key> </xs:element>

<! à la suite de la clé> <xs:key name="numfiche"> <xs:selector xpath="./fiche-observations"/> <xs:field xpath="@id-obs"/> </xs:key> <! c'est ici qu'on définit qui va référencer numfiche <xs:keyref name="reffiche" refer="numfiche"> <! ce sera dans l'élément aussi-dans > <xs:selector xpath=".//aussi-dans" /> <! et plus particulièrement l'attribut (@) ref-obs > <xs:field xpath="@ref-obs" /> </xs:keyref> </xs:element> 7/38 XML Schema (2) Année 2013-14 Dénir des identiants(3) Et pour y faire référence, on utilise l'élément xs:keyref. Maintenant, pour chaque espèce observée, on trouve un élément aussi-dans qui indique dans quelles autres observations on peut trouver cet oiseau.

8/38 XML Schema (2) Année 2013-14 Dénir des identiants(4) Ce qui donne (avec un ajout de l'élément aussi-dans à l'élément espece) : <fiche-observations auteur="o.peterson" id-obs="obs2"> <lieu>painchonvalle</lieu> <date>2006-12-02</date>... <espece nom="grive mauvis" nbre="20"> <famille>turdidés</famille> <description>en migration probablement.</description> <aussi-dans ref-obs="obs1" /> <aussi-dans ref-obs="obs2" /> <aussi-dans ref-obs="obs4" /> </espece>... </fiche-observations>