52
1 Langages de l’Internet : XML Introduction & Mise en oeuvre Taha Zerrouki [email protected]

Langages de l’Internet : XML · Difficilement extensible au Web ... Maîtriser le langage XML (évidemment) Rédiger un document XML Définir une grammaire de génération (DTD,

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

1

Langages de l’Internet : XML

Introduction & Mise en oeuvre

Taha Zerrouki

[email protected]

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

&lt; pour <&gt; pour >&amp; pour &&apos; pour ‘&quot; pour ‘‘&#38; ou &#x26; 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>

31

FireFox

Bonne syntaxe Syntax Error

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/

[email protected]

52

Contact

Taha Zerrouki

http://tahadz.com

http://infobouirauniv.wordpress.com

[email protected]