Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Architectures Orientées Services Module 1 Rappels sur XML,
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Démystification et grandeur d’un langage Une filiation historique : –GML (méthode de balisage de documents) SGML (standardisation de GML) –HTML (une DTD de SGML) »XML (refonte extensible de SGML) » XHTML ( redressement de HTML) » XSD modélisation de structures XML » RDF représentation de réseaux XML » RDFS/OWL modélisation de réseaux sémantiques RDF Une pérennité en question ? –Réfutation par l’absurdeRéfutation par l’absurde Deux modalités d’expression avec un même méta-langage : –Des contenus sérialisé structurés de messages et de documents Selon des modèles DTD, Schemas XML –Des descriptions de connaissances Organisées en ensembles non ordonnés d’assertions, (prédicats)
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod XML Schema
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Définir un nouveau mécanisme de support à la modélisation Reprenant les acquis des DTD en termes de définition de modèles Arbres d'objets typés et valués Permettant d'exprimer des contraintes fortes Typage de données plus puissant et évolutif Utilisant XML pour définir les modèles eux-mêmes Factorisation des outils et des méthodes En plus Permettre de définir des contraintes incomplètes Complémentarité aux DTD : outil de validation de données S'intégrer à l’ensemble des spécifications W3C Prise en compte des espaces de noms Se rendre indépendant du format XML sérialisé validation appliquée à une structure logique basée sur les XML InfoSet Objectifs
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Approche par l’exemple 1 Un Document XML : Le Modèle XMLSchema référencé par ce document <xs:schema xmlns:xs=" elementFormDefault="qualified">
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Approche par l’exemple 1-bis
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Approche par l’exemple 2
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Approche par l’exemple 3 pomme de terre oignon sel peler les patates précuire les patates à la vapeur peler les oignons faire revenir les oignons
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Approche par l’exemple 4
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Approche par l’exemple 5
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod –Sequence : séquence ordonnée d’éléments (ET logique) –Choice : choix parmi un ensemble d'éléments (OU logique) –All : séquence non ordonnée –Utilisable uniquement au niveau le plus haut d’un modèle de contenu et sur des éléments avec maxOccurs à 1 ; pas sur d’autres groupes. –Contrôle des occurrences : minOccurs, maxOccurs Ordonnancement
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod –Utilisation dans les déclarations d’éléments ou d’attributs Objectifs : définir des types pour les utiliser dans des modèles de contenus ou des déclarations d’attributs Un type est identifié et référencé par son nom ou directement défini (type anonyme) Simple Complexe Notion de type
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod –Apport de l’approche "Objet" –Optimise la modularité –Dérivations de types Simples et complexes Par extension (ajout d’éléments, d’attributs) Par restriction (interdiction d’éléments, d’attributs, ajout de contraintes, facets sur les types simples) –Des types abstraits Utilisés comme des interfaces <element name="DEMANDE" type="string"/> Types et dérivation
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Toutes les définitions de types se font par référence ou par construction à partir de types existants, d'où les deux possibilités : –Extension : on ajoute des informations à un type existant, –Restriction : on façonne un type existant afin de le contraindre par rapport aux valeurs qu'il peut prendre. Types et dérivation
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Les types simples prédéfinis
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod long –-1, unsignedLong –0, short –-1, unsignedShort –0, decimal –-1.23, 0, 123.4, float –-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN double –-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN boolean –true, false 1, 0 time –13:20:00.000, 13:20: :00 dateTime – T13:20: :00 duration –P1Y2M3DT10H30M12.3S date – gMonth – gYear –1999 Schema Les types simples (2)
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod gYearMonth – gDay –---31 gMonthDay – Name –shipTo QName –po:Address NCName –Address anyURI – – language –en-GB, en-US, fr ID –"A212" IDREF –"A212" IDREFS –"A212" "B213" ENTITY ENTITIES NOTATION NMTOKEN, NMTOKENS –US –Brésil Canada Mexique Les types simples (3)
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Decrivons les différents types d'unités de mesure (gramme, kilogramme, litre respectivement 3, 2, 2 digits) : Exemple
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod list : pour structurer un contenu textuel comme une liste –Sur lequel on peut imposer des contraintes union : pour fusionner plusieurs types simples Pierre Paul Jacques Liste et union de types simples
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Contraintes sur type simple prédéfini Utilisation de facettes –Taille fixe, minimale, maximale, nombre de chiffres après la virgule –Domaine de valeurs (bornes min et max) pour les types ordonnés –Expressions régulières Perl Exemple Dérivation de types simples
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Décrivons les types d'unités de mesure possibles avec les abréviations communes (gr pour gramme, kg pour kilogramme, l pour litre...) en utilisant le méchanisme de dérivation : Exemple
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Définition d'objets complexes – : collection ordonnée d'éléments typés – : collection non ordonnée d'éléments typés – : choix entre éléments typés Caractérisation du modèle de contenu –Mixed –Nillable –Empty Exemple Les types complexes
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Définition de sous-types par héritage –Par extension : ajout d'informations –Par restriction : ajout de contraintes Possibilité de contraindre la dérivation –Final : interdit la dérivation du type –Block : empêche la substitution de types Exemple : Dérivation de types complexes
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Decrivons un ingrédient par extension en ajoutant une information de type conservation qui possède les attributs temperature et temps : Exemple
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod En XML schema il est possible (comme avec les DTD) de déclarer des attributs qui sont aussi soumis au processus de typage –Un attribut peut être déclaré au sein de l'élement (de manière anonyme): <xs:element.... –Sa déclaration peut être factorisée : <xs:element.... Les attributs
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Définition en XML Schema des attributs de l'élement ingredient... Exemple
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Un schéma fournit –Des définitions de types –Des déclarations d’éléments et d’attributs appartenant à un espace de noms Chaque instance de document: –Utilise un ou plusieurs espaces de noms –Peut associer chaque espace de nom à un schéma … Espaces de Nommage
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Contraintes sur type simple prédéfini Utilisation d'expression régulières –Similaires à celles de Perl, Python, Tcl, Java Exemple Les patrons, dits « patterns »
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod L'utilisation des expressions régulières permet de définir de manière plus ou moins précise les contenus possibles pour un type. Décrivons le type temperature pour qu'il n'accepte que la forme nn,nnC° : De même pour le type gramme : Exemple
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Possibilité de référencer localement un élément global – (Nom défini au premier niveau) –Importe l'élément et son type Définition de modèles réutilisables dans un schéma –group –attributeGroup Possibilité d'importer les types associés à un espace de noms –<import nameSpace = " – schemaLocation = " /> Possibilité d’inclure ou d'étendre un schéma – –.... Extensions... – Réutilisation
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Réutilisation d'un schema existant déclarant des ingredients : <import nameSpace = " recette.cuisine.org'' schemaLocation = " Exemple
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Les espaces de nommage
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Un espace de nom (namespace) : –permet de garantir l'unicité d'un vocabulaire, –est dépositaire du modèle (de nommage) via l'association d'une URI qui documente et versionne ce dernier, –permet de poser des choix de conception d'un XML Schema pour guider la réutilisabilité des élements qu'il déclare, on parle alors : De forme qualifiée, Et de forme non qualifiée. –... est une forme qualifiée, –... ne l'est pas s'il n'y a pas de déclaration implicite. => importance de l'utilisation des espaces de noms ! Notion d’espace de noms
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod La qualification des éléments dépend des choix de conception d'un XML Schema : –Un même document XML peut être validé par deux Schémas XML différents. Faut-il qualifier ou non ?
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Les deux schémas précédents peuvent être équivalents –Le premier déclare deux éléments globaux : purchaseOrder et comment –Le second déclare plus d'élements globaux : PurchaseOrder ShipTo BillTo Comment Name street Les élements globaux sont considérés comme des racines potentielles pour un document XML ! Les déclarations locales (i.e. Au sein de la déclaration d'un élement) restent ''anonymes'' et leur portée contextuelle, Les déclarations globales sont visibles de tous et peuvent générer des conflits ! Faut-il qualifier ou non ?
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Plus il y a d'élements globaux, plus le risque d'entrer en conflit avec un autre XML Schema est grand : –Si la définition fait partie d'un ensemble, il est conseillé de qualifier pour éviter les conflits, –Si elle représente un modèle unique de documents, avec peu voir pas d'utilisations de vocabulaires externes : Il est possible de ne rien qualifier, Dans le doute, éviter de multiplier les élements globaux et qualifier la racine uniquement. Faut-il qualifier ou non ?
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Lorsque l'on crée un XML Schema, il faut lui associer un espace de nom cible : –Il identifiera de facon unique le modèle –Syntaxe : targetNameSpace='' Tout document se réclamant instance de ce modèle doit importer cet espace de noms. Si l'on veut qualifier les élements et/ou les attributs : –ElementFormDefault = ''true|false'' –AttributeFormDefaut = ''true|false'' Syntaxe complète : <schema xmlns=" xmlns:po=" targetNamespace=" elementFormDefault="qualified" attributeFormDefault="unqualified"> Le processus de qualification
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Exemple de document utilisant une forme qualifiée explicite : <apo:purchaseOrder xmlns:apo=" orderDate=" "> Alice Smith 123 Maple Street Robert Smith 8 Oak Avenue Hurry, my lawn is going wild! Le processus de qualification
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Exemple de document utilisant une forme qualifiée implicite : <purchaseOrder xmlns=" orderDate=" "> Alice Smith 123 Maple Street Robert Smith 8 Oak Avenue Hurry, my lawn is going wild! Le processus de qualification
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Divers
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Wildcards –any –anyAttribute Annotations Unicité et références –unique –key –keyRef Types et éléments abstraits Substitution Autres fonctionnalités
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Mixed Content Empty Content anyType Annotations Attribute Groups Nil Values Specifying Uniqueness Defining Keys & their References Namespaces, Schemas & Qualification Target Namespaces & Unqualified Locals Qualified Locals Global vs. Local Declarations Undeclared Target Namespaces Substitution Groups Abstract Elements & Types Schema Autres possibilités...
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Bilan en l’état de l’art
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Intérêt –Conception : modélisation de classe d’objets Lisibilité Compatibilité XML et espaces de noms Pouvoir de description des structures et des types Pouvoir d'expression de contraintes Très modulaire –Mécanisme de modularisation des modèles (inclusions et dérivation) –Permet des architectures de modèles ouvertes XML comme langage –Toute l’ingénierie réutilisable –Exploitation : validation et utilisation multiples Coopération : plusieurs schémas sur une même instance (modularité) Application spécifique : une instance validée et utilisée dans un contexte applicatif précis Bilan
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Limite –Spécification complexe –Forme verbeuse –Outils (de validation) extrêmement limités et "bogués" aujourd'hui –Contraintes sur les atomes (données), mais pas sur les inter-relations Quel est le rôle du modèle ? Quel est le rôle de l’applicatif ? –Ne permet pas la fragmentation de fichiers de données Nécessité d'une coopération avec DTD ou utilisation de Xinclude –Attention compatibilité DTD Vigilance sur fonctionnalités Schema utilisées si nécessité d’en dériver une DTD Bilan (suite)
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Schema Diagramme XML Spy
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Séquence Choix Tas Schema Diagramme XML Spy
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Schematron –Langage de schema orienté règles –Pattern de contraintes de structure – Relax NG –Langage de schema orienté grammaire –Langage simple de schema spécifiant des modèles de contenus – DSDL (Document Description and Processing Languages) Nouveau projet ISO Ensemble modulaire de spécifications pour décrire –La structure des documents –Les types de données –Les relations entre les différentes ressources Modéliser : mais aussi…
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod x xx yyy Document XML Résolution d'entités /Résolution espaces de noms Reader Contrôle de validité structurelle Contrôle au regard du modèle (DTD / Schéma) Interfaces (SAX, DOM pour partie) Application InfoSet PSVI Spécification La validation vue comme une transformation
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod Les traitements XML Les traitements XML : transformation et interrogation XSL, spécification de transformation initialement dédiée au formatage de la présentation (XSL:FO) XSLT, spécification générique de transformation –XPath langage d’accès aux éléments et attributs XML Xquery langage de requête dans une structure XML.
Cours MIAGE M2 « architectures orientées services » Henry Boccon-Gibod 1) Écrire le schéma validant indifféremment un livre de recettes, une recette, et un fond de cuisine. 2) décrire le principe de description en un schéma unique les différentes sortes de documents intervenant dans le cycle de vie d’un logiciel – En utilisant (import) le schéma de DocBook (documentation technique standard), – En utilisant (import) un schéma support de ressources de signature électronique, Exercices