DTD & XML Schema. Sébastien Laborie Sebastien.Laborie@iutbayonne.univ- pau.fr. Christian Sallaberry Christian.Sallaberry@univ- pau.

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

Master d Informatique Corrigé du partiel novembre 2010

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

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

Gestion Électronique de Documents et XML. Master 2 TSM

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

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

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

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

BD et XML : Exercices

XML : documents et outils

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

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

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

Web Application Models

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

ech-0148 Motifs d annonce Entreprises - taxes de domaine

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

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

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

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

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

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

HTML. Notions générales

L architecture des services Web

SII Stage d informatique pour l ingénieur

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

Cúram JMX - Guide de configuration

Formation HTML / CSS. ar dionoea

Programmation Internet Cours 4

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

Créer une base de données vidéo sans programmation (avec Drupal)

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

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

4. SERVICES WEB REST 46

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

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

Bases de données relationnelles

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

Spécifications techniques et fonctionnelles du multi-années pour les noms de domaine en.fr

HTML, CSS, JS et CGI. Elanore Elessar Dimar

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

< Atelier 1 /> Démarrer une application web

Introduction : présentation de la Business Intelligence

STAGE IREM 0- Premiers pas en Python

Projet Java EE Approfondi

Document Object Model (DOM)

Langage SQL : créer et interroger une base

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

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Formationcontinue: MaîtriserXMLetXSLT

EXPOSE. La SuisseID, qu est ce que c est? Secrétariat d Etat à l Economie SECO Pierre Hemmer, Chef du développement egovernment

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

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

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

Les architectures 3-tiers Partie I : les applications WEB

Module : programmation site Web dynamique Naviguer entre les pages via site map

Information utiles. webpage : Google+ : digiusto/

Les Services Web. Jean-Pierre BORG EFORT

Formation. Module WEB 4.1. Support de cours

Extended communication server 4.1 : VoIP SIP service- Administration

PROSOP : un système de gestion de bases de données prosopographiques

Définitions. Numéro à préciser. (Durée : )

Production de documents avec XSLT. Production de documents p.1/??

SEMANTIQUE DES MODELES D'ECHANGE DE DONNEES

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

OCL - Object Constraint Language

STID 2ème année : TP Web/PHP

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

L'essentiel de XML. Cours XML. Olivier Carton

Représentation des Nombres


Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Créer le schéma relationnel d une base de données ACCESS

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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

Outils logiciels pour l'ingénierie documentaire

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Approche Contract First

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

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

Mysql avec EasyPhp. 1 er mars 2006

Learning Object Metadata


5. L Entreprise et les politiques budgétaires

Système d Analyse des Commandes : Dispositif Technique

Les bases de données Page 1 / 8

Créer et partager des fichiers

Génie Logiciel avec Ada. 4 février 2013

Introduction à Microsoft InfoPath 2010

Bases de données avancées Introduction

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

Documentation RBS Change E-Commerce Core

Transcription:

DTD & XML Schema Sébastien Laborie Sebastien.Laborie@iutbayonne.univ- pau.fr Christian Sallaberry Christian.Sallaberry@univ- pau.fr DTD Le rôle d une DTD (Document Type Definition) est de définir la structure d un document XML. Elle va permettre de répondre aux questions suivantes : Quels sont les noms des éléments que je souhaite exploiter au sein de mon document XML? Quels sont les attributs que je souhaite associer à un élément? Un attribut donné est-il obligatoire ou facultatif dans un élément? Est-ce qu un élément imbrique d autres éléments, et si oui lesquels? Est-ce qu un élément est toujours vide ou non? Une DTD est une sorte de grammaire. Tout document XML qui fait référence à cette grammaire doit la respecter. 2 1

Un exemple de DTD Une DTD se décrit de la forme suivante : Déclaration d éléments Déclaration d attributs Déclaration d entités <!ELEMENT note (to,from,heading,body)>! <!ELEMENT to (#PCDATA)>! <!ELEMENT from (#PCDATA)>! <!ELEMENT heading (#PCDATA)>! <!ELEMENT body (#PCDATA)>! <!ATTLIST body lang CDATA #IMPLIED! signature CDATA #REQUIRED>! <!ENTITY sl "Sébastien Laborie">!...!! Elle peut s écrire! dans un fichier.dtd ou bien à l intérieur d un fichier XML. 3 Déclaration des éléments Tout élément est déclaré : o Soit à l aide d un nom et d une catégorie. o Soit à l aide d un nom et d un type de contenu. <!ELEMENT nom categorie>! <!ELEMENT nom (type-contenu)>! Un élément peut appartenir à une catégorie : o Vide : il ne contiendra ni de texte, ni d autres éléments. o Quelconque : il contiendra n importe quel type de contenu. Un élément peut contenir différents types de contenu : o Texte : il contiendra une séquence de caractères. o Séquence d éléments : il contiendra une suite ordonnée d éléments. o Alternative d éléments : il pourra potentiellement contenir les éléments spécifiés. Un élément ne peut être déclaré qu une seule fois. Tout élément utilisé dans la DTD doit être déclaré. 4 2

Déclaration des éléments Déclaration d un élément de catégorie vide. <!ELEMENT elt EMPTY>! L élément ayant comme nom elt sera vide. o Exemple : <elt /> Pour rappel, un élément vide ne peut ni contenir de texte, ni contenir d autres éléments. Par contre, un élément de type vide peut bien sûr avoir des attributs. 5 Déclaration des éléments Il est possible de déclarer des éléments quelconques : <!ELEMENT elt ANY>! Cet élément peut contenir tout autre élément défini dans la DTD (c-à-d, pas d éléments non-déclarés). Cet élément peut aussi contenir du texte. Cet élément est «risqué» car il ne permet pas de contrôler vraiment les éléments qui seront inclus dans elt. 6 3

Déclaration des éléments Déclaration d un élément de type texte. <!ELEMENT elt (#PCDATA)>! L élément ayant comme nom elt contiendra du texte. o Exemple : <elt>je suis un élément qui contient du texte.</elt> Par conséquent, dans le XML, cet élément ne doit pas contenir les caractères suivants : <, >, &, et ". De plus, l élément ne peut pas contenir d autres éléments. 7 Déclaration des éléments Déclaration d un élément de type séquence. <!ELEMENT elt (elt1, elt2, elt3)>! L élément ayant comme nom elt contiendra une liste ordonnée d éléments (l ordre doit être respecté). o Exemple : <elt> <elt1> </elt1> <elt2> </elt2> <elt3> </elt3> </elt> 8 4

Déclaration des éléments Déclaration d un élément de type alternative. <!ELEMENT elt (elt1 elt2 elt3)>! L élément ayant comme nom elt pourra contenir soit elt1, soit elt2 ou soit elt3. o Exemple : <elt> <elt1> </elt1> </elt> <elt> <elt3> </elt3> </elt> L élément ne peut être vide dans notre exemple. De plus, il ne peut contenir deux éléments. 9 Déclaration des éléments Des indicateurs d occurrence peuvent s appliquer à chaque élément, ceci est également utile dans et pour des séquences ou alternatives d éléments : o? : symbolise 0 ou une seule occurrence de l élément. o + : symbolise une ou plusieurs occurrences de l élément. o * : symbolise 0 ou plusieurs occurrences de l élément. Exemples : <!ELEMENT elt (elt1, elt2?, elt3+, elt4*)>! <!ELEMENT elt (elt1* elt2* elt3*)>! <!ELEMENT elt (elt1 elt2 elt3)*>! 10 5

Déclaration des éléments Il est possible de déclarer des éléments mixtes : <!ELEMENT elt (#PCDATA elt1)*>! Ces éléments peuvent contenir du texte ou bien d autres éléments (rq., #PCDATA doit être en premier). Exemple : <elt> <elt1> </elt1> Salut! <elt1> </elt1> </elt> <elt /> <elt> Salut! </elt> 11 Questions Déclarer les éléments de la recette de cuisine. (on ne contrôle pas pour le moment les attributs) Que doit-on écrire pour pouvoir associer la DTD au fichier recettes.xml? (cf., cours 1) 12 6

Utilisation de la DTD Un document XML peut faire référence à une DTD. (cf., Cours 1). o Elle peut être déclarée en interne directement dans le prologue. <!DOCTYPE collection [! <!-- Contenu de la DTD à renseigner ici -->! ]>! o Elle peut faire référence à une DTD externe. Votre DTD locale (ou mise à disposition sur le Web) <!DOCTYPE collection SYSTEM "magrammaire.dtd">! <!DOCTYPE collection SYSTEM "http://www.ex.com/magrammaire.dtd">! Référence à une DTD connue avec un FPI (ex., XHTML) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"! "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">! 13 Déclaration des aeributs Il est possible de déclarer et d'attacher un ensemble d attributs spécifiques à un élément. Cette déclaration s effectue par le mot-clé ATTLIST. <!ELEMENT elt ( )>! <!ATTLIST elt nom type valeur>! Chaque attribut défini dans la liste possède un nom, un type et une valeur par défaut. Exemple : <!ELEMENT elt ( )>! <!ATTLIST elt attr1 CDATA "0"! attr2 CDATA "" >! 14 7

Déclaration des aeributs Il existe différents types d attributs : o CDATA : Il s agit de texte. o NMTOKEN : Un seul mot sans espace, ni ponctuation. o ID : Identifiant unique de l élément. o IDREF : Une référence vers un identifiant du document. o IDREFS : Des références vers plusieurs identifiants du document. Exemple : <!ELEMENT elt( )>! <!ATTLIST elt attr1 CDATA "jus de fruit"! attr2 NMTOKEN "euro" >! Attention : o Il ne peut y avoir deux ID pour une même liste d attributs concernant un élément. o Les valeurs des ID doivent tous être différents au sein du document XML. 15 Déclaration des aeributs Un attribut peut faire l'objet de contraintes : o Valeur par défaut o Requis (#REQUIRED) : l attribut est obligatoire. o Optionnel (#IMPLIED) : l attribut peut être omis. o Fixe (#FIXED) : l attribut contient une valeur fixe (l utilisateur ne peut la changer). Exemple : <!ELEMENT elt( )>! <!ATTLIST elt attr1 CDATA "0"!!! attr2 CDATA #REQUIRED! attr3 CDATA #IMPLIED! attr4 CDATA #FIXED "valeur" >! 16 8

Déclaration des aeributs Un attribut peut être de type énuméré : o La liste des valeurs possibles pour un attribut peut être limitée. o À la place du type, il suffit de spécifier toutes les alternatives possibles comme valeur. Exemple : <!ELEMENT elt( )>! <!ATTLIST elt attr1 (val1 val2) #REQUIRED!!!! attr2 (val3 val4) "val3" >!! 17 Questions Déclarer les attributs de la recette de cuisine pour les éléments qui les exploitent. Valider la collection de recettes de cuisine. 18 9

Déclaration d entités Il est possible de définir ses propres entités dans une DTD. <!ENTITY sl "Sébastien Laborie" >! Ceci évite de répéter plusieurs fois le même texte. Ainsi, nous pouvons exploiter simplement cette entité dans le document XML, en utilisant le & et le ;. Exemple : <elt>&sl; & co.</elt>! 19 Document XML valide Un document XML est dit «valide» : o Si le document XML est «bien formé». o Si le document XML respecte toutes les règles de la DTD. Un document XML «valide» assure l interopérabilité entre différents systèmes exploitant ce type de document. o Par exemple, une page Web «valide» assure qu elle pourra être correctement interprétée par la majorité des navigateurs. 21 10

Exercice! Créez la DTD du Cours 1 Exercice 5 22 Limites des DTD Une DTD n est pas écrite en XML. On ne peut contrôler le nombre d éléments contenu dans une balise. On ne peut contrôler les types des valeurs des attributs. On ne peut décrire ses propres types de données avec une DTD. On ne peut faire des références vers d autres DTD. 23 11

XML Schema Ce langage fournit des nouveautés par rapport au DTD pour mieux contrôler la structure des documents XML. Les schémas XML sont décrits en XML. Le typage des données peut être exploité. o Beaucoup de types sont prédéfinis : date, booléen, entier, texte Un nombre minimum et maximum de présence d un élément peut être renseigné. 24 Structure de base Comme tout document XML, un schéma XML contient un prologue ainsi qu un élément racine. <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001//xmlschema">! <!-- déclarations d'éléments, d'attributs et de types ici --> </xsd:schema>! L élément racine est xsd:schema. Tout élément du langage XML Schema que vous souhaitez utiliser doit commencer par xsd:. 25 12

Déclaration d éléments simples Un élément simple est un élément qui ne contient que des chaînes de caractères. (il ne peut pas contenir d autres éléments, ni d attributs) Cette chaîne de caractères peut correspondre à : o Des types prédéfinis : xsd:string, xsd:decimal, xsd:integer, xsd:boolean, xsd:date o Vos propres types de données. Dans un schéma XML, un élément simple se déclare avec la balise xsd:element. <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001//xmlschema">! <xsd:element name="note" type="xsd:integer" />! </xsd:schema>!! 26 Les types d éléments simples 27 13

Définir des restrictions Un élément simple peut contenir des restrictions. Il existe des restrictions sur des plages de données, des séries de valeurs, des longueurs de caractères Exemple : <xs:element name="note"> <xs:simpletype> <xs:restriction base="xsd:integer"> <xs:mininclusive value="0"/> <xs:maxinclusive value="20"/> </xs:restriction> </xs:simpletype> </xs:element>! 28 Déclaration d éléments complexes Un élément complexe est un élément qui peut contenir d autres éléments ou bien des attributs. Il existe 4 types d éléments complexes : o o o o Les éléments vides. Les éléments qui contiennent d autres éléments. Les éléments (avec des attributs) qui contiennent uniquement du texte. Les éléments qui contiennent du texte et d autres éléments. Dans un schéma XML, un élément complexe se déclare en utilisant la balise xsd:complextype. <xsd:complextype name="personneinfo">!...! </xsd:complextype>! 29 14

Déclaration d éléments complexes 1. Les éléments vides ne contiennent pas de texte, ni d autres éléments. Un élément vide peut bien sûr contenir des attributs. <xsd:complextype name="personneinfo">! <xsd:attribute name="nom" type="xsd:string" />! <xsd:attribute name="prenom" type="xsd:string" />! </xsd:complextype>! Un attribut est optionnel par défaut. Pour que l attribut soit obligatoire : <xsd:complextype name="personneinfo">! <xsd:attribute name="nom" type="xsd:string" use="required" />! <xsd:attribute name="prenom" type="xsd:string" />! </xsd:complextype>! 30 Déclaration d éléments complexes 2. Les éléments qui contiennent d autres éléments. Une séquence d éléments : <xsd:complextype name="personneinfo">! <xsd:sequence>! <xsd:element name="nom" type="xsd:string" />! <xsd:element name="prenom" type="xsd:string" />! </xsd:sequence>! </xsd:complextype>! Une alternative d éléments : <xsd:complextype name="personneinfo">! <xsd:choice>! <xsd:element name="nom" type="xsd:string" />! <xsd:element name="prenom" type="xsd:string" />! </xsd:choice>! </xsd:complextype>! 31 15

Déclaration d éléments complexes 2. Les éléments qui contiennent d autres éléments. Il est possible de contrôler le nombre minimal et maximal d occurrences d un élément. Utilisation de minoccurs et maxoccurs. <xsd:complextype name="personneinfo">! <xsd:sequence>! <xsd:element name="nom" type="xsd:string" />! <xsd:element name="prenom" type="xsd:string" minoccurs="1" maxoccurs="3"/>! </xsd:sequence>! </xsd:complextype>! Les attributs minoccurs et maxoccurs ont par défaut la valeur 1. La valeur unbounded peut être associée à maxoccurs. (infini) 32 Déclaration d éléments complexes 3. Les éléments qui contiennent uniquement du texte. <xsd:complextype name="personneinfo">! <xsd:simplecontent>! <xsd:extension base="xsd:string" >! <xsd:attribute name="pays" type="xsd:string" />! </xsd:extension>! </xsd:simplecontent>! </xsd:complextype>! Dans cet exemple, l élément personne contient du texte et un attribut ayant pour nom pays. 33 16

Déclaration d éléments complexes 4. Les éléments qui contiennent du texte et d autres éléments (élément mixte). <xsd:complextype name="personneinfo" mixed="true">! <xsd:sequence>! <xsd:element name="nom" type="xsd:string" />! <xsd:element name="prenom" type="xsd:string" />! </xsd:sequence>! </xsd:complextype>! Exemple correspondant : <personne>! Je suis <nom>laborie</nom> <prenom>sébastien</prenom>.! </personne>! 34 Déclaration d éléments quelconques Comme pour les DTD, il peut y avoir des éléments quelconques. <xsd:complextype name="personneinfo">! <xsd:sequence>! <xsd:element name="nom" type="xsd:string" />! <xsd:element name="prenom" type="xsd:string" />! <xsd:any />! </xsd:sequence>! </xsd:complextype>! Il est possible de faire de même pour les attributs. <xsd:complextype name="personneinfo">! <xsd:anyattribute />! </xsd:complextype>! 35 17

Utilisation du XML Schema dans un document XML Pour valider votre document XML à l aide d un schéma XML, vous devez ajouter à votre XML ceci : <collection xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="recettes.xsd">!...! </collection>! Bien sûr, votre document XML peut aussi faire référence à une DTD dans le prologue. <?xml version="1.0"?>! <!DOCTYPE collection SYSTEM "recettes.dtd">! <collection xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="recettes.xsd">!...! </collection>! 36 Résumé Une DTD permet assez simplement de contrôler la structure d un document XML. Un schéma XML est plus complexe, il permet de contrôler avec plus de précisions la structure ainsi que les types des éléments ou des attributs. Un schéma XML est décrit en XML. Il peut être utilisé par toutes les technologies/applications XML. o Il peut être interrogé (XPath, XQuery) ou bien être transformé (XSLT). 37 18

Exercices! Créez vos Schéma XML (pour les receees de cuisine) (pour le Cours 1 Exo 5) 38 19