0% ont trouvé ce document utile (0 vote)
34 vues52 pages

Introduction XML

Transféré par

md
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues52 pages

Introduction XML

Transféré par

md
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Présentation

!! XML (eXtensible Markup Language) : langage à balises


extensible
!! permettant de définir de nouvelles balises.
!! permettant de mettre en forme des documents grâce à des
balises (markup).
!! Contrairement à HTML (langage défini et figé avec un
nombre de balises limité), XML est un métalangage
permettant de définir d'autres langages
!! Peut décrire n'importe quel domaine de données grâce
à son extensibilité.
!! Permet de structurer, poser le vocabulaire (grammaire)
des données
Données structurées
4

!! XML permet de représenter des données structurées :


!! données textuelles organisées :
"! un document constitué d’éléments
"! un élément peut être constitué de texte ou contenir d’autres
éléments (ou un mélange des deux)
"! un élément peut être associé à des informations complémentaires,
les attributs
!! la structure est celle d’un arbre :
"! un document XML = un arbre
"! un élément = un nœud de l’arbre

!! Le standard XML indique comment traduire l’arbre en


un document XML, pas comment organiser les données
Exemple : Annuaire (1/4)
5

!! But : stocker l’annuaire de Dauphine (nom, prénom, bureau, numéro


de poste, email)
!! Le texte du document : les informations !
!! Organisation : s’arranger pour que les informations restent
correctement groupées (ne pas mélanger les données !)
!! Solution 1:
Exemple : Annuaire (2/4)
6

!! Traduction en XML de l’arbre :


annuaire1.xml
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <annuaire>
3 <personne>
4 <nom>Rossi</nom>
5 <prenom>Fabrice</prenom>
6 <bureau>B520</bureau>
7 <poste>4823</poste>
8 <email>[email protected]</email>
9 </personne>
10 <!-- suite de l'annuaire -->
11 </annuaire>

!! Inclusion textuelle # relation mère-fille dans l’arbre


!! Balise ouvrante ou fermante # nom d’un nœud
!! Texte => feuille de l’arbre
!! Ne pas confondre les éléments (information) et les balises (syntaxe).
Exemple : Annuaire (3/4)
7

!! Solution 2 :
Exemple : Annuaire (4/4)
8

!! Traduction en XML de l’arbre :


annuaire2.xml
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <annuaire>
3 <personne nom="Rossi"
4
prenom="Fabrice"
5
6
bureau="B520"
7 poste="4823"
8 email="[email protected]"/>
9 <!-- suite de l'annuaire -->
10 </annuaire>

!! Attributs # annotations d’un nœud


!! élément vide => feuille
Organisation
9

!! On organise les données en décidant de la structure de


l’arbre :
!! le nom des éléments
!! l’ordre des éléments
!! les relations d’inclusion
!! la position des données (c’est-à-dire du texte)
!! les contraintes sur les données (texte quelconque, valeur
numérique, etc.)
!! les attributs
!! Une organisation particulière forme un vocabulaire XML,
par exemple:
!! MathML : pour décrire des équations
!! SVG : dessin vectoriel
!! etc.
Syntaxe XML
10

!! Deux niveaux syntaxiques :


!! bas niveau : document bien formé
!! haut niveau : document valide (haut niveau => bas niveau)
!! Du point de vue utilisateur/concepteur :
!! le bas niveau est obligatoire : mal formé => pas XML
!! le bas niveau est fixé par la norme
!! le haut niveau est facultatif : bien formé => XML
!! le haut niveau est entièrement de la responsabilité du
concepteur : il définit les contraintes syntaxiques (noms de
éléments, organisation, etc.)
!! le haut niveau peut se mettre en œuvre de différentes
façons (DTD, schémas W3C, Relax NG, etc.)
Documents XML bien formés (1/3)
11

