37
Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

Embed Size (px)

Citation preview

Page 1: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

Tutoriel XML – Première Partie

F. Sajous & L. TanguyERSS – Sémantique et Corpus

Page 2: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

2

Plan

• Aparté obligatoire : le codage des caractères• Historique, principes, soucis et solutions

• La structure d'un document XML• En-tête et syntaxe• Blocs structurants, blocs en lignes, attributs• Bonne formation• Saisie et modifications avec un éditeur XML

• Les DTD• Principes• Déclaration• Lien document-DTD, validation

• Recherche dans un document XML par XPath

Page 3: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

3

Principes du codage des caractères (1)• Un caractère est stocké sous la forme d'un code

numérique• Un fichier texte = une suite de nombres

• Table de codage : équivalence caractère-nombre• Plusieurs types de codages

• Raisons historiques, techniques et commerciales• Peut varier d'un système / outil à l'autre

• Distinction : caractère ≠ glyphe (apparence physique, indiqué par une police)

Page 4: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

4

Combien de caractères (et lesquels) ?• Coder le minimum de caractères pour gagner de

la place• ASCII : 7 bits = 128 (lettres, chiffres, signes)

• Pas de lettres accentuées (cible = anglais)• Extensions du code ASCII : 8 bits (octet) = 256

• Iso-8859-1 (latin 1) : ajout des lettres accentuées pour l'europe de l'ouest

• Plusieurs codes similaires : CP1252, CP857, …• De latin 2 à latin 10 : autres langues d'europe

• Autres alphabets sans rapport avec l'ASCII• API, cyrillique, arabe, etc.

Page 5: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

5

Problèmes dus au codage (1)

• Texte écrit par l'application A utilisant la table TA

• 'é' -> 243• Texte lu par l'application B utilisant la table TB

• 243 -> 'Û'• L'application B n'est pas forcément au courant

• Codages concurrents actuels :• Standard anglo-saxon : ASCII• Standards ISO (Unix), CodePage Windows,

DOS, Mac, etc.

Page 6: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

6

Problèmes dus au codage (2)

• Uniquement pour les fichiers texte (bruts)• Les traitements de texte et autres indiquent en

interne le codage• Autres alphabets

• API, autres langues, etc.• Autant de tables de codage• Problème en texte brut : plusieurs alphabets

dans le même document

Page 7: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

7

Codage "Universel"

• UNICODE : codage pour tous les caractères• 4 Milliards de caractères possibles (langues

asiatiques notamment)• En couches de 256 caractères

• Un standard, plusieurs utilisations• UTF-8 : les caractères ASCII sont codés sur un

octet, les autres, cela dépend…• UTF-16 : les caractères ASCII, latin, etc sur 2

octets, les autres sur 4• UTF-32 : tous sur 4 octets

Page 8: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

8

Concrètement (1)

• Le codage d'un fichier texte doit être fait suivant un code précis

• Texte en Français, Anglais, Allemand, etc. :• Choix entre "Iso Latin 1" et Unicode

• Texte mixte (Français + API, Français + Coréen…) : Unicode

• Espérer que les destinataires seront bien équipés

• Le choix par défaut : UTF-8 (incompatible avec iso-8859-1 pour les lettres accentuées)

• En XML, le codage est explicite !

Page 9: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

9

Concrètement (2)

• Taper un caractère bizarre• Lettres accentuées du français : pas de pb.• Sinon :

• Vérifier que l'on est bien en codage Unicode• En fonction de l'outil

• Word : insérer caractères spéciaux• Sinon, copier-coller depuis Word

• Dans le pire des cas, utiliser le code numérique du caractère

• Ų = ¬• Dans tous les cas, vérifier que l'on a bien

installé une police compatible…

Page 10: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

10

Concrètement (3)

• Que faire si on a des accents mal fichus ?• Identifier le problème : "ça a raté"ٱa a ratٱ code 8 bits interprété en UTF-8ça a raté UTF-8 interprété en 8 bits‡a a rat‚ mauvais code 8 bits

• Pas de panique !• Windows : Utilisez un éditeur universel : Word,

NotePad (ils vous poseront la question)• Linux : utilisez "recode", le transcodeur universel• Macintosh : Ok, vous pouvez paniquer

Page 11: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

11

XML : Eléments de Syntaxe

Page 12: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

12

Structure générale d'un document

• En-tête• Indique que c'est du XML, de quelle version• Indique le codage des caractères• Exemple :<?xml version="1.0" encoding="iso-8859-1"?>• Note : c'est le seul cas où une balise est notée

par <? ?>• Corps

• Une balise unique doit contenir tout le reste du document (racine du document)

