[réf. p13
à 29]
>>>
Principes de XML
>>> Documents et fichiers XML
>>> Eléments, balises
et données
>>> Arbres XML
>>> Attributs
>>> Nom XML
>>> Appel d'entité
>>> Section CDATA
>>> Commentaire
>>> Instructions de
traitement
>>> Déclaration
XML
>>> Vérification
des contraintes de forme des documents
>>> OEM Exemples
pratiques de code XML
Si nécessaire commencer par une révision
HTML
: écriture des balises, lisibilité...
Principes de XML
[réf. p13-14] 
-
Comment écrire des documents XML simples. Un langage
ressemblant au HTML.
[réf. p13/a]
- Bien que XML soit plus vague que HTML dans les balises
qu'il autorise, il est plus stricte sur la façon
de les écrire et de les positionner. On dit qu'un
document XML doit être bien formé. Il n'accepte
pas les erreur tolérée en HTML (balise non
fermée, etc.). Avec HTML on parle de paragraphe,
de ligne, de mise en forme générale, alors
qu'avec XML on parle d'adresse, de nom, de bibliographie.
Le XML ne sert pas à mettre en forme un document,
mais en quelques sorte à le "marquer".
[réf. p13/b]
- Exemple comparatif. [réf.
p16/2/7]
a) HTML (exm_003.txt)
:
<body>
<h1>Devis de construction</h1>
<p>Maison de campagne</p>
<p>Six pièces</p>
<p>Deux étages</p>
<p>Coût : 450'000 euros</p>
<p>Début de construction juin 2002, fin prévue pour octobre 2002</p>
</body>
b) XML (exm_004.txt)
:
<offre> <devis>
<titre>Devis de construction</titre>
<genre>Maison de campagne</genre>
<pièces>Six pièces</pièces>
<étages>Deux étages</étages>
<coût>Coût : <estimation>450'000</estimation>euros</coût>
<délais>Début de construction <début>juin 2002</début>, fin prévue pour
<fin>octobre 2002</fin></délais>
</devis> </offre>
On constate dans ces exemples que les balises XML sont plus
descriptives (métadonnées)
que les balises HTML.
Documents et fichiers XML
[réf. p13-14] 
- Un document XML contient du texte mais jamais de données
binaires. [réf. p13/c]
- Exemple 2-1. Un document XML très simple mais complet
(exm_005.xml)
[réf. p14/a] :
<person>
Alan Turing
</person>
- Un document c'est du texte. Il peut être soit stocké
dans un fichier, mais aussi être enregistré
dans une base de donnée ou encore généré
à la volée par un script CGI
sur un serveur web. Il peut également être
stocké dans plusieurs fichiers et assemblé
lors d'une exécution. S'il est servi par un serveur
web, on lui assignera vraisemblablement un type MIME application/xml
ou text/xml. Cependant des applications XML plus particulières
peuvent nécessiter des types MIME plus spécifiques
comme application/mathml+xml, application/XSLT+xml ou image/svg+xml.
[réf. p14/a]
Eléments, balises et données
[réf. p14-15] 
- Le documents 2-1 est composé d'un seul élément
dont le type est person
et dont les données textuelles sont Alan Turing [réf.
p14/b]
- Syntaxe des balises
XML (élément) :
Chaîne de caractère délimitée
par les signes < et
> [réf. p14/c]
+ [réf. p53/6/1]
La balises d'ouverture commence par :
le signe < suivit du
nom de l'élément
puis du signe >
La balises de fermeture commence par :
le signe < suivit d'une
barre oblique / suivit
du nom de l'élément
puis du signe >
Exemple :
balise
descriptive d'ouverture |
données
textuelles à traiter |
balise
descriptive de fermeture |
| <père> |
Armand
Duchemin |
</père> |
| élément
de type "père" début |
contenu
de l'élément |
fin élément
de type "père" |
- Elément vide (sans balise de fermeture) :
La balises est unique (ouverture-fermeture) :
Signe < suivit
du nom de l'élément
puis d'une barre oblique /
suivie du signe >
Exemple : <saut_de_ligne/>
[réf. 15/a]
- XML est sensible à la casse
(révision
html). La balise <père> est différente
que <Père> ou que <pere>. Faite un choix
définitif et adoptez-le. Ceci vous évitera
pas mal de soucis ! [réf. p15/b]
Arbres XML
[réf. p15-17] 
- Exemple 2-2. Arbre XML (exm_006.xml)
[réf. p15] :
<person>
<name>
<first_name>Alan</first_name>
<last_name>Turing</last_name>
</name>
<profession>informaticien</profession>
<profession>mathematicien</profession>
<profession>cryptographe</profession>
</person>
- Un arbre XML se compose d'éléments et de
sous- éléments nommés aussi parents
et enfants selon leurs position dans l'arbre. un sous-élément
enfant à toujours un seul parent. Un élément
parent peut avoir un ou plusieurs enfants.
- Au minimum, chaque document possède un élément
sans parent qui se nomme élément racine (ou
racine du document) et au minimum une donnée textuelle
qui est le contenu de l'éléments.
<person>
Alan Turing
</person>
- Le contenu d'un élément peut être
un document narratif, un compte rendu, un essai d'un étudiant,
une page web, etc.
- Exemple 2-3. Un document XML narratif (exm_007.xml)
[réf. p17]
Observer bien ce document et l'imbrication des balises :
<biography>
<name><first_name>Alan</first_name> <last_name>Turing</last_name>
</name> fut le premier homme à mériter
le nom d'<emphasize>informaticien</emphasize>.
Bien que ses contributions dans le domaine soient trop longues
à énumérer, les plus connues sont celles
qui portent son nom : le <emphasize>Test de Turing</emphasize>
et la
<emphasize> Machine de Turing</emphasize>.
<definition>Le <term>Test de Turing </term>
est jusqu'à ce jour le test standard
pour déterminer si un ordinateur est réellement
intelligent. Ce test n'a jusqu'ici jamais été
passé avec succès.</definition>
<definition>La <term>Machine de Turing</term>
est un automate abstrait à états finis comportant
une mémoire infinie dont il peut être prouvé
qu'il peut être équivalent à n'importe
quel autre automate à états finis, contenant
une quantité de mémoire quelconque mais fixe.
Ainsi, ce qui est vrai pour une machine de Turing est vrai
pour toute machine équivalente quelque soit son implémentation.</definition>
<name><last_name>Turing</last_name></name>
était aussi un parfait <profession>mathématicien</profession>
et <profession>cryptographe</profession>.
Son aide aux alliés fut cruciale pour décoder
le système de communication allemand Enigma. Il se
suicida le <date><day>7</day><month>juin</month><year>1954</year></date>
après avoir été reconnu homosexuel
et obligé de prendre des injections d'hormones féminines.
</biography>
- Comme pour le HTML, les balises doivent être
imbriquées correctement. Le principe d'imbrication
est celui des poupées russes ou des parenthèses
en mathématique (y - [x + z] ), première ouverte,
dernière fermée. [Réf. p23/3/3]
Juste (exm_008.txt)
:
<offre> <devis>
<titre>Devis de construction</titre>
<genre>Maison de campagne</genre>
<pièces>Six pièces</pièces>
<étages>Deux étages</étages>
<coût>Coût : <estimation>450'000</estimation>francs</coût>
<délais>Début de construction <début>juin 2002</début>, fin prévue pour
<fin>octobre 2002</fin></délais>
</devis> </offre>
Faux (exm_009.xml)
:
<offre>
<devis><titre>
Devis de construction<genre>Maison de campagne</titre></genre>
<pièces>Six pièces</pièces>
<étages>Deux étages</étages>
<coût>Coût : <estimation>450'000 francs</coût></estimation>
<délais>Début de construction <début>juin 2002</début>, fin prévue pour
<fin>octobre 2002</fin></délais>
</devis> </offre>
- EXERCICE
1: Après avoir déterminé ensemble les
balises, chaque élève crée sa fiche
signalétique XML. Ceci en tenant compte qu'elles
seront, par la suite, regroupées en un seul document
XML.
Attention : elle ne pourra pas encore être affichée,
car elle n'est pas bien formée (caractères).
Attributs
[réf. p18-19] 
- L'attribut est une paire "nom
- valeur" associé
à la balise d'ouverture.
- Les noms sont séparé des valeurs par le
signe = (et d'éventuels
blancs optionnels)
- Les valeurs sont entourées par de simples quotes
ou des guillemets.
- Exemple 2-4. (exm_010.xml)
[réf. p18] :
<person>
<name first="Alan" last="Turing"/>
<profession value="informaticien"/>
<profession value="mathématicien"/>
<profession value="cryptographe"/>
</person>
ou moins bien mais juste (blancs optionnels)
<person>
<name first = "Alan" last = "Turing"/>
<profession value = "informaticien"/>
<profession value = "mathématicien"/>
<profession value = "cryptographe"/>
</person>
- Faut-il utiliser des sous-éléments ou des
attributs? C'est l'éternelle question !
Les attributs peuvent permettre de condenser le code, mais
d'autre part, ils peuvent compliquer une mise en forme XSLT.
Vous choisirez ce qui vous semble le mieux correspondre
selon chaque cas. Comparer l'exemple 2-3. au 2-5.
- Exemple 2-5. Utilisation d'attributs. (exm_011.xml)
[réf. p19] :
<biography xmlns:xlink="http://www.w3.org/1999/xlink/namespace/">
<image source="http://www.turing.org.uk/turing/pi1/bus.jpg"
width="152" height="345"/>
<person born='23/06/1912' died='07/06/1954'><first_name>Alan</first_name>
<last_name>Turing</last_name> </person>
fut le premier homme à mériter le nom d' <emphasize>informaticien</emphasize>.
Bien que ses contributions dans le
domaine soient trop longues à énumérer,
les plus connues sont celles qui portent son nom le <emphasize
xlink:type="simple" xlink:href="http://cogsci.ucsd.edu/~asaygin/tt/ttest.html">Test
de Turing </emphasize> et la <emphasize xlink:type="simple"
xlink:href="http://mathworld.wolfram.com/TuringMachine.html">
Machine de Turing </emphasize>.
<last_name>Turing</last_name>
était aussi un parfait <profession>mathématicien</profession>
et
<profession>cryptographe</profession>. Son
aide aux alliés fut cruciale pour décoder
le système de communication allemand Enigma.<footnote
source="The Ultra Secret, F.W. Winterbotham,1974">1</footnote>
Il se suicida le <date><day>7</day><month>juin</month><year>1954</year></date>
après
avoir été reconnu homosexuel et obligé
de prendre des injections d'hormones féminines.
<footnote source="Alan Turing: the Enigma, Andrew
Hodges, 1983">2</footnote>
</biography>
Nom XML
[réf. p20-21] 
- Les règles des noms d'éléments et
des noms attributs sont les mêmes :
- Le nom doit commence par une lettre,
un caractère non standart
ou un trait de soulignement
_.
- Il peut contenir des lettres a-z
et A-Z, des chiffres 0-9.
- Il peut contenir des caractères non standard ö,
ç, é,
accentués selon
l'encodage utilisé (...)
- Il peut contenir le trait de soulignement _
, tiret - et point.
- Il n'est pas limité dans sa longueur (99'999 caractères).
- Le : est réservé
au espace de nom.
- Ne doit pas contenir d'autres caractères de ponctuation
(? ' £ $ % etc.)
- Ne doit pas contenir de blanc.
- Ne doit pas commencer par les trois lettres xml
ensembles.
- Ne doit pas commencer par un nombre,
un trait d'union ou un
point.
Appel d'entité
[réf. p21-22] 
Rappel html
sur les caractères ASCII.
- Dans le contenu d'un éléments pas de caractère
< car il représente
l'ouverture d'une balise. Si on en a besoin, il faut dans
ce cas l'échapper en utilisant l'appel d'entité
<
Le parseur remplace cet appel par le bon caractère
et il ne le confond pas avec une ouverture de balise.
- Le problème est identique avec le caractère
& qui représente
l'ouverture d'un appel d'entité. Il sera échappé
avec l'entité &
- Ces appels d'entité seront restitués comme
indiqué
ci-dessous. XML définit exactement cinq types d'entités
:
< pour (<)
: le signe inférieur à (ou chevron ouvrant).
& pour (&)
: l'esperluette.
> pour (>)
: le signe supérieur à (ou chevron
fermant).
" pour
(") : le signe guillemets.
' pour
(') : le signe apostrophe
ou simple quote.
- Dans le contenu d'un élément, seules les
entités < et
& doivent être
utilisés en lieu et place des vrais caractères
(les autres sont optionnelles) (exm_012.txt,
exm_012.xml).
- Dans la valeur d'attributs, seules les entités
" et '
sont utiles pour éviter de confondre la fin de la
valeur.
Section CDATA
[réf. p22-23] 
- CDATA ou donnée de code (Code DATA) sert à
intégrer du texte de code source (XML, HTML) dans
le document, sans avoir besoin de faire des appels d'entités
pour les caractères concernés. Pour ceci il
suffit d'intégrer le code source dans une section
CDATA (exm_013.xml)
:
<![CDATA[ et
]]>
Tout ce qui se trouve dans la section, en lieu et place
du " et ", sera traité comme une donnée
textuelle brute.
- Seul le délimiteur de fin ]]>
ne doit pas se trouver dans une section CDATA (exm_014.xml).
Commentaire
[réf. p23] 
- Les commentaires sont là pour rendre le code source
plus lisible et/ou comme mémo. Ils ne sont destiné
à aucun programme. Un commentaire commence avec <!--
et se termine par -->
<!-- ceci est un commentaire ;-), il peut s'étendre
aussi loin que je le désire, mais il doit respecter
quelques règles qui sont indiquées ci-dessous
-->
- Attention : Le double trait d'union --
ne doit pas apparaître dans le commentaire jusqu'au
--> de fin. De ce fait, le triple trait d'union ---
n'est également pas autorisé, etc.
- Les commentaires peuvent se placer partout, avant, après
une balise ou dans le contenu de l'élément (données textuelles),
mais obligatoirement après
la déclaration
XML. (ne peuvent pas se placer à l'intérieur
d'une balise, entre <...>).
Instructions de traitement
[réf. p23-24] 
- Avec le langage HTML les commentaires sont quelques fois
utilisés comme instructions de traitement et celà
peut causer des problèmes :
<script language="JavaScript">
<!--
ici le script...
//-->
</script>
C'est pourquoi en XML il existe l'instruction de traitement
qui commence par <?
et finit par ?>
- Après <? se
trouve xml (appelé
la cible) ou le nom de
l'application concernée par l'instruction ou encore
simplement un identifiant
pour cette instruction. La partie restante contient du texte
au format approprié des instructions destinées
à l'application.
- Exemple d'une instruction classique
XML (d'autres seront très différentes) :
<?robots index="yes"
follow="no"?>
La cible "robots"
du moteur de recherche doit indexer la page
index="yes" et 'ignorer les liens relatifs
au document follow="no".
- Comme le commentaire, elle peut être
placée n'importe où dans le document XML,
en dehors d'une balise y compris avant ou après l'élément
racine. Mais après la déclaration XML.
- Exemple 2-6. Instruction de traitement xml-stylesheet
(exm_015.txt)
:
<?xml-stylesheet href="person.css"
type="text/css"?>
<person>
Alan Turing
</person>
EXERCICE
2 : Après avoir déterminé ensemble
les attributs et autres commentaires,
les ajouter à la fiche signalétique.
Déclaration XML
[réf. p25-26] 
- La déclaration de traitement est optionnelle, mais
vivement conseillée. Elle ressemble à une
instruction de traitement mais n'en n'est pas une !
- Sa place est dans la première ligne du document
et rien ne doit la précéder (blanc, commentaire,
etc.), car le parseur
utilise les cinq premier caractère <?xml
afin de déterminer l'encodage (voir chapitre 5).
Le tout doit être en minuscules.
- Exemple 2-7. Un document simple avec une déclaration
XML
(avec : exm_016.xml,
sans : exm_017.xml)
:
<?xml version="1.0"
encoding="iso-8859-1" standalone="yes"?>
<person>
Alan Turing
</person>
Version : Indique la version
XML utilisée pour écrire le document. La
valeur 1.0 pourrait évoluer, mais pourrais également
rester à 1.0, le langage XML étant suffisamment
développé pour l'avenir. Les espaces de
nom et les schémas peuvent évoluer sans
pour autant que l'on ait besoin de toucher au langage
XML (et pourtant : 2004, la version 1.1 sur w3c)
Encoding : Indique le jeu
de caractère utilisé pour écrire
le document (iso-8859-1 = latin 1 ou europe de l'ouest).
S'il n'est pas présent, le jeu de caractère
UNICODE est utilisé par défaut. Doit se
trouver avant standalone si standalone est utilisé !
Standalone : Doit se trouver
en dernier et indique si une DTD
externe au document est utilisée (yes si pas utilisée).
Si standalone est absent, la valeur NO est sélectionnée
par défaut..
Vérification des contraintes
de forme des documents
[réf. p27-29] 
- Chaque document XML doit être bien
formé. Pour celà
il doit respecter quelques règles :
- il ne doit y avoir qu'un seul élément racine.
- à chaque balise de début doit correspondre
une balise de fin.
- les éléments ne doivent pas se recouvrir.
- les valeurs des attributs doivent être double-quotées
('att' ou "att").
- un élément ne doit pas avoir deux attributs
avec le même nom.
- aucun caractère < ou & non échappé
ne doit apparaître dans les données textuelles
d'un élément ou d'un attribut.
Liste non exhaustive. Un document peut être mal formé
à bien des égards. Vous trouverez une liste
complète au Chapitre 18 du livre "XML IN A NUTSHELL"
- Un parseur doit signaler les erreurs, mais il n'est pas
autorisé à les corriger. L'objectif étant
d'éviter les guerres de compatibilité qui
ont tourmentés les 1ère version des navigateurs
et qui continue aujourd'hui ! (différences d'affichage
des pages dans Iexplorer et Netscape).
- La façon la plus simple pour vérifier un
document est de le charger dans un navigateur web compatible
XML. Si le document apparaît, c'est qu'il est bien
formé. Si non, un message d'erreur s'affiche.
- Une fois que le document est bien formé, il peut
être fourni à l'application qui doit le traiter
(navigateur, base de données, etc.)
- Parseur Java libre de droit. [réf. p28-29]
OEM : Exemples
pratiques de code XML
[réf. p24/3/4] 
- Arbre généalogique, exemple :
- Version papier [réf.
p24/3/4] :
- Version HTML (aucune précision sur les données)
(exm_018.txt)
:
<table> <tr>
<td>Armand Duchemin</td>
<td>Sophie Duchemin</td>
<td>Maria Duchemin</td>
<td>Georges Duchemin</td>
<td>Pauline Duchemin</td>
<td>Jean-Pierre Duchemin</td>
</tr>
</table>
- Version XML (les balises nous informent sur chaque
membre de cette famille) (exm_018.txt):
<famille>
<père>Armand Duchemin</père>
<mère>Sophie Duchemin</mère>
<enfants>
<enfant>Maria Duchemin</enfant>
<enfant>Georges Duchemin</enfant>
<enfant>Pauline Duchemin</enfant>
<enfant>Jean-Pierre Duchemin</enfant>
</enfants>
</famille>
-
On peut encore améliorer l'information en ajoutant
des balises selon nos besoins :
Exemple complet : (exm_019.xml)
Exemple sans l'attribut encoding="ISO-8859-1"
: (exm_020.xml)
Le navigateur ne comprend pas la balise <père>
et lit <p?...
<?xml version="1.0" encoding="ISO-8859-1"?>
<famille>
<père>Armand <nom>Duchemin</nom></père>
<mère>Sophie <nom>Duchemin</nom>
<nom_de_jeune_fille>Jones</nom_de_jeune_fille></mère>
<enfants>
<enfant>Maria <nom>Duchemin</nom></enfant>
<enfant>Georges L. <nom>Duchemin</nom> II</enfant>
<enfant>Pauline M. <nom>Duchemin</nom></enfant>
<enfant>Jean-Pierre J. <nom>Duchemin</nom></enfant>
</enfants>
</famille>
-
EXERCICE 3 : Ajouter la déclaration XML adaptée
dans la fiche signalétique et afficher le document
dans Internet Explorer. Corriger les éventuelles
erreurs.
- EXERCICE 4 : Corriger
les erreurs des documents reçus
ex_01.txt - ex_02.txt
- ex_03.txt
- ex_04.txt
- EXERCICE 5 : Exercice
d'arborescence. Corriger le lien de l'image après
l'avoir déplacée de dossier (ou déplacer
le fichier index.html). (ex_005.zip)
|