Les éléments :
!! <truc> : balise ouvrante :
"! 1. doit toujours correspondre à une balise fermante (</truc>)
"! 2. le texte entre <> est le nom de l’élément : constitué de lettres,
chiffres, ’.’, ’-’, ’_’ et ’ :’
!! </quantite> : balise fermante (depuis une balise ouvrante
jusqu’à une balise fermante : le contenu d’un élément, un nœud de
l’arbre)
!! <et_hop/> : balise mixte, ouvrante et fermante, pour les
éléments vides
!! Exemples :
!! <a><b></a></b> : mal formé
!! <p>bla, bla, bla<br>bla, bla, bla</p> : mal formé
!! <nom.pas:tres_bien-choisit/> : bien formé
Documents XML bien formés (2/3)
12

Les attributs :
!! Exemple : <font name="times">
!! name est un attribut de l’élément font, de valeur times.

!! ne peut apparaître que dans une balise ouvrante ou mixte


!! doit toujours avoir une valeur
!! la valeur est toujours délimitée par des guillemets " ou des
apostrophes ‘
!! dans la valeur, < est interdit
!! pour le nom d’un attribut, même contrainte que pour les
éléments
!! dans une même balise ouvrante ou mixte, chaque attribut ne
peut apparaître qu’une fois
Documents XML bien formés (3/3)
13

Grammaire de base :
!! un document XML est un arbre d’éléments :
!! la racine est unique
!! le contenu d’un élément est :
"! d’autres éléments
"! du texte (les character data) : < et & sont interdits

!! Exemples :
!! <a></a><b></b> : mal formé
!! <a>3<2</a> : mal formé
!! <a>3>2</a> : bien formé (déconseillé)
!! <a>bla <br/>bla</a> : bien formé
Constructions utiles
14

