Conception et développement XML - TD3: Schéma W3C. TD3: Schéma W3C



Documents pareils
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.

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

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

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

BD et XML : Exercices

Web Application Models

Cúram JMX - Guide de configuration

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

Recherche dans un tableau

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

L architecture des services Web

La gestion des protocoles HTTP, FTP, SOAP, etc.

Lancement de la simulation SIMBA

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

<?xml version="1.0" encoding="iso " standalone="yes"?>

XML : documents et outils

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

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

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

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

UML. Diagrammes de classes (suite) Delphine Longuet.

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

Outils logiciels pour l'ingénierie documentaire

Programmation Objet - Cours II

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Les Services Web. Jean-Pierre BORG EFORT

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

Diagramme de classes

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Plateforme PAYZEN. Définition de Web-services

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

ech-0148 Motifs d annonce Entreprises - taxes de domaine

Services web & E-Commerce. David DABOUÉ - daboueda@iro.umontreal.ca Mars 2006

OASIS Date de publication

NOTIONS DE PROBABILITÉS

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

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Livret de l évaluateur : Calcul niveau 2

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

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


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

Développement Web - Object Relational Mapping and Hibernate

CxF - Color exchange Format - Format d'échange de teintes. Le langage universel pour communiquer les teintes de manière numérique.

Les services web. Plan. Définitions et généralités Architecture et technologies au cœur des services web

Manuel d intégration API SOAP SMS ALLMYSMS.COM

DÉCOUVREZ SON FONCTIONNEMENT EN 10 CLICS!

Annexe C Spécification pour les fichiers importés en format XML

Septembre 2012 Document rédigé avec epsilonwriter

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

Application de lecture de carte SESAM-Vitale Jeebop

Système d Analyse des Commandes : Dispositif Technique

Présentation du langage et premières fonctions

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

- Le Diagramme de Gantt. - Le Diagramme de Pert - La Méthode QQCQCCP - La Méthode MOSI - Cahier des charges fonctionnel

Qu'est ce qu'une Fédération d'identités? Définitions Fonctionnement de base Fonctionnement détaillé Les principaux composants

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Université Paris-Dauphine DUMI2E 1ère année, Applications

Les architectures 3-tiers Partie I : les applications WEB

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

Les services Web. Jeremy Fierstone fierston@essi.fr. SAR5 Novembre 2002

XML et DOM. Matériel de cours. mars 1999 version 0.3 dernière modification: 24/3/99

Corrigés des premiers exercices sur les classes

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)

Direction de la Sécurité Sociale

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

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

PRÉCISIONS POUR DÉFINIR VOTRE PROJET COMPTE DE BANQUE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

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

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

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

Université de Sherbrooke, Département d informatique

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

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Plateforme de capture et d analyse de sites Web AspirWeb

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Initiation à la programmation en Python

Gestion Électronique de Documents et XML. Master 2 TSM

Adolphe Francois Julien Marmel Dominique Perlat Olivier Printemps SOAP. Simple Object Access Protocol. Encadrant : Chantal Taconet

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

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

XML et Java Vue Balisée en XML. Programmation avancée NFP 121. XML pourquoi faire? Structuration des données. Titre Auteur Section Paragraphe

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Définition des Webservices Ordre de paiement par . Version 1.0

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Document de spécification du logiciel VALPO Définition du format des fichiers des

Guide Utilisateur ACQUIT : Anomalies issues du Guichet XML

TP3 : Manipulation et implantation de systèmes de fichiers 1

Tutoriel d installation de Hibernate avec Eclipse

Formation HTML / CSS. ar dionoea

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

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Comment utiliser les graines de soja à la cuisine

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Importer un fichier CSV

Transcription:

TD3: Schéma W3C EX1: Déclarations simples Objectif: Mise en jambe Q : Qu'est ce? <xsd:element name="root" type="xsd:integer"/> Q : Qu'est ce? <xsd:element name="root"> <xsd:restriction base="xsd:integer"> <xsd:maxexclusive value="25"/> Q : Qu'est ce? <xsd:element name="root"> <xsd:union> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="100"/> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="300"/> <xsd:maxinclusive value="400"/> </xsd:union> Q : Écrivez un XML Schéma qui donne un modèle de document XML ne contenant qu'un élément "AAA". Cet élément ne contient que du texte. <xsd:element name="aaa" type="xsd:string"/> Q : Nous voulons un élément racine "AAA" ne contenant qu'un élément "BBB" et qu'un élément 1 - ESIAL 3A - 2005/2006

