La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

XML: Syntaxe XML, DTD et Schémas

Présentations similaires


Présentation au sujet: "XML: Syntaxe XML, DTD et Schémas"— Transcription de la présentation:

1 XML: Syntaxe XML, DTD et 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> </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 &gt pour < &lt pour > &amp pour & &apos pour ‘ &quot pour ‘‘ &#38 ou &#x26 pour & (numéro dans la page UNICODE)

6 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’> Introduction

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 Exemples (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 PCDATA Enumération ID et IDREF ANY EMPTY
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 " 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 (?) Classe3 Classe1 1..* Attribut1 Attribut2 {exclusif} SClasse1 SClasse2 * Classe4 DTD

16 Exercice Définir les DTD pour publier une BD Schéma UML Commandes
Clients 1..* 1..* num int de code : int statut : char nom : text total : float type : CCC 0..* livrer gère 0..* 0..* 1..* 1..* Magasins Lignes numero : int quantite : int rue : text article : CCNNN complement : text statut : char code_postal : int total : FRF ville : text 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> <quantite>300</quantite> <article>412</article> <quantite>400</quantite> </MESSAGE>

19 Insuffisance des DTD Pas de types de données Pas en XML
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 Essai

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 A la différence des DTDs, XML Schéma utilise la syntaxe XML. Ainsi on n'est pas obligé d'apprendre une nouvelle syntaxe pour décrire sa grammaire. Il suffit juste d'apprendre à déclarer les éléments et les attributs en XML. XML Schéma présente de nombreux avantages : structures de données types de données ( par rapport aux DTDs ) extensibilité représentation en arbre Schema Essai

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 normalizedString token byte unsignedByte
Confirm this is electric normalizedString token byte -1, 126 unsignedByte 0, 126 base64Binary GpM7 hexBinary 0FB7 integer , -1, 0, 1, positiveInteger 1, negativeInteger , -1 nonNegativeInteger 0, 1, nonPositiveInteger , -1, 0 int -1, unsignedInt 0, Schema

23 Les types simples (2) long unsignedLong short unsignedShort decimal
-1, unsignedLong 0, short -1, 12678 unsignedShort 0, 12678 decimal -1.23, 0, 123.4, float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN double boolean true, false 1, 0 time 13:20:00.000, 13:20: :00 dateTime T13:20: :00 duration P1Y2M3DT10H30M12.3S date gMonth --05-- gYear 1999 Schema

24 Les types simples (3) gYearMonth gDay gMonthDay Name QName NCName
gDay ---31 gMonthDay Name shipTo QName po:USAddress NCName USAddress anyURI 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 Un schéma définit un ensemble de composants ainsi que leur rôle et leur interaction et leur combinaison correcte. Plusieurs types d'éléments peuvent être défini, on retrouve: les éléments: association d'un nom à un type défini à partir des structures ci-dessous et d'autres éléments les attributs avec pour contrainte le nombre d'occurrence les groupes d'attributs, permet d'insérer un ensemble de déclaration d'attributs dans un "archetype" Schema Essai

26 Les types complexes Définition d'objets complexes Exemple
<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=" <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> Un type d'objet "book" est défini dans le schéma suivant: Schema Essai

30 XML Schema : exemple (2) <xsd:complexType>
<xsd:complexType name="Items"> <xsd:sequence> <xsd:element name="item" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <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: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 = " ..." schemaLocation = " ..." /> Possibilité d'étendre un schéma <redefine schemaLocation=" ..."/> 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 conception
Editeur Outil Support Tibco (Extensibility) XML Authority 2.0 DTD Schéma Altova XML Spy 4.0 Dasan Tagfree 2000 DTD Editor Data Junction XML Junction Insight Soft. XMLMate 2.0 Microstar Soft. Near & Far Designer Schema


Télécharger ppt "XML: Syntaxe XML, DTD et Schémas"

Présentations similaires


Annonces Google