!! Commentaires :
!! <!-- ce qu’on veut sauf deux - à la suite -->
!! CDATA (texte) :
cdata.xml
<![CDATA[ <a>contenu<b> non interprete,
non analyse, ne fait pas</a> partie
de l'arbre</b> ]]>

!! Entités :
!! gestion de la structure physique des documents XML
!! mécanisme de “macro” XML :
"! inclusion d’un document dans un autre
"! référence externe
"! remplacement d’un texte par un autre
Entités
15

!! Entités de bas niveau :


!! syntaxe : &nom;
!! “prédéfinies” pour les caractères spéciaux :

!! accès
aux caractères par leur code UNICODE : &#nombre
en base 10; ou &#xnombre en base 16;. Par exemple
&#39; correspond à '.
!! Entités de haut niveau :
!! à définir dans la grammaire (DTD, Schema XML)
!! inclusion
!! remplacement
Exemple complet
16

<?xml version="1.0" encoding="ISO-8859-1"?>


<carnet>
<fiche>
<nom>Rossi</nom><prenom>Fabrice</prenom>
<adresse>
<service>UFR MD</service>
<rue>Place du Marechal de Lattre de Tassigny</rue>
<code>75016</code><ville>Paris</ville>
</adresse>
<telephone>
<fixe>01 44 05 48 23</fixe>
<fax>01 44 05 40 36</fax>
<portable>06 06 06 06 06</portable>
</telephone>
<email>
<nom>Fabrice.Rossi</nom>
<domaine>dauphine.fr</domaine>
</email>
</fiche>
</carnet>
Entête
17

!! il est conseillé de commencer un document XML par :


!! < ?xml version="1.0" ?>
!! l’attribut encoding permet d’indiquer la représentation
physique des caractères du fichier :
!! < ?xml version="1.0" encoding="UTF-16" ?>
!! < ?xml version="1.0" encoding="UTF-8" ?> par défaut
!! < ?xml version="1.0" encoding="ISO-8859-1" ?> sous
linux
!! < ?nom ?> : une Processing Instruction indique aux
logiciels comment traiter le document :
!! encodage
!! associer une feuille de style à un document
Les espaces de noms (1/6)
18

!! Un document XML peut contenir des éléments et des


attributs qui correspondent à plusieurs domaines
distincts (i.e., à plusieurs dialectes).
!! Problème : comment gérer les collisions ?

!! Solution => Les espaces de noms (namespaces) :


!! permet d’introduire des collections de noms utilisables
pour les éléments et les attributs d’un document XML
!! principes :
"! chaque collection est identifiée par un URI
"! un préfixe est associé à un URI
Les espaces de noms (2/6)
19

<?xml version="1.0" encoding="ISO-8859-1"?>


<html:html xmlns:html="http://www.w3.org/TR/REC-html40">
<html:head>
<html:title>Demonstration</html:title>
</html:head>
<html:body>Un contenu</html:body>
</html:html>

!! L’attribut xmlns:html associe le préfixe html à l’URI


"http ://www.w3.org/TR/REC-html40"
!! L’association n’est valable que dans les descendants (au
sens large) de l’élément qui contient xmlns:html
!! L’association s’applique aux éléments et aux attributs
Les espaces de noms (3/6)
20

!! Déclaration d’un namespace :


!! xmlns:préfixe="URI" : association du préfixe à l’URI
!! xmlns="URI" : définition de l’URI associé à l’espace de noms
par défaut (sans préfixe)
!! Nom qualifié :
!! préfixe : nom local
!! peut être utilisé pour les attributs et les éléments
!! le préfixe doit être déclaré par un ascendant
!! Remarques :
!! c’estl’URI qui assure l’absence d’ambiguïté, pas le préfixe
!! le dernier qui parle a raison
Les espaces de noms (4/6)
21

!! Attributs:
!! les attributs avec un nom qualifié sont traités comme les
éléments
!! les attributs sans préfixe sont dans un espace de noms local
propre à l’élément dans lequel ils apparaissent (c’est le cas
classique sans namespace)
!! Dans un élément donné, les attributs doivent être
distincts, c’est-à-dire :
!! ou bien être des attributs qualifiés qui se distinguent par
leur partie locale ou par leur URI
!! ou bien être des attributs sans préfixe distincts
Les espaces de noms (5/6)
22

Exemples
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/TR/REC-html40">
<head>
<title>Demonstration</title>
</head>
<body>Un contenu</body>
</html>

<x xmlns:n1=http://www.w3.org
xmlns="http://www.w3.org" >
<good a="1" b="2" />
<good a="1" n1:a="2" />
</x>
Les espaces de noms (6/6)
23

!! Quelques espaces de noms classiques


!! XML: http://www.w3.org/XML/1998/namespace
!! Xinclude: http://www.w3.org/2001/XInclude

!! Xlink: http://www.w3.org/1999/xlink
!! MathML: http://www.w3.org/1998/Math/MathML

!! XHTML: http://www.w3.org/1999/xhtml

!! SVG: http://www.w3.org/2000/svg

!! Schémas: http://www.w3.org/2001/XMLSchema
!! XSLT: http://www.w3.org/1999/XSL/Transform
24 Schémas
Validation des documents XML
25

Syntaxe de haut niveau (grammaire)


!! précisée par une DTD (Document Type Definition):
!! existe depuis la norme XML
!! outils stables
!! limitées : structure simple
!! syntaxe non XML
!! précisée par un schéma :
!! deux grandes technologies (d’autres existent) :
"! les schémas du W3C (recommandation du 2 Mai 2001)
"! RELAX NG du consortium OASIS (spécification du 12 Décembre 2001)
!! syntaxe XML
!! très puissants
!! assez complexes
Les DTD et les Schémas
26

!! Principes communs :
!! éléments autorisés
!! modèle du contenu d’un élément (et donc grammaire)
!! attributs autorisés
!! modèle de la valeur d’un attribut
!! Différences :
!! syntaxe :
"! DTD : issue de SGML (pas de XML)
"! Schéma : un document XML
!! contraintes :
"! DTD : contraintes très simples
"! Schéma : très évoluées (contenu entier, date, expressions régulières, etc.)
!! Note: Les DTD ne sont pas abordés dans ce cours, nous focalisons sur
les schémas, en particulier : Schémas du W3C
Objectifs de XML Schéma
27

!! Un document XML doit pouvoir être validé


relativement à son schéma.
!! Structures
!! Définir la structure et les contenus des documents.
!! Définir des relations d’héritage.
!! Typage des données
!! Fournir un ensemble de types primitifs.
!! Définir un système de typage suffisamment riche.
!! Distinguer les aspects reliés à la représentation lexicale des
données de ceux gouvernant les données.
!! Permettre de créer des types de données usagers dérivés
de types existants en contraignant certaines propriétés
(domaine, précision, longueur, format).
28 Les structures
Principes des schémas
29

!! Un schéma XML est un document XML.


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<!-- Déclaration de deux types d ’éléments -->
<xsd:element name="nom" type="xsd:string" />
<xsd:element name= "prenom" type="xsd:string" />
</xsd:schema>
Principes des schémas
30

<?xml version="1.0"?> Document XML


<Addresse_postale_France pays="France"> (Adresse.xml)
<nom>Mr Jean Dupont</nom>
<rue>rue Camille Desmoulins</rue>
<ville>Paris</ville>
<departement>Seine</departement>
<code_postal>75600</code_postal>
</Addresse_postale_france >

<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"> Schéma


<xsd:complexType name="Addresse_postale_france" > (Adresse.xsd)
<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="departement" type="xsd:string" />
<xsd:element name="code_postal" type="xsd:decimal" />
</xsd:sequence>
<xsd:attribute name= "pays" type="xsd:NMTOKEN" use="fixed" value="FR"/>
</xsd:complexType>
</xsd:schema>
Les composants primaires
31

!! Un schéma XML est construit par assemblage de différents


composants (13 sortes de composants rassemblés en
différentes catégories).
!! Composants de définition de types
!! Définition de types simples (Simple type).
!! Définition de types complexes (Complex type).
!! Composants de déclaration
!! Déclaration d’éléments.
!! Déclaration d’attributs.
Déclaration des éléments
32

!! Un élément XML est déclaré par la balise element


de XML schéma qui a de nombreux attributs.
!! Les deux principaux attributs sont:
!! name : Le nom de l’élément (de la balise associée).
!! type : Le type qui peut être simple ou complexe.

!! Exemple
<xsd:element name="code_postal" type="xsd:decimal"/>
Déclaration des attributs
33

!! Un attribut est déclaré par la balise attribute


!! Un attribut est une valeur, nommée et typée,
associée à un élément.
!! Le type d’un attribut défini en XML schéma est
obligatoirement simple.

<xsd:complexType name="TypeRapport">
<xsd:attribute name= "Date_creation" type="xsd:date"/>
!...
</xsd:complexType>
<xsd:element name="Rapport" type="TypeRapport"/>
Déclaration des attributs
34

!! L'élément attribute de XML Schema peut avoir deux attributs


optionnels : use et value.
!! On peut ainsi définir des contraintes de présence et de valeur.
!! Selon ces deux attributs, la valeur peut:
!! être obligatoire ou non
!! être définie ou non par défaut.
!! Exemple

<xsd:attribute name= "Date_peremption" type="xsd:date"


use="default" value= "2005-12-31"/>
Déclaration des attributs
35

!! Valeurs possibles pour use


!! use = required : L’attribut doit apparaître et prendre la valeur fixée si elle
est définie.
!! use= prohibited : L’attribut ne doit pas apparaître.
!! use = optional : L’attribut peut apparaître et prendre une valeur quelconque.
!! use= default : Si l’attribut à une valeur définie il la prend sinon il prend la
valeur par défaut.
!! use= fixed : La valeur de l’attribut est obligatoirement la valeur définie.
!! Exemple
<xsd:attribute name= "Date_creation" type="xsd:date" use="required"/>
Les Types
36

!! Les schémas sont basés sur la notion de type


!! Chaque élément et chaque attribut possède un type
!! Approche objet: les types de base et types défini par
dérivation
!! Deux grandes catégories de types :
1. Types simples (simpleType) :
"! chaînes de caractères, valeurs numériques, etc.
"! Un élément d’un type simple ne peut ni contenir d’autres éléments ni
avoir des attributs.
"! Les attributs ont des types simples.
2. Types complexes (complexType) :
"! tout le reste, en particulier les éléments contenant d’autres éléments
et/ou des attributs.
Types simples
37

!! Types simples prédéfinis au sens de la norme XML Schémas


‘datatypes’: string, integer, boolean …
!! Exemple :

<xsd:element name="code_postal " type="xsd:integer"/>

!! Types simples définis par dérivation d'un autre type simple, au


moyen de l’élément <xsd:simpleType ...>
!! Exemple : dérivation par restriction.

<xsd:simpleType name= "DeuxDecimales">


! <xsd:restriction base="xsd:decimal">
! <xsd:fractionDigits value="2" />
! </xsd:restriction>
</xsd:simpleType>
Types complexes
38

!! Déclarés au moyen de l'élément <xsd:complexType name="...!


!! Ils peuvent contenir d’autres éléments, des attributs.
!! Exemple

! xsd:complexType name= "TypePrix">


<
! <xsd:simpleContent>
! <xsd:extension base="DeuxDecimales">
! <xsd:attribute name="Unite" type= "FrancEuro" />
! </xsd:extension>
! </xsd:simpleContent>
!</xsd:complexType>

!! Trois façons de composer des éléments dans un type


complexe: sequence, choice, all.
Types complexes: Sequence
39

!! Un type sequence est défini par une suite de sous-


éléments qui doivent être présents dans l'ordre donné.
!! Le nombre d'occurences de chaque sous-élément est
défini par les attributs minOccurs et maxOccurs.
<xsd:complexType name= "TypeCommande">
<xsd:sequence>
<xsd:element name= "Ad_livraison" type="Addresse"/>
<xsd:element name= "Ad_facturation" type="Addresse"/>
<xsd:element name= "texte" type="xsd:string" minOccurs="1" />
<xsd:element name="items" type="Items" maxOccurs= "30" />
</xsd:sequence>
</xsd:complexType>
Types complexes: Choice
40

!! Un seul des éléments listés doit être présent.


!! Le nombre d'occurrences possible est déterminé par les
attributs minOccurs et maxOccurs de l’élément.

<xsd:complexType name= "type_temps">


<xsd:choice >
<xsd:element name= "Noire" type="Note" minOccurs="1" maxOccurs="1" />
<xsd:element name= "Croche" type="Note" minOccurs="2" maxOccurs="2" />
</xsd:choice>
</xsd:complexType>
Types complexes: All
41

!! Les éléments listés doivent être tous présents au


plus une fois.
!! Il peuvent apparaître dans n'importe quel ordre.

<xsd:complexType name= "Commande">


<xsd:all>
<xsd:element name= "Ad_livraison" type="Addresse"/>
<xsd:element name= "Ad_facturation" type="Addresse"/>
<xsd:element name= "texte" type="xsd:string" minOccurs="0" />
<xsd:element name="items" type="Items" maxOccurs= "30" />
</xsd:all>
</xsd:complexType>
42 Les types de données XML schéma
Objectifs de la définition des types
43

!! Fournir des types primitifs analogues à ceux qui


existent en SQL ou en Java.
!! Définir un système de typage suffisamment
riche pour importer/exporter des données d’une
base de données.
!! Distinguer les aspects reliés à la représentation
lexicale des données de ceux gouvernant les
ensembles de données sous-jacents.
!! Permettre de créer des types de données
usagers dérivés de types existants en
contraignant certaines propriétés (domaine,
précision, longueur, format).
Système de typage des schémas
44

Trois composantes:
a) L’ensemble des valeurs du type (value space)
Ex: type float.
b) L’ensemble des représentations lexicales possibles des
valeurs (lexical space).
Ex: "10" ou "1.0E1"
c) L’ensemble des facettes (l’ensemble des propriétés) qui
définit l’ensemble des valeurs (notion de facette
fondamentale et de facette de contrainte).
Ex: Le type float est défini par la norme IEEE 754-1985
(c’est un flottant simple, précision sur 32-bit).
On peut dériver des types par contraintes.
Définitions relatives aux types
45