Page 13: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

13

Eléments : syntaxe générale

• Une balise doit être nommée :• Avec des minuscules (c'est mieux), accentuées

si l'on veut• Eventuellement, des _ , des - et des chiffres

• Eléments simples :• Balise ouvrante <X>• Balise fermante </X>• Toute balise ouverte tu fermeras• Tu ne feras pas chevaucher des balises

• Mauvais exemple :<X> <Y> </X> </Y>

Page 14: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

14

Types d'éléments (1)

• Eléments vides• Balise ouvrante et fermante à la fois

<exemple/>• Rôle : permet d'indiquer des informations

ponctuelles dans un document• Exemples : pauses dans un discours, référence

à un élément non-textuel (photo, etc.)

Page 15: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

15

Types d'éléments (2)

• Eléments avec attributs• Eléments vides ou non• Les attributs sont codés dans la balise• Syntaxe : nom="valeur" OU nom='valeur'• L'ordre des attributs n'a pas d'importance• La balise fermante est une balise simple• Exemple :

<article catégorie="Politique">….

</article>

Page 16: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

16

Eléments structurants ou en ligne

• Deux types d'usage des éléments• Structurants

• Organisent la hiérarchie du document• Contiennent soit d'autres balises, soit du texte

(élément terminal)• Sont généralement nécessaires• Exemples : titres, sections, paragraphes, etc.

• En ligne• Permettent un balisage au fil du texte• Sont optionnels• Exemples : indications discursives, annotations,

notes, pauses, etc.

Page 17: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

17

XML et mise en page

• Les retours à la ligne ne jouent AUCUN rôle dans un document XML

• Ils ne servent qu'à faciliter la lecture• Les éditeurs peremettent généralement de

réorganiser la présentation du document à l'écran

• Les espaces n'ont d'importance que dans le texte

• Aucun rôle entre deux balises• Attention à séparer les attributs, toutefois

Page 18: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

18

Commentaires et caractères spéciaux• On peut commenter une partie d'un document en

l'entourant de <!-- et de -->• Le contenu sera ignoré pour tout traitement

• Pour insérer dans du texte les caractères suivants : < > &

• On doit utiliser les notations suivantes :&lt; (less than) <&gt; (greater than) >&amp; (ampersand) &

• On peut insérer un caractère quelconque si on connaît son code :

• &#123; Caractère de code 123 (décimal)• &#x1A2F; Caractère de code 1A2F (hexadécimal)

(donné par Word entre autres)

Page 19: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

19

Editeur XML

• Facilite la saisie• Permet de vérifier la bonne formation

• Les règles syntaxiques ont-elles été respectées ?

• Peut mettre en forme votre document

• Exemple : Oxygen• Disponible sur Windows et Unix• Pas trop cher• Pas trop mal

• Au boulot ! (Exercice 1)

Page 20: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

20

Les DTD

• Principes• Syntaxe• Association doc-DTD• Validation d'un document

Page 21: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

21

Principes Généraux des DTD

• Grammaire du document• Indique les éléments pouvant être utilisés, et

comment• Permet la validation d'un document• Facilite la saisie / annotation de données

Page 22: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

22

Syntaxe d'une DTD

• Dans un fichier à part (extension .dtd)• Une ligne d'en-tête : la même que pour un

document XML<?xml version="1.0" encoding="iso-8859-1"?>

• Note : le codage de caractères est indépendant des fichiers XML associés…

• Puis, dans un ordre quelconque, la déclaration des éléments du document

Page 23: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

23

Déclaration d'un élément

<!ELEMENT nom type>(note : pas du XML !)

Où :• nom : nom de la balise / élément• type peut être :

#PCDATA : l'élément ne contient que du texte(structure) : l'élément contient d'autres éléments,

avec une syntaxe particulière

Page 24: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

24

Structure d'un élément complexe

• La structure indique quels éléments, combien, et dans quel ordre, on peut trouver dans l'élément défini

(e1, e2) : un élément e1 puis un élément e2(e1 | e2) : l'un ou l'autre(e+) : 1 ou plusieurs éléments e(e*) : 0 ou plusieurs éléments e(e?) : 0 ou 1 élément e

• Les éléments e1 et e2 doivent ensuite être décrit de la même manière

Page 25: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

25

Encore plus compliqué…

• Eléments complexes :<!ELEMENT mail

(auteur, destinataire+, sujet?, corps, signature?)>• Soit : un auteur, un ou plusieurs destinataires, un sujet

optionnel, un corps, une signature optionnelle

• Eléments mixtes, pouvant contenir du texte, et éventuellement des éléments :

<!ELEMENT texte (#PCDATA | élem_ligne)*>Exemple d'instanciation :<texte>

début <élem_ligne>texte notable</élem_ligne> suite

</texte>

Page 26: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

26

Attributs (1)

• On peut en plus autoriser des attributs à un élément

• Syntaxe :

<!ATTLIST élément attribut1 type1 option1attribut2 type2 option2…>

Page 27: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

27

Attributs (2)

• Type d'un attribut• CDATA : texte non contraint• ID : identifiant unique• (valeur1 | valeur2 | … ) : choix parmi une liste

• Options d'un attribut• #REQUIRED : attribut obligatoire• #IMPLIED : attribut optionnel

• Exemple :<!ATTLIST mail

priorité(urgent | normal)#REQUIRED>

Instanciation XML possible :<mail priorité="urgent"> … </mail>

Page 28: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

28

Association DTD-document

• Rien à faire dans la DTD• Dans l'en-tête du document XML :<!DOCTYPE racine SYSTEM "fichier.dtd">Où racine est le nom de l'élément de plus haut niveau

défini dans la DTD

• Il est possible d'utiliser une DTD située sur un serveur Web :

<!DOCTYPE racine SYSTEM "http://www..dtd">

Page 29: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

29

Quelques règles pour les DTD

• Tout élément apparaissant dans la description d'un autre doit aussi être décrit

• L'ordre n'a aucune importance• On peut vérifier la bonne formation d'une DTD• On ne peut pas vérifier sa cohérence

• Sauf avec des éditeurs très chers• Une vérification plus approfondie se fait au

moment de la validation d'un document XML

Page 30: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

30

Au boulot

• Définir une DTD• Associer une DTD à un document

• Pour en faciliter la saise• Pour en vérifier la conformité et le valider• Pour importer des données de texte brut

• A discuter par la suite :• Choix d'une structure pour une information• Attributs vs. éléments

Page 31: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

31

XPATH

• Elément de la technologie XSLT• Pour la manipulation des documents

• XPATH permet :• De repérer un élément dans un document• Incidemment, de fouiller des données en se

basant sur la structure• XPATH est intégré dans les bons éditeurs

XML• A venir : interrogation de corpus par XPATH…

Page 32: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

32

XPATH : principes

• Une expression analogue à celle d'une adresse Web, avec en plus, des contraintes

• Il faut penser en termes d'arbre

• Exemples de base :/mail/expéditeur expéditeur d'un mail/mail/@priorité priorité (attribut)

d'un mail

Page 33: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

33

Syntaxe par l'exemple

/ Racine du document/X Elément racine du document (de nom X)//Y Elément Y n'importe où dans le document/X/Z Elément Z situé sous la racine X//X/.. Elément contenant l'élément XX/@att Attribut att de l'élément X//X/../Y Elément Y frère de l'élément XEtc.

NOTE : une expression XPATH peut correspondre à plusieurs éléments d'un même document

Page 34: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

34

Ajout de contraintes• Aspect vital : ajouter des contraintes sur le contenu ou

la position des éléments• Contrainte sur la position

//X[1] = premier élément X/X/Y[2] = deuxième fils Y de X

• Contraintes sur le contenu//X[Y = 'contenu'] Elément X dont le texte du fils Y

est contenu• Exemple : //mail[expéditeur = 'ludovic']

• NOTES : - utilisez soit des ' ' soit des " "- il s'agit d'une équivalence exacte

- idem pour les attributs

Page 35: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

35

Recherche de chaînes

• Au lieu de l'équivalence exacte, on peut utiliser la fonction contains qui recherche des segments

//mail[contains (subject, 'XML')]• tout mail dont le sujet contient la chaîne 'XML'

//mail[contains (subject, 'XML')]/corps• Le corps d'un mail dont le sujet contient 'XML'

• Si la contrainte porte sur l'élément sélectionné, on utilise la notation "text()" :

//subject[contains(text(), 'XML')]• Le sujet d'un mail, s'il contient "XML"

Page 36: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

36

Combinaisons de contraintes

• On peut mixer plusieurs contraintes par des connecteurs logiques (and / or )

//mail[contains(subject, 'XML') and auteur='ludovic']

Un mail de ludovic dont le sujet contient XML

//mail[contains(subject, 'XML') or contains(subject, 'corpus') ]

Un mail dont le sujet contient XML ou corpus

Page 37: Tutoriel XML – Première Partie F. Sajous & L. Tanguy ERSS – Sémantique et Corpus

37

Au boulot !

• Prochaines étapes : • Le langage de transformation XSLT• Les liens bases de données XML

• D'ici là :• Etudes de cas réels du labo• Phonologie, discours, corpus divers