XML Syntaxe XML DTD et Schmas 1 Syntaxe

  • Slides: 33
Download presentation
XML: Syntaxe XML, DTD et Schémas 1. Syntaxe XML 2. DTD 3. Schémas 4.

XML: Syntaxe XML, DTD et Schémas 1. Syntaxe XML 2. DTD 3. Schémas 4. Dialectes 5. Références 1

1. Syntaxe XML n n Ecriture par balises Syntaxe des balises <element> contenu de

1. Syntaxe XML n n Ecriture par balises Syntaxe des balises <element> contenu de l’élément </element> n n « element » doit commencer par une lettre Peut comporter : – – – n Des chiffres Des lettres Moins « - » , souligné « _ » , point «. » , deux-points « : » Attention à la casse ! ( « element » != « Element » ) 2

Syntaxe XML <enseignant> <nom>Bonneville</nom> <prenom>François</prenom> <grade>PAST</grade> <enseignements> <cours type=‘CM’> <titre>Web Dynamique</titre> <volume>24</volume> </cours> <cours

Syntaxe XML <enseignant> <nom>Bonneville</nom> <prenom>François</prenom> <grade>PAST</grade> <enseignements> <cours type=‘CM’> <titre>Web Dynamique</titre> <volume>24</volume> </cours> <cours type=‘TP’> <titre>TP Web Dynamique</titre> <volume>18</volume> </cours> </enseignements> </enseignant> 3

Structure hiérarchique du XML n Chaque élément peut avoir un ou plusieurs « enfants

Structure hiérarchique du XML n Chaque élément peut avoir un ou plusieurs « enfants » (ou du texte) n n <nom> est enfant de <enseignant> est parent de <nom> Chaque élément n’a qu’un seul parent Il existe un unique « ancêtre » n Le seul élément qui est l’ancêtre de tous les éléments = l’élément racine (ici <enseignant>) 4

Syntaxe des données n n Les données entre les balises sont des chaînes de

Syntaxe des données n n Les données entre les balises sont des chaînes de caractères Caractères spéciaux n n n &gt pour < &lt pour > &amp pour & &apos pour ‘ &quot pour ‘‘ &#38 ou &#x 26 pour & (numéro dans la page UNICODE) 5

2. Définir une grammaire structurelle : DTD n n « DTD » (Document Type

2. Définir une grammaire structurelle : DTD n n « DTD » (Document Type Definition) La DTD définit la filiation des éléments n n n n Quelle est la racine du document? Qui doit/peut avoir quels enfants ? Combien d’enfants ? Qui peut contenir du texte ? Qui a des attributs particuliers ? Quelles sont les valeurs possibles de ces attributs ? La DTD est définie dans le document XML par la balise <!DOCTYPE – interne au document – dans un fichier externe <!DOCTYPE Introduction <!DOCTYPE racine [. . . ]> racine SYSTEM ’exemple. dtd’> 6

Validité d ’un document XML n Document bien formé (Well Formed document) – –

Validité d ’un document XML n Document bien formé (Well Formed document) – – – n Document valide (Valid document) – Introduction balises correctement imbriquées parsable et manipulable pas nécessairement valide par rapport à la DTD bien formé + conforme à la DTD (ou au schéma) 7

DTD : élément et attribut n <!ELEMENT tag (contenu) – – n Décrit une

DTD : élément et attribut n <!ELEMENT tag (contenu) – – n Décrit une balise qui fera partie du vocabulaire. ex : <!ELEMENT livre (auteur, editeur)> <!ATTLIST tag [attribut type #mode [valeur]]* – – Définit la liste d’attributs pour une balise ex : <!ATTLIST auteur genre CDATA #REQUIRED ville CDATA #IMPLIED> <!ATTLIST editeur ville CDATA #FIXED "Paris"> DTD 8

DTD : Notation n DTD Notations n Exemples – (a, b) séquence – (nom,

DTD : Notation n DTD Notations n Exemples – (a, b) séquence – (nom, prenom, rue, ville) – (a|b) liste de choix – (oui|non) – a? élément optionnel [0, 1] – (nom, prenom? , rue, ville) – a* élément répétitif [0, N] – (produit*, client) – a+ élément répétitif [1, N] – (produit*, vendeur+) 9

Types de données n CDATA – n PCDATA – n Tout texte possible -

Types de données n CDATA – n PCDATA – n Tout texte possible - pour le développement EMPTY – DTD Clé et référence pour les attributs ANY – n Liste de valeurs séparées par | ID et IDREF – n Elément de texte sans descendants ni attributs contenant des caractères à parser Enumération – n Données brutes qui ne seront pas analysées (parsées) Vide 10

Exemple de DTD <!ELEMENT doc (livre* | article+)> <!ELEMENT livre (titre, auteur+)> <!ELEMENT article

Exemple de DTD <!ELEMENT doc (livre* | article+)> <!ELEMENT livre (titre, auteur+)> <!ELEMENT article (titre, auteur*)> <!ELEMENT titre(#PCDATA)> <!ELEMENT auteur(nom, adresse)> <!ATTLIST auteur id ID #REQUIRED> <!ELEMENT nom(prenom? , nomfamille)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT nomfamille (#PCDATA)> <!ELEMENT adresse ANY> DTD 11

Exemple de DTD interne <? XML version="1. 0" standalone="yes"? > <!DOCTYPE CATALOGUE [ <!ELEMENT

Exemple de DTD interne <? XML version="1. 0" standalone="yes"? > <!DOCTYPE CATALOGUE [ <!ELEMENT CATALOGUE (VINS+)> <!ELEMENT VINS (SPECIFICATION+, ANNEE, PRIX)> <!ATTLIST VINS NOM CDATA #REQUIRED> <!ELEMENT SPECIFICATION EMPTY> <!ATTLIST SPECIFICATION PROVENANCE CDATA #REQUIRED COULEUR CDATA #REQUIRED> <!ELEMENT ANNEE (#PCDATA)> <!ELEMENT PRIX (#PCDATA)> ]> <CATALOGUE> <VINS NOM="Saint-Emilion"> <SPECIFICATION PROVENANCE="Bordeaux" COULEUR="Rouge"/> <ANNEE>1999</ANNEE> <PRIX>250 F</PRIX> </VINS> ……. . . </CATALOGUE> DTD 12

Exemple de ID et IDREF <? xml version="1. 0" standalone="yes"? > <!DOCTYPE DOCUMENT [

Exemple de ID et IDREF <? xml version="1. 0" standalone="yes"? > <!DOCTYPE DOCUMENT [ <!ELEMENT DOCUMENT(PERSONNE*)> <!ELEMENT PERSONNE (#PCDATA)> <!ATTLIST PERSONNE PNUM ID #REQUIRED> <!ATTLIST PERSONNE MERE IDREF #IMPLIED> <!ATTLIST PERSONNE PERE IDREF #IMPLIED> ]> <DOCUMENT> <PERSONNE PNUM = "P 1">Marie</PERSONNE> <PERSONNE PNUM = "P 2">Jean</PERSONNE> <PERSONNE PNUM = "P 3" MERE="P 1" PERE="P 2">Pierre</PERSONNE> <PERSONNE PNUM = "P 4" MERE="P 1" PERE="P 2">Julie</PERSONNE> </DOCUMENT> DTD 13

DTD externe n Modèle pour plusieurs documents – n Définition locale ou externe –

DTD externe n Modèle pour plusieurs documents – n Définition locale ou externe – – n partage des balises et structures <!DOCTYPE doc SYSTEM "doc. dtd"> <!DOCTYPE doc PUBLIC "www. e-xmlmedia. com/doc. dtd"> Exemple de document <? xml version="1. 0" standalone="no"? > <!DOCTYPE VINS SYSTEM "vins. dtd">. . . DTD 14

Comment concevoir une DTD ? n Méthode UML-XML – – – DTD décrire les

Comment concevoir une DTD ? n Méthode UML-XML – – – DTD décrire les sources de données avec UML utilisation de : n classe SClasse 1 n attribut n agrégation n association n généralisation fixer les cardinalités n associations 0. . * ou 1. . * (++) n attributs 0 ou 1 (? ) Classe 1 Attribut 2 {exclusif} 1. . * Classe 3 SClasse 2 * Classe 4 15

Exercice n Définir les DTD pour publier une BD Commandes num int statut :

Exercice n Définir les DTD pour publier une BD Commandes num int statut : char total : float 1. . * Clients de code : int nom : text type : CCC 0. . * livrer gère 0. . * 1. . * Magasins Lignes numero : int rue : text complement : text code_postal : int ville : text quantite : int article : CCNNN statut : char total : FRF Schéma UML 16

Définition des types et classes n n n n <!-- Types <!ENTITY % de

Définition des types et classes n n n n <!-- Types <!ENTITY % de base--> int "(#PCDATA)"> float "(#PCDATA)"> char "(#PCDATA)"> string "(#PCDATA)"> <!-- Classe Commande --> <!ELEMENT Commande (cstatut, ctotal)> <!ATTLIST Commande NUM ID #REQUIRED> <!ELEMENT cstatut %char; > <!ELEMENT ctotal %float; > <!-- Classe Ligne --> <!ELEMENT Ligne (article, quantite, statut? , total? )> <!ELEMENT article %string; > <!ELEMENT quantite %int; > <!ELEMENT lstatut %char; > <!ELEMENT ltotal %float; > 17

Definition DTD + MESSAGE <? xml version="1. 0" standalone="yes"? > <!DOCTYPE MESSAGE [ <!ELEMENT

Definition DTD + MESSAGE <? xml version="1. 0" standalone="yes"? > <!DOCTYPE MESSAGE [ <!ELEMENT MESSAGE (Commande, Ligne+)*> <!ENTITY %Type SYSTEM "Type. dtd"> %Type; ]> <MESSAGE> <Commande NUM="1"> <cstatut> A </cstatut> <ctotal>1000</ctotal> </Commande> <Ligne> <article>212</article> <quantite>100</quantite> </Ligne> <Commande NUM="2"> <cstatut> B </cstatut> <ctotal>1000</ctotal> </Commande> <Ligne> <article>212</article> <quantite>300</quantite> </Ligne> <article>412</article> <quantite>400</quantite> </Ligne> </MESSAGE> 18

Insuffisance des DTD n Pas de types de données – – n Pas en

Insuffisance des DTD n Pas de types de données – – n Pas en XML – n langage spécifique Propositions de compléments – – DTD difficile à interpréter (coercition nécessaire) difficile à traduire en schéma objets XML-data de Microsoft (Biz. Talk) XML-schema du W 3 C 19

3. XML Schéma n Un schéma d'un document définit: – – – n Le

3. XML Schéma n Un schéma d'un document définit: – – – n Le schéma est spécifié en XML – – – n pas de nouveau langage balisage de déclaration domaine spécifique xsd: Présente de nombreux avantages – – – Schema les éléments possibles dans le document les attributs associés à ces éléments la structure du document et les types de données structures de données avec types de données extensibilité par héritage et ouverture analysable par un parseur XML standard 20

Objectifs des schémas n Reprendre les acquis des DTD – n Permettre de typer

Objectifs des schémas n Reprendre les acquis des DTD – n Permettre de typer les données – – n – – Schema Eléments simples et complexes Attributs simples Permettre de définir des contraintes – n Plus riche et complet que les DTD Existence, obligatoire, optionnel Domaines, cardinalités, références Patterns, . . . S'intégrer à la galaxie XML 21

Les types simples (1) n string – n n n Schema n 0 FB

Les types simples (1) n string – n n n Schema n 0 FB 7 -126789, -1, 0 int – n 0, 1, 126789 non. Positive. Integer – n -126789, -1 non. Negative. Integer – Gp. M 7 hex. Binary – n 1, 126789 negative. Integer – 0, 126 base 64 Binary – n -126789, -1, 0, 1, 126789 positive. Integer – -1, 126 unsigned. Byte – n Confirm this is electric byte integer – Confirm this is electric token – n Confirm this is electric normalized. String – n -1, 126789675 unsigned. Int – 0, 1267896754 22

Les types simples (2) n long – n n -INF, -1 E 4, -0,

Les types simples (2) n long – n n -INF, -1 E 4, -0, 0, 12. 78 E-2, 12, INF, Na. N 1999 -05 -31 g. Month – n P 1 Y 2 M 3 DT 10 H 30 M 12. 3 S date – n 1999 -05 -31 T 13: 20: 00. 00005: 00 duration – n 13: 20: 00. 000, 13: 20: 00. 00005: 00 date. Time – double – Schema -1. 23, 0, 123. 4, 1000. 00 float – n 0, 12678 decimal – n n true, false 1, 0 time – unsigned. Short – n n 0, 12678967543233 -1, 12678 boolean – short – n -1, 12678967543233 unsigned. Long – n --05 -- g. Year – 1999 23

Les types simples (3) n g. Year. Month – n n USAddress any. URI

Les types simples (3) n g. Year. Month – n n USAddress any. URI – – Schema po: USAddress NCName – n ship. To http: //www. example. com/, http: //www. example. com/doc. ht ml#ID 5 language – n n n "A 212" IDREFS – n "A 212" IDREF – n en-GB, en-US, fr ID – QName – n --05 -31 Name – n ---31 g. Month. Day – n 1999 -02 g. Day – n "A 212" "B 213" ENTITY ENTITIES NOTATION NMTOKEN, NMTOKENS – – US Brésil Canada Mexique 24

Commandes de base xsd: n element : association d'un type à une balise –

Commandes de base xsd: n element : association d'un type à une balise – n attribute : association d'un type à un attribut – n n attributs name, type simple : les multiples types de base – entier, réel, string, time, date, IDREF, …, – extensibles par des contraintes type complexe : une composition de types – Schema attributs name, type, ref, min. Occurs, max. Occurs, . . . définit une agrégation d'éléments typés 25

Les types complexes n Définition d'objets complexes – – – n <sequence> : collection

Les types complexes n Définition d'objets complexes – – – n <sequence> : collection ordonnée d'éléments typés <all> : collection non ordonnée d'éléments typés <choice>: choix entre éléments typés Exemple <xsd: complex. Type name="FRAdresse"> <xsd: sequence> <xsd: element name=”nom" type="xsd: string"/> <xsd: element name=”rue" type="xsd: string"/> <xsd: element name=”ville" type="xsd: string"/> <xsd: element name=”codepostal" type="xsd: decimal"/> </xsd: sequence> <xsd: attribute name=”pays" type="xsd: NMTOKEN" fixed="FR"/> </xsd: complex. Type> Schema 26

Héritage de types n Définition de sous-types par héritage – – n Schema Par

Héritage de types n Définition de sous-types par héritage – – n Schema Par extension : ajout d'informations Par restriction : ajout de contraintes Possibilité de contraindre la dérivation n Exemple : <complex. Type name="Adresse. Pays"> <complex. Content> <extension base="Adresse"> <sequence> <element name="pays" type="string"/> </sequence> </extension> </complex. Content> </complex. Type> 27

Les patterns n n Contraintes sur type simple prédéfini Utilisation d'expression régulières – n

Les patterns n n Contraintes sur type simple prédéfini Utilisation d'expression régulières – n Similaires à celles de Perl Exemple <xsd: simple. Type name="SKU"> <xsd: restriction base="xsd: string"> <xsd: pattern value="d{3}-[A-Z]{2}"/> </xsd: restriction> </xsd: simple. Type> Schema 28

XML Schema : exemple (1) <xsd: schema xmlns: xsd="http: //www. w 3. org/1999/XMLSchema"> <xsd:

XML Schema : exemple (1) <xsd: schema xmlns: xsd="http: //www. w 3. org/1999/XMLSchema"> <xsd: element name="purchase. Order" type="Purchase. Order. Type"/> <xsd: element name="comment" type="xsd: string"/> <xsd: complex. Type name="Purchase. Order. Type"> <xsd: sequence> <xsd: element name="ship. To" type="USAddress"/> <xsd: element name="bill. To" type="USAddress"/> <xsd: element ref="comment" min. Occurs="0"/> <xsd: element name="items" type="Items"/> </xsd: sequence> <xsd: attribute name="order. Date" type="xsd: date"/> </xsd: complex. Type> Schema 29

XML Schema : exemple (2) <xsd: complex. Type name="Items"> <xsd: sequence> <xsd: element name="item"

XML Schema : exemple (2) <xsd: complex. Type name="Items"> <xsd: sequence> <xsd: element name="item" min. Occurs="0" max. Occurs="unbounded"> Schema <xsd: complex. Type> <xsd: sequence> <xsd: element name="product. Name" type="xsd: string"/> <xsd: element name="quantity"> <xsd: simple. Type> <xsd: restriction base="xsd: positive. Integer"> <xsd: max. Exclusive value="100"/> </xsd: restriction> </xsd: simple. Type> </xsd: element> <xsd: element name="USPrice" type="xsd: decimal"/> <xsd: element ref="comment" min. Occurs="0"/> <xsd: element name="ship. Date" type="xsd: date" min. Occurs="0"/> </xsd: sequence> <xsd: attribute name="part. Num" type="SKU" 30 use="required"/>

Réutilisation de déclarations n Possibilité de référencer un élément plus global – – –

Réutilisation de déclarations n Possibilité de référencer un élément plus global – – – n Possibilité d'inclure les types associés à un espace de noms – – n <import name. Space = "http: //. . . " schema. Location = "http: //. . . " /> Possibilité d'étendre un schéma – – – Schema <element ref="Nom" /> (ci-dessus) Importe l'élément et son type Peut être utiliser pour importer un groupe <redefine schema. Location="http: //. . . "/>. . Extensions. . . </redefine> 31

Autres possibilités. . . n n n n Mixed Content Empty Content any. Type

Autres possibilités. . . n n n n Mixed Content Empty Content any. Type Annotations Attribute Groups Nil Values Specifying Uniqueness Defining Keys & their References n n n n Schema Namespaces, Schemas & Qualification Target Namespaces & Unqualified Locals Qualified Locals Global vs. Local Declarations Undeclared Target Namespaces Substitution Groups Abstract Elements & Types 32

Quelques outils de conception Schema Editeur Outil Support Tibco (Extensibility) Altova XML Authority 2.

Quelques outils de conception Schema Editeur Outil Support Tibco (Extensibility) Altova XML Authority 2. 0 XML Spy 4. 0 Dasan Data Junction Tagfree 2000 DTD Editor XML Junction DTD Schéma DTD Insight Soft. XMLMate 2. 0 Microstar Soft. Near & Far Designer Schéma DTD 33