!! Types primitifs (Primitive) : Non défini en référence à d’autres


types..
!! Types dérivés (Derived) : Définis par dérivation à partir d’autres
types.
!! Types prédéfinis (Built-in) : Définis dans le cadre de la spécification
XML Schéma datatypes (primitif ou dérivé).
!! Types usagers (User-derived) : Types construits par les utilisateurs.
!! Types atomiques (Atomic) : Types indivisibles du point de vue de la
spécification XML schéma.
!! Types listes (List) : Types dont les valeurs sont des listes de valeurs
de types atomiques.
!! Types unions (Union) : Types dont les ensembles de valeur sont la
réunion d’ensemble de valeurs d’autres types.
46
Quelques types prédéfinis
47

Type Forme lexicale


!! String Bonjour
!! boolean {true, false, 1, 0}
!! float 2345E3
!! double 23.456789E3
!! decimal 808.1
!! dateTime 1999-05-31T13:20:00-05:00.
!! binary 0100
!! uriReference http://www.cnam.fr
!! ….
Dérivation de types simples
48

!! Dérivation par restriction


!! Dérivation par extension

!! Dérivation par union

!! Dérivation par liste


Dérivation par restriction (1/3)
49

!! La dérivation par restriction restreint l’ensemble


des valeurs d'un type pré-existant.
!! La restriction est définie par des contraintes de
facettes du type de base: valeur min, valeur
max ...
!! Exemple :

<xsd:simpleType name= "ChiffresOctaux">


<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value= 7" />
</xsd:restriction>
</xsd:simpleType>
Dérivation par restriction (2/3)
50

Les contraintes de facettes


!! lenght : la longueur d’une donnée.
!! minLenght: la longueur minimum.
!! maxLenght: la longueur maximum.
!! pattern: défini par une expression régulière.
!! enumeration: un ensemble discret de valeurs.
!! whitespace: contraintes de normalisation des chaînes relativement
aux espaces (preserve, replace, collapse).
!! maxInclusive: une valeur max comprise.
!! maxExclusive: une valeur max exclue.
!! minInclusive: une valeur min comprise.
!! minExclusive: une valeur min exclue.
!! totalDigits: le nombre total de chiffres.
!! fractionDigits: le nombre de chiffres dans la partie fractionnaire.
Dérivation par restriction (3/3)
51

!! Exemple d’une énumération

<xsd:simpleType name= "Mois">


<xsd:restriction base="xsd:string">
<xsd:enumeration value= "Janvier"/>
<xsd:enumeration value="Février"/>
<xsd:enumeration value="Mars"/>
<!-- ... -->
</xsd:restriction>
</xsd:simpleType>
Dérivation par extension
52

!! Dériver un nouveau type par extension consiste à ajouter à


un type existant des sous-éléments ou des attributs.
!! On obtient inévitablement un type complexe.
!! Exemple
<xsd:complexType name= "mesure">
<xsd:simpleContent>
<xsd:extension base="xsd:Decimal">
<xsd:attribute name="unite" type="xsd:NMTOKEN"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name= "temperature" type= "mesure"/>

<temperature unite="Kelvin">230</temperature>
Dérivation par union
53

!! Pour créer un nouveau type on effectue l’union


ensembliste de toutes les valeurs possibles de
différents types existants.
!! Exemple:

<xsd:simpleType name="TransportFormatCaracteres">
<xsd:union memberTypes="base64Binary hexBinary"/>
</xsd:simpleType>
Dérivation par liste
54

!! Une liste permet de définir un nouveau type de


sorte qu’une valeur du nouveau type est une liste de
valeurs du type pré-existant (valeurs séparées par
espace).
!! Exemple

<simpleType name= "DebitsPossibles">


! <list itemType=’nonNegativeInteger'/>
</simpleType>

<debitsmodemV90 xsd:type=’DebitsPossibles’> 33600 56000 <debitsmodemV90>

Vous aimerez peut-être aussi