Upload
gaetane-mounier
View
130
Download
0
Embed Size (px)
Citation preview
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 »)
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>
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>)
5
Syntaxe des données
Les données entre les balises sont des chaînes de caractères
Caractères spéciaux > pour < < pour > & pour & &apos pour ‘ " pour ‘‘ & ou & pour & (numéro dans la page UNICODE)
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’>
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
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
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
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
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
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
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
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
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
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
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;>
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>
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
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
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
22
Les types simples (1)
string – Confirm this is electric
normalizedString – Confirm this is electric
token – Confirm this is electric
byte – -1, 126
unsignedByte – 0, 126
base64Binary – GpM7
hexBinary – 0FB7
integer – -126789, -1, 0, 1, 126789
positiveInteger – 1, 126789
negativeInteger – -126789, -1
nonNegativeInteger – 0, 1, 126789
nonPositiveInteger – -126789, -1, 0
int – -1, 126789675
unsignedInt – 0, 1267896754
Schema
23
Les types simples (2)
long – -1, 12678967543233
unsignedLong – 0, 12678967543233
short – -1, 12678
unsignedShort – 0, 12678
decimal – -1.23, 0, 123.4, 1000.00
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.000-
05:00 dateTime
– 1999-05-31T13:20:00.000-05:00 duration
– P1Y2M3DT10H30M12.3S date
– 1999-05-31 gMonth
– --05-- gYear
– 1999
Schema
24
Les types simples (3)
gYearMonth – 1999-02
gDay – ---31
gMonthDay – --05-31
Name – shipTo
QName – po:USAddress
NCName – USAddress
anyURI – http://www.example.com/,– http://www.example.com/doc.html
#ID5
language – en-GB, en-US, fr
ID – "A212"
IDREF– "A212"
IDREFS – "A212" "B213"
ENTITY ENTITIES NOTATION NMTOKEN, NMTOKENS
– US– Brésil Canada Mexique
Schema
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
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
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
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
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
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
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
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
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