Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
1
Langages de l’Internet : XML
Introduction & Mise en oeuvre
Taha Zerrouki
2
Cours XML : Plan
Introduction
Historique, champ d’applications, but du coursMise en œuvre
Syntaxe, structure, rédiger un document XMLRédaction sommaire
Exercice de syntaxePremiers éléments de DTD
3
Au commencement…
SGML
Standard Generalized Markup LanguageLangage à balises pour représenter des documents
structurésComplexe, difficile à apprendreRéservé aux professionnels de la documentationDifficilement extensible au Web
HTML ! (dérive de SGML)
Conçu dans l’optique d’afficher des « pages Web »C’est ce qui a fait son succès
4
Les limites de HTML
Balises prédéfinies
Extensibilité réduiteDécrit la forme et non le contenu
<b>, <i>, <center>…Lié à la problématique des « pages web »La sémantique du contenu est perdue
Pas de vérification syntaxique
5
XML
eXtensible Markup Language [W3C, 98]
Langage normalisé de descriptionCréation libre des balisesStructure hiérarchique vérifiableLangage simple, documents « lisibles »Facilite le traitement des donnéesSépare le contenu et la formeIndépendant des plateformes
6
Le format XML
Données hiérarchiques (arbre)
Élément/Attribut/Texte
<zoo> <description> My favorite Zoo </description> <monkeys> <monkey name=‘roger’/> <monkey name=‘mike’/> </monkeys> <lion teeth=‘2’/></zoo>
Attribut
Élément
Élément
Textezoo
monkeys
monkeyname=roger
monkeyname=mike
lionteeth=2
descriptionMy Favorite Zoo
7
Typage du XML
Une DTD ou un Schéma défini la grammaire d’un fichier XML
<zoo> <description> My favorite Zoo </description> <monkeys> <monkey name=‘roger’/> <monkey name=‘mike’/> </monkeys> <lion teeth=‘2’/></zoo>
<!DOCTYPE zoo [ <!ELEMENT zoo (description,monkeys,lion)> <!ELEMENT description (#PCDATA)> <!ELEMENT monkeys (monkey+)> <!ELEMENT monkey EMPTY> <!ATTLIST monkey name CDATA #REQUIRED> <!ELEMENT lion EMPTY> <!ATTLIST lion teeth CDATA> ]> <xs:element name=‘zoo'
type=‘zoo'/><xs:complexType name=‘zoo'> <xs:sequence> <xs:element name=‘monkeys‘ type=‘monkeys'/> <xs:element name=‘lion' type=‘lion'/> </xs:sequence></xs:complexType>
fichier XML
DTD
schéma XML
8
XML appliqué
Systèmes d’informations
Format de requête auto-descriptif« je te parle comme ceci, parle-moi comme cela »
APIs standardiséesFormation réduite, expression générique
Recherche d’informations
On sait directement où chercher (plus ou moins)Corpus de données structurées
Ex: contenus MPEG7 (vidéos, sons, images)
9
XML pour le Web
HTML est un « sous-XML »
Séparation Forme / Contenu
Feuilles de Styles (CSS, XSL)Transformations de données (XSLT)
Adaptation à différents supports
PDA, téléphones portablesAdaptation à différents utilisateurs
préférences utilisateurs, malvoyants
10
Perspectives du cours
Maîtriser le langage XML (évidemment)
Rédiger un document XMLDéfinir une grammaire de génération (DTD, XML
Schema)Présenter un document XML sur le Web
Feuilles de styles (CSS, XSL)Transformations de documents (XSLT)
Faire lire du XML par un programme
SAX / DOMAJAX
11
Cours XML
Introduction
Historique, champ d’applications, but du coursMise en œuvre
Syntaxe, structure, rédiger un document XMLRédaction sommaire
Exercice de syntaxePremiers éléments de DTD
12
Mise en oeuvre
Syntaxe XML
Écriture par balises (éléments)Structure hiérarchiqueAttributsDonnées
Définir une grammaire structurelle
Rédiger un document XML
13
Écriture par balises (éléments)
<enseignant><nom>Abdellah</nom>
<grade>consultant</grade>
<enseignements>
<cours type=‘CM’>
<titre>XML</titre>
<volume>24</volume>
</cours>
<cours type=‘TD’>
<volume>30</volume></cours>
</enseignements>
</enseignant>
<prenom>BenKadour</prenom>
<titre>Websemantic</titre>
14
Écriture par balises (éléments)
Syntaxe:
<element> contenu de l’élément </element>
« element » doit commencer par une lettre
Peut comporter :Des chiffresDes lettresMoins « - », souligné « _ », point « . », deux-points « : »
15
Écriture par balises (éléments)
Syntaxe:
<element> contenu de l’élément </element>
Attention à la casse ! (« element » != « Element ») Pas de « XMLfoo » ou « xmlbar »
Élément vide
<element></element>ou <element/>
16
Structure hiérarchique
<prenom>Ben Kadour</prenom>
<titre>Websemantic</titre>
<enseignant>
<nom>Abdelah</nom>
<grade>consultant</grade>
<enseignements>
<cours type=‘cm’>
<titre>XML</titre>
<volume>24</volume>
</cours>
<cours type=‘td’>
<volume>30</volume></cours>
</enseignements>
</enseignant>
enseignant nom « abdelah »
prenom « Ben Kadour»
titre
volume
Cours
type=‘td’
titre
volume
Cours
type=‘cm’
grade « consultant »
enseignements
17
Structure hiérarchique
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>)
* child, parent, root
18
Attributs
Utilisation<element attribut=‘valeur’>
Mêmes règles pour « attribut » que pour « element »La valeur ne peut contenir les caractères ^, % et &
19
Données
Chaînes de caractères
Caractères spéciaux
< pour <> pour >& pour &' pour ‘" pour ‘‘& ou & pour & (numéro dans la page
UNICODE)
20
Mise en oeuvre
Syntaxe XML
Écriture par balises (éléments)Structure hiérarchiqueAttributsDonnées
Définir une grammaire structurelle
Rédiger un document XML
21
« ? »
« ? »
« ? »
« ? »
« ? »
Définir une grammaire structurelle
« Abdelah »
«Ben Kadour »
« consultant »
« XML »
« 24 »
enseignant nom
prenom
grade
enseignements titre
volume
Cours
type=‘cm’
Cours
type=‘td’
titre
volume
<enseignant>
<nom>Abdelah</nom>
<grade>consultant</grade>
<enseignements>
<cours type=‘CM’>
<titre>XML</titre>
<volume>24</volume>
</cours>
<cours type=‘TD’>
<volume>30</volume></cours>
</enseignements>
</enseignant>
<prenom>Ben Kadour</prenom>
<titre>websemantic</titre>
« Tayeb »
« Mohamed »
« MdC »
« Data-Mining »
« 30 »
<enseignant>
<nom>Tayeb</nom>
<grade>MdC</grade>
<enseignements>
<cours type=‘td’>
<titre>Data-Mining</titre>
<volume>30</volume>
</cours>
</enseignements>
</enseignant>
<prenom>Mohamed</prenom>
titre
volume
Cours
type=‘td’
enseignant nom
prenom
grade
enseignements titre
volume
Cours
type=‘?’
Cours
type=‘?’
titre
volume
22
Définir une grammaire structurelle
« 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 de ces attributs ?
23
DTD
Indiquée dans le document XML
On parle de :
Document bien forméRespect de la syntaxe XML
Document valideRespect de la DTD spécifiée
24
Mise en oeuvre
Syntaxe XML
Écriture par balises (éléments)Structure hiérarchiqueAttributs
Définir une grammaire structurelle
Rédiger un document XML
25
Document XML
<?xml version=‘1.0’ encoding=‘UTF-8’ standalone=‘yes’?>
<?xml-stylesheet type=‘text/xsl’ href=‘test.xsl’?>
<!DOCTYPE enseignant [
<!ELEMENT enseignant (nom, prenom, grade, enseignements) >
<!ELEMENT nom (#PCDATA) >
<!ELEMENT prenom (#PCDATA) >
<!ELEMENT grade (#PCDATA) >
<!ELEMENT enseignements (cours+) >
<!ATTLIST cours type CDATA #REQUIRED>
<!ELEMENT cours (titre, volume) >
<!ELEMENT titre (#PCDATA) >
<!ELEMENT volume (#PCDATA) >
] >
<enseignant>
<nom>Abdelah</nom>
<prenom>Ben KAdour</prenom>
<grade>consultant</grade>
<enseignements><cours type=‘cm’><titre>XML</titre><volume>24</volume></cours><cours type=‘td’><titre>Data-Mining</titre><volume>33</volume></cours></enseignements></enseignant>
Déclaration
Corps
Prologue
26
Document XML
Prologue
Précise qu’il s’agit d’un document XMLInstructions de traitement
Déclaration
DTD qui définit la grammaire du documentCorps du document
Les données elles-mêmes
27
Prologue
La déclaration XML<?xml version=‘1.0’ encoding=‘UTF-8’ standalone=‘yes’?>
version : ‘1.0’ !encoding : type d’encodage de caractères
UTF-8, ISO-8859-1…
standalone : si le fichier fait référence à des fichiers externes, ‘no’, sinon, ‘yes’
28
Prologue
Les instructions de traitement<?xml-stylesheet type=‘text/xsl’ href=‘test.xsl’?>
Précise une application ou une fonction que l’on appelle en lui passant des paramètres
<?nom param1=‘val1’ param2=‘val2’?>
Destiné à être utilisé par l’application qui lit le document (stylesheet de mise en forme)
29
Déclaration
DTD (Document Type Definition)
Interne : en toutes lettres dans le fichierExterne : dans un fichier extérieur [standalone=‘no’]
Définit comment le document sera rédigé dans un langage standard propre à la DTD
Une DTD « n’est pas obligatoire »
Si on ne cherche pas à vérifier la validité du document (risqué)
30
Document XML simple
<?xml version=‘1.0’ encoding=‘ISO-8859-1’?><enseignant><nom>Abdelah</nom><prenom>Ben KAdour</prenom><grade>consultant</grade><enseignements><cours type=‘cm’><titre>XML</titre><volume>24</volume></cours><cours type=‘td’><titre>Data-Mining</titre><volume>33</volume></cours></enseignements></enseignant>
Pas de DTD
Simple respect de la syntaxe :
<element attribut=‘valeur’>
… contenu …
</element>
32
Cours XML : Plan
Introduction
Historique, champ d’applications, but du coursMise en œuvre
Syntaxe, structure, rédiger un document XMLRédaction sommaire
Exercice de syntaxePremiers éléments de DTD
33
Exercice de syntaxe
Créez un document XML annuaire1.xmlConstruisant un annuaire
Comportant des entités de type personne
Chaque personne a une identiteL’identite stipule :
un nom, un prenom, et une adresse
Une adresse est donnée par :une rue, un code-postal, une ville et un ou plusieurs
numéros de telephone
On précise que le telephone peut être de type « mobile » ou « fixe »
34
Correction
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE annuaire SYSTEM "annuaire.dtd"><annuaire>
<personne><identite>
<nom>Achour</nom><prenom>Hamza</prenom><adresse>
<rue>25 avenue de 05 juillet 1962 </rue><cp>16000</cp><ville>Alger</ville><tel>071002500</tel>
</adresse></identite>
</personne><personne>
<identite><nom>AOmar</nom><prenom>Ahmed</prenom><adresse>
<rue>18 avenue du Ibn Badis</rue><cp>10000</cp><ville>Bouira</ville><tel>026942525</tel>
</adresse></identite>
</personne></annuaire>
35
Document XML
<?xml version=‘1.0’ encoding=‘UTF-8’ standalone=‘yes’?>
<?xml-stylesheet type=‘text/xsl’ href=‘test.xsl’?>
<!DOCTYPE enseignant [
<!ELEMENT enseignant (nom, prenom, grade, enseignements) >
<!ELEMENT nom (#PCDATA) >
<!ELEMENT prenom (#PCDATA) >
<!ELEMENT grade (#PCDATA) >
<!ELEMENT enseignements (cours+) >
<!ATTLIST cours type CDATA #REQUIRED>
<!ELEMENT cours (titre, volume) >
<!ELEMENT titre (#PCDATA) >
<!ELEMENT volume (#PCDATA) >
] >
<enseignant>
<nom>Abdelah</nom>
<prenom>Ben Kadour</prenom>
<grade>consultant</grade>
<enseignements><cours type=‘cm’><titre>XML</titre><volume>24</volume></cours><cours type=‘td’><titre>Data-Mining</titre><volume>33</volume></cours></enseignements></enseignant>
Déclaration
Corps
Prologue
36
Déclaration
DTD (Document Type Definition)
Interne : en toutes lettres dans le fichierExterne : dans un fichier extérieur [standalone=‘no’]
Définit comment le document sera rédigé dans un langage standard propre à la DTD
37
Rédaction Sommaire
Spécifier la DTD
Définir les éléments
EnfantsOrdreQuantité
Définir les attributs
38
DOCTYPE : DTD interne = [ ]
<?xml version=‘1.0’ encoding=‘ISO-8859-1’?>
<!DOCTYPE racine [
<!ELEMENT racine (contenu)>
<!ELEMENT contenu (#PCDATA)>
]>
<racine>
<contenu>blablabla</contenu>
</racine>
« DTD »
Fichier exemple.xml
39
<?xml version=‘1.0’ encoding=‘ISO-8859-1’?>
<!DOCTYPE racine SYSTEM ’exemple.dtd’>
<racine>
<contenu>le contenu</contenu>
</racine>
DOCTYPE : DTD externe SYSTEM
<!ELEMENT racine (contenu)><!ELEMENT contenu (#PCDATA)>
Fichier exemple.xml
Fichier exemple.dtd
40
DOCTYPE : DTD externe PUBLIC
Il est possible de spécifier une DTD « publique » quand celle-ci est largement diffusée (standard particulier) ou accessible sur le web
<!DOCTYPE racine PUBLIC ‘‘url’’>
41
Syntaxe (simple) de DTD
Déclaration des éléments
<!ELEMENT elm …………… >
<!ELEMENT elm EMPTY>
<!ELEMENT elm ANY>
<!ELEMENT elm (#PCDATA)>
Élément vide <elm/>
Peut contenir n’importe quoi
Elément de données<elm>blablabla</elm>
42
Syntaxe (simple) de DTD
Déclaration des sous-éléments obligatoires
<!ELEMENT element …………… >
<!ELEMENT bar (foo)>
<!ELEMENT enfant (age,sexe)>
<!ELEMENT enfant (garcon|fille)>
<bar> contient un seul élément <foo>
<enfant> contient deux éléments <age> et <sexe>
DANS CET ORDRE
<enfant> contient obligatoirement l’un ou l’autre
des éléments <garcon>,<fille>
43
Syntaxe (simple) de DTD
Déclaration des occurrences
<!ELEMENT bar …………… >
<!ELEMENT bar (foo)>
<!ELEMENT eleve (email?)>
<!ELEMENT personne (tel*)>
Contient UN SEUL élément <foo> (obligatoire)
<eleve> contient UN OU AUCUN élément <email>
<livre> contient UN OU PLUS éléments <chapitre>
<!ELEMENT livre (chapitre+)>
<personne> contient N’IMPORTE QUEL NOMBRE
d’ éléments <tel>
44
Syntaxe (simple) de DTD
Cascade de déclarations
<!ELEMENT personne (age,sexe,profession)>
<!ELEMENT eleve (nom,prenom,email?)>
On peut bien sûr étendre le nombre d’éléments obligatoires
<eleve> contient un <nom>, un <prenom>, et peut-être un <email>
<recueil> contient un <titre>, puis un certain nombre non nul de couples <auteur>,<chapitre>
<!ELEMENT recueil (titre,(auteur,chapitre)+)>
45
Définir une grammaire structurelle
enseignant nom
prenom
grade
enseignements
enseignant nom
prenom
grade
enseignements titre
volume
Cours
type=‘?’
Cours
type=‘?’
titre
volume
« ? »
« ? »
« ? »
« ? »
« ? »
<!ELEMENT enseignant (nom,prenom,grade,enseignements?)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT enseignements (cours+)>
<!ELEMENT cours (titre, volume)>
<!ATTLIST cours type CDATA #REQUIRED>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT volume (#PCDATA)>
46
Syntaxe (simple) de DTD
Spécifier le type des attributs
<!ATTLIST element attribut …………… …………… >
<!ATTLIST cours type CDATA #REQUIRED>
<!ATTLIST client dossier ID #REQUIRED>
<!ATTLIST cours niveau (debutant|intermediaire|confirme) #REQUIRED>
Spécifie que l’attribut est une chaîne de caractères
La valeur donnée à l’attribut doit être unique
L’attribut prend une des valeurs specifiées
47
Syntaxe (simple) de DTD
Spécifier les attributs (ex: de type chaîne)
<!ATTLIST element attribut …………… …………… >
<!ATTLIST cours type CDATA #REQUIRED>
<!ATTLIST cours type CDATA #IMPLIED>
<!ATTLIST cours type CDATA #FIXED ‘‘CM’’>
Spécifie que l’attribut doit toujours être fourni
l’attribut peut ne pas être fourni, dans ce cas l’application se charge de lui choisir une valeur
L’attribut a toujours la même valeur ‘‘CM’’
48
Syntaxe (simple) de DTD
Plusieurs attributs
Les uns à la suite des autres
<!ATTLIST cours type CDATA #IMPLIED niveau (deb|int|conf) #REQUIRED>
49
Exercice de syntaxe DTD
Construisez la DTD de l’annuaire de tout à l’heure
Y ajouter que la rue peut être une simple chaîne ou un composé num-rue, nom-rue
50
Correction
<!ELEMENT annuaire (personne*)><!ELEMENT personne (identite)><!ELEMENT identite (nom,prenom,adresse)><!ELEMENT adresse (rue,cp,ville,tel)><!ELEMENT rue (#PCDATA)><!ELEMENT cp (#PCDATA)><!ELEMENT ville (#PCDATA)><!ELEMENT tel (#PCDATA)><!ELEMENT nom (#PCDATA)><!ELEMENT prenom (#PCDATA)>
51
Références
Jean-François OMHOVER
(à venir) http://webia.lip6.fr/~omhover/cours/
52
Contact
Taha Zerrouki
http://tahadz.com
http://infobouirauniv.wordpress.com