"CCC" (ces deux éléments sont de type string, par exemple). L'ordre d'apparition n'est pas important. On utilisera le pattern (patron?) "all" avec ses attributs "minoccurs" et "maxoccurs" <xsd:complextype mixed="false"> <xsd:all minoccurs="1" maxoccurs="1"> <xsd:element name="bbb" type="xsd:string"/> <xsd:element name="ccc" type="xsd:string"/> </xsd:all> Q : Nous voulons un élément racine "AAA" ne contenant qu'un élément "BBB" suivis d'un élément "CCC"(ces deux éléments sont de type string, par exemple). L'ordre d'apparition est pas important. Utilisez le pattern (patron?) "sequence"; ses attributs ne sont pas nécessaires, leur valeurs par défaut étant 1. <xsd:complextype mixed="false"> <xsd:sequence minoccurs="1" maxoccurs="1"> <xsd:element name="bbb" type="xsd:string"/> <xsd:element name="ccc" type="xsd:string"/> Q : Ici, l'élément "AAA" contient un nombre quelconque d'éléments "BBB" et "CCC" (peut être zéro). On utilisera le pattern "sequence" avec les bonnes valeurs d'attributs. Le but ici est de voir la fonction des attributs "minoccurs" du pattern "sequence" et ceux des éléments fils (inclus dans la séquence). Le document suivant est valide: <AAA xsi:nonamespaceschemalocation="correct_0.xsd" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" > <BBB>111</BBB> <CCC>YYY</CCC> <BBB>222</BBB> <BBB>333</BBB> <CCC>ZZZ</CCC> </AAA> <xsd:complextype mixed="false"> <xsd:sequence minoccurs="0" maxoccurs="unbounded"> <xsd:element name="bbb" type="xsd:string"minoccurs="0" /> <xsd:element name="ccc" type="xsd:string"minoccurs="0" /> Q : Désormais, l'élément "AAA" contient soit "BBB", soit "CCC". On utilisera le pattern "choice". 2 - ESIAL 3A - 2005/2006

<xsd:complextype mixed="false"> <xsd:choice minoccurs="1" maxoccurs="1"> <xsd:element name="bbb" type="xsd:string"/> <xsd:element name="ccc" type="xsd:string"/> </xsd:choice> Q : Nous voulons un élément racine "root" qui ne contient que du texte et un seul attribut ("xx") <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="root"> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute name="xx" type="xsd:string" use="required"/> </xsd:extension> </xsd:simplecontent> Q : Écrivez un XML Schéma qui donne un modèle de document XML ne contenant qu'un élément "AAA". Cet élément racine ne contient que du texte...qui est l'élément par défaut... <xsd:element name="aaa" type="xsd:string"/> Q : Nous voulons maintenant que cet élément racine "AAA" puisse contenir à la fois du texte et un élément "BBB". Pour cela, il faut fixer l'attribut "mixed" de "complextype" à "vrai". Voyez vous une autre possibilité? <xsd:complextype mixed="true"> <xsd:sequence minoccurs="1"> <xsd:element name="bbb" type="xsd:string"/> Q : Écrivez un XML Schéma qui donne un modèle de document XML ne contenant qu'un élément vide "AAA". Cet élément est défini comme un type complexe, de contenu complexe et est une restriction du type de base "anytype". Voici un document valide pour ce Schéma: <AAA xsi:nonamespaceschemalocation="correct_0.xsd" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" /> 3 - ESIAL 3A - 2005/2006

<xsd:complexcontent> <xsd:restriction base="xsd:anytype"/> </xsd:complexcontent> EX2: Déclarations de types Objectif: Le but est d'écrire un schéma W3C pour les documents recettes de cuisine, comme par exemple le fichier egg.xml Q : Voici le document egg.xml <?xml version="1.0" encoding="iso-8859-1"?> <recette xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="cook.xsd"> <nom>oeufs à la coque</nom> <portion>4</portion> <preparation value="1" unit="min"/> <cuisson value="3" unit="min"/> <ingredients> <ing><nom id="ing1">oeufs</nom><nbre>4</nbre></ing> </ingredients> <guide> <block>plongez délicatement les <renvoi ref="ing1">oeufs</renvoi> dans de l'eau portée à ébullition. </block><block>faîtes reprendre l'ébullition, puis baissez le feu et laissez cuire à petits bouillons pendant <cuisson value="3" unit="min"/> minutes. </block><block>égouttez les <renvoi ref="ing1">oeufs</renvoi>, posez-les dans des coquetiers et coupez hortizontalement la partie supérieure pour les déguster.</block> </guide> </recette> Écrivez le modèle de l'élément "recette". Il s'agit d'un élément de type complexe constitué d'une séquence d'éléments "nom", "portion", "préparation", "cuisson", "repos", "ingrédients" et "guide". Remarque: il peut ne pas y avoir de temps de repos ou de temps de cuisson. Écrivez les modèles des éléments "nom" et "portion". Ensuite, écrivez les modèles des éléments "préparation", "cuisson" et "repos" en utilisant le type "unitetempstype" (Déclaré plus loin). Écrivez le modèle de l'élément "ingrédients": il s'agit d'une séquence non limitée d'éléments "ing" (pour ingrédient). Les éléments "ing" sont de type "itype". De même, on demande d'écrire le modèle de l'élément "guide". Déclarez le type "blocktype". Cet élément complexe peut contenir une série non ordonnée d'éléments "renvoi" (de type "renvoitype"), "repos" (de type "unitetempstype"), "strong" (de type "string") et "cuisson" (de type "unitetempstype"). Déclarez le type "renvoitype". Il s'agit d'un type dérivé du type de base "string" auquel on associe un attribut "ref", requis, de type "string". Remarquez que "renvoitype" est un type complexe mais qu'il ne contient pas d'éléments fils. Par conséquent, son contenu doit être inscrit dans un élément "xsd:simplecontent" Déclarez le type "unitetempstype". On lui associe deux attributs ("value" et "unit"). Le type "unitetempstype" est il simple ou complexe? L'attribut "value" est de type "int" (type de base) mais le type de l'attribut "unit" est une restriction du type de base de "string" (les valeurs de cet attributs sont limitées à "minute" et "heure"). Déclarez le type "itype". Il s'agit d'un type complexe puisqu'un élément de ce type contient 4 - ESIAL 3A - 2005/2006

des éléments ("nom" et, au choix "nbre" et "poids"). L'élément "nom", fils d'un élément de type "itype", ne doit pas être confondu avec l'élément "nom" de "recette". C'est pourquoi on décide ici de préciser son type à l'intérieur même de la déclaration de type de "itype". Remarque: "nom" est de type complexe car on lui associe un attribut. Cependant, il ne contient pas d'éléments fils... on se rapportera à la déclaration de "blocktype" pour gérer ce phénomène. Enfin, déclarez le type "poidstype". Il s'agit d'un type complexe dérivant du type de base simple "string" (Il est donc simplecontent). On lui associe un attribut "unit" de type (simple, bien évidement) dérivant de "string" et ne pouvant prendre que les valeurs "gramme" ou "kilogramme". Q : Quelle est la forme du fichier Schéma W3C final? <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="recette"> <xsd:element ref="nom"/> <xsd:element ref="portion"/> <xsd:element ref="preparation"/> <xsd:element ref="cuisson" minoccurs="0" maxoccurs="1"/> <xsd:element ref="repos" minoccurs="0" maxoccurs="1"/> <xsd:element ref="ingredients"/> <xsd:element ref="guide"/> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="portion" type="xsd:int"/> <xsd:element name="preparation" type="unitetempstype"/> <xsd:element name="cuisson" type="unitetempstype"/> <xsd:element name="repos" type="unitetempstype"/> <xsd:element name="ingredients"> <xsd:element ref="ing" maxoccurs="unbounded" /> <xsd:element name="ing" type="itype"/> <xsd:element name="nbre" type="xsd:int"/> <xsd:element name="poids" type="poidstype"/> <xsd:element name="guide"> <xsd:complextype mixed="true"> <xsd:element ref="block" maxoccurs="unbounded"/> <xsd:element name="block" type="blocktype"/> <xsd:element name="renvoi" type="renvoitype"/> <xsd:element name="strong" type="xsd:string"/> <!-- definition des types --> <xsd:complextype name="unitetempstype"> 5 - ESIAL 3A - 2005/2006

<xsd:attribute name="value" type="xsd:int" use="required"/> <xsd:attribute name="unit" use="required"> <xsd:pattern value="min h"/> </xsd:attribute> <xsd:complextype name="itype"> <xsd:element name="nom"> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute name="id" type="xsd:string" use="required"/> </xsd:extension> </xsd:simplecontent> <xsd:choice> <xsd:element ref="nbre"/> <xsd:element ref="poids"/> </xsd:choice> <xsd:complextype name="poidstype"> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute name="unit" use="required"> <xsd:pattern value="gramme kilogramme"/> </xsd:attribute> </xsd:extension> </xsd:simplecontent> <xsd:complextype name="blocktype" mixed="true"> <xsd:choice minoccurs="0" maxoccurs="unbounded"> <xsd:element ref="renvoi" minoccurs="0" maxoccurs="unbounded"/> <xsd:element ref="repos" minoccurs="0" maxoccurs="unbounded"/> <xsd:element ref="strong" minoccurs="0" maxoccurs="unbounded"/> <xsd:element ref="cuisson" minoccurs="0" maxoccurs="unbounded"/> </xsd:choice> <xsd:complextype name="renvoitype"> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute name="ref" type="xsd:string" use="required"/> </xsd:extension> </xsd:simplecontent> 6 - ESIAL 3A - 2005/2006

EX3: Des DTD vers les schémas Objectif: Les schémas permettent de décrire les modèles de données de façon plus précise. Q : Transposez la DTD livres.dtd en un schéma XSD: livres.dtd: <!ELEMENT livres (livre*)> <!ELEMENT livre (titre, auteur+, année, prix)> <!ATTLIST livre edition CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (prenom, nom, laboratoire?, pays)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT année (#PCDATA)> <!ELEMENT prix EMPTY> <!ATTLIST prix monnaie CDATA #REQUIRED valeur CDATA #REQUIRED> <!ELEMENT pays (#PCDATA)> On propose un fichier XML associé: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE livres SYSTEM "livres.dtd"> <livres> <livre edition="paperback"> <titre>xml Weekend Crash Course (with CD-ROM)</titre> <auteur> <prenom>kay</prenom> <nom>ethier</nom> <pays>usa</pays> </auteur> <auteur> <prenom>alan</prenom> <nom>houser</nom> <pays>usa</pays> </auteur> <annee>2004</annee> <prix monnaie="usd" valeur="17.49"/> </livre> <livre edition="relie"> <titre>data on the Web: From Relations to Semistructured Data and XML</titre> <auteur> <prenom>serge</prenom> <nom>abiteboul</nom> <laboratoire>inria</laboratoire> <pays>f</pays> </auteur> <auteur> <prenom>peter</prenom> <nom>buneman</nom> <laboratoire>upenn</laboratoire> <pays>usa</pays> </auteur> 7 - ESIAL 3A - 2005/2006

<annee>1999</annee> <prix monnaie="eur" valeur="38.43"/> </livre> </livres> Q : Que devient le document XML associé? <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="livres"> <xsd:element ref="livre" minoccurs="0" maxoccurs="unbounded"/> <xsd:element name="livre" type="livretype"/> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="auteurtype"/> <xsd:element name="annee"> <xsd:pattern value="[0-9]{4}"/> <xsd:element name="prix" type="prixtype"/> <xsd:element name="prenom" type="xsd:string"/> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="laboratoire" type="xsd:string"/> <xsd:element name="pays" type="xsd:string"/> <xsd:complextype name="livretype"> <xsd:element ref="titre"/> <xsd:element ref="auteur" minoccurs="1" maxoccurs="unbounded"/> <xsd:element ref="annee"/> <xsd:element ref="prix"/> <xsd:attribute name="edition" use="required"> <xsd:enumeration value="paperback"/> <xsd:enumeration value="relie"/> </xsd:attribute> <xsd:complextype name="auteurtype"> <xsd:element ref="prenom"/> <xsd:element ref="nom"/> <xsd:element ref="laboratoire" minoccurs="0"/> <xsd:element ref="pays"/> 8 - ESIAL 3A - 2005/2006

<xsd:complextype name="prixtype"> <xsd:attribute name="valeur" type="xsd:decimal" use="required"/> <xsd:attribute name="monnaie" use="required"> <xsd:enumeration value="usd"/> <xsd:enumeration value="eur"/> </xsd:attribute> Que devient le fichier xml?: <?xml version="1.0" encoding="iso-8859-1"?> <livres xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="book.xsd"> <livre edition="paperback"> <titre>xml Weekend Crash Course (with CD-ROM)</titre>... Q : Modifiez votre schéma XML pour préciser les types utilisés selon les critères suivants: Une année est une chaîne de 4 caractères compris dans l'espace 0...9 Un livre contient exactement un titre, un prix, une année et au moins un auteur. De plus, on associe à des éléments de ce type l'attribut "edition" qui precise si il s'agit d'un paperback ou d'une édition reliée. Un prix est un type complexe qui ne dérive pas d'un type simple et ne contient pas d'élément fils. Cependant, on lui associe deux attributs: "valeur" et "monnaie" ("monnaie" a un type qui dérive de "string", son champs de valeur se limite aux chaînes "USD" et "EUR") 9 - ESIAL 3A - 2005/2006