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

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

Embed Size (px)

Citation preview

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

1

XML: Syntaxe XML, DTD et Schémas

1. Syntaxe XML

2. DTD

3. Schémas

4. Dialectes

5. Références

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

2

1. Syntaxe XML

Ecriture par balises Syntaxe des balises

<element> contenu de l’élément </element>

« element » doit commencer par une lettre Peut comporter :

– Des chiffres– Des lettres– Moins « - », souligné « _ », point « . », deux-points « : »

Attention à la casse ! (« element » != « Element »)

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

3

Syntaxe XML

<enseignant><nom>Bonneville</nom>

<grade>PAST</grade><enseignements>

<cours type=‘CM’><titre>Web Dynamique</titre><volume>24</volume>

</cours><cours type=‘TP’>

<volume>18</volume></cours>

</enseignements></enseignant>

<prenom>François</prenom>

<titre>TP Web Dynamique</titre>

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

4

Structure hiérarchique du XML

Chaque élément peut avoir un ou plusieurs « enfants » (ou du texte)

<nom> est enfant de <enseignant> <enseignant> est parent de <nom>

Chaque élément n’a qu’un seul parent Il existe un unique « ancêtre »

Le seul élément qui est l’ancêtre de tous les éléments = l’élément racine (ici <enseignant>)

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

5

Syntaxe des données

Les données entre les balises sont des chaînes de caractères

Caractères spéciaux &gt pour < &lt pour > &amp pour & &apos pour ‘ &quot pour ‘‘ &#38 ou &#x26 pour & (numéro dans la page UNICODE)

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

6Introduction

2. Définir une grammaire structurelle : DTD « DTD » (Document Type Definition) La DTD définit la filiation des éléments

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 <!DOCTYPE racine [...]>– dans un fichier externe

<!DOCTYPE racine SYSTEM ’exemple.dtd’>

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

7

Validité d ’un document XML

Document bien formé (Well Formed document)– balises correctement imbriquées– parsable et manipulable– pas nécessairement valide par rapport à la DTD

Document valide (Valid document)– bien formé + conforme à la DTD (ou au schéma)

Introduction

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

8

DTD : élément et attribut

<!ELEMENT tag (contenu)– 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

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

9

DTD : Notation

Notations

– (a, b) séquence

– (a|b) liste de choix

– a? élément optionnel [0,1]

– a* élément répétitif [0,N]

– a+ élément répétitif [1,N]

Exemples

– (nom, prenom, rue, ville)

– (oui|non)

– (nom, prenom?, rue, ville)

– (produit*, client)

– (produit*, vendeur+)

DTD

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

10

Types de données

CDATA– Données brutes qui ne seront pas analysées (parsées)

PCDATA – Elément de texte sans descendants ni attributs contenant des caractères à

parser Enumération

– Liste de valeurs séparées par | ID et IDREF

– Clé et référence pour les attributs ANY

– Tout texte possible - pour le développement EMPTY

– Vide

DTD

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

11

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

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

12

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>250F</PRIX> </VINS> ……...</CATALOGUE>

DTD

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

13

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 = "P1">Marie</PERSONNE>

<PERSONNE PNUM = "P2">Jean</PERSONNE>

<PERSONNE PNUM = "P3" MERE="P1" PERE="P2">Pierre</PERSONNE>

<PERSONNE PNUM = "P4" MERE="P1" PERE="P2">Julie</PERSONNE>

</DOCUMENT>

DTD

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

14

DTD externe Modèle pour plusieurs documents

– partage des balises et structures

Définition locale ou externe– <!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

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

15

Comment concevoir une DTD ?

Méthode UML-XML– décrire les sources de données

avec UML– utilisation de :

classe attribut agrégation association généralisation

– fixer les cardinalités associations 0..* ou 1..* (+

+) attributs 0 ou 1 (?)

DTD

Classe1

SClasse1 SClasse2{exclusif}

Classe3

Classe4*

1..*Attribut1Attribut2

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

16

Exercice Définir les DTD pour publier une BD

Lignes

quantite : intarticle : CCNNN

statut : chartotal : FRF

Clients

code : intnom : text

type : CCC

0..*

1..*

1..*

Commandes

num intstatut : char

total : float

1..*

1..* de

Magasins

numero : intrue : textcomplement : textcode_postal : intville : text

0..*

gèrelivrer

0..*

Schéma UML

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

17

Définition des types et classes

<!-- Types de base--> <!ENTITY % int "(#PCDATA)"> <!ENTITY % float "(#PCDATA)"> <!ENTITY % char "(#PCDATA)"> <!ENTITY % 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;>

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

18

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><Ligne>

<article>412</article><quantite>400</quantite>

</Ligne></MESSAGE>

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

19

Insuffisance des DTD

Pas de types de données– difficile à interpréter (coercition nécessaire)– difficile à traduire en schéma objets

Pas en XML – langage spécifique

Propositions de compléments– XML-data de Microsoft (BizTalk)– XML-schema du W3C

DTD

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

20

3. XML Schéma

Un schéma d'un document définit:– les éléments possibles dans le document– les attributs associés à ces éléments– la structure du document et les types de données

Le schéma est spécifié en XML– pas de nouveau langage– balisage de déclaration– domaine spécifique xsd:

Présente de nombreux avantages– structures de données avec types de données – extensibilité par héritage et ouverture– analysable par un parseur XML standard

Schema

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

21

Objectifs des schémas

Reprendre les acquis des DTD– Plus riche et complet que les DTD

Permettre de typer les données– Eléments simples et complexes– Attributs simples

Permettre de définir des contraintes– Existence, obligatoire, optionnel– Domaines, cardinalités, références– Patterns, ...

S'intégrer à la galaxie XML

Schema

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

25

Commandes de base xsd:

element : association d'un type à une balise

– attributs name, type, ref, minOccurs, maxOccurs, ...

attribute : association d'un type à un attribut

– attributs name, type

type simple : les multiples types de base

– entier, réel, string, time, date, ID, IDREF, …,

– extensibles par des contraintes

type complexe : une composition de types

– définit une agrégation d'éléments typés

Schema

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

26

Les types complexes

Définition d'objets complexes– <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:complexType 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:complexType>

Schema

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

27

Héritage de types

Définition de sous-types par héritage

– Par extension : ajout d'informations

– Par restriction : ajout de contraintes

Possibilité de contraindre la dérivation

Exemple :

<complexType name="AdressePays">

<complexContent>

<extension base="Adresse">

<sequence>

<element name="pays" type="string"/>

</sequence>

</extension>

</complexContent>

</complexType>

Schema

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

28

Les patterns

Contraintes sur type simple prédéfini Utilisation d'expression régulières

– Similaires à celles de Perl

Exemple<xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string">

<xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType>

Schema

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

29

XML Schema : exemple (1)

<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema">

<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>

<xsd:element name="comment" type="xsd:string"/>

<xsd:complexType name="PurchaseOrderType">

<xsd:sequence>

<xsd:element name="shipTo" type="USAddress"/>

<xsd:element name="billTo" type="USAddress"/>

<xsd:element ref="comment" minOccurs="0"/>

<xsd:element name="items" type="Items"/>

</xsd:sequence>

<xsd:attribute name="orderDate" type="xsd:date"/>

</xsd:complexType>

Schema

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

30

XML Schema : exemple (2) <xsd:complexType name="Items">

<xsd:sequence> <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">

<xsd:complexType> <xsd:sequence>

<xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity">

<xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType>

</xsd:element> <xsd:element name="USPrice" type="xsd:decimal"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>

</xsd:sequence> <xsd:attribute name="partNum" type="SKU" use="required"/>

</xsd:complexType> </xsd:element>

</xsd:sequence> </xsd:complexType> </xsd:schema>

Schema

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

31

Réutilisation de déclarations

Possibilité de référencer un élément plus global– <element ref="Nom" /> (ci-dessus)– Importe l'élément et son type– Peut être utiliser pour importer un groupe

Possibilité d'inclure les types associés à un espace de noms

– <import nameSpace = "http:// ..."– schemaLocation = "http:// ..." />

Possibilité d'étendre un schéma– <redefine schemaLocation="http:// ..."/>– .... Extensions ...– </redefine>

Schema

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

32

Autres possibilités ...

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

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

33

Quelques outils de conceptionEditeur Outil Support

Tibco (Extensibility)

XML Authority 2.0

DTDSchéma

Altova XML Spy 4.0 DTDSchéma

Dasan Tagfree 2000 DTD Editor

DTD

Data Junction XML Junction Schéma

Insight Soft. XMLMate 2.0 DTDSchéma

Microstar Soft. Near & Far Designer

DTD

Schema