







Les formats graphiques
Construire un site Web
Protocoles de messagerie
Le protocoles FTP
Le dessin vectoriel
Cours de Basic
Retouche d'images
Le langage XML
Les associations
Le E-commerce
Les virus
La compression
Les cookies
Trouver un job
La comptabilité
Comprendre la paie


|
Comprendre l'informatique
Introduction au langage XML
Le XML (eXtended Markup Language) est un langage
de balisage extensible standardisé par le World Wide Web Consortium
(W3C) qui s'occupe également de la standardisation du langage HTML et des feuilles de
style entre autres.
Le XML et les technologies associées comme le XSL (eXtended
StyleSheet Language) seront certainement dans l'avenir, les successeurs
désignés du langage HTML. Effectivement, plusieurs éditeurs
de logiciels à l'image de Sun Microsytems ou de Microsoft travaillent activement à l'élaboration
de nouveaux outils profitant pleinement des avantages du XML.
Le HTML permet de mettre en forme un document contenant diverses données
formatées en titres, en paragraphes, en listes, en tableaux, etc. Ainsi,
le langage HTML possède des balises destinées essentiellement à la présentation
des données que le développeur lui fournit et en aucun cas, il ne tente
de les interpréter.
Par contre, les balises du XML définissent plutôt la sémantique (le sens)
des données. C'est-à-dire, que le balisage créé par le développeur donnera
une signification précise des données fournies.
Par exemple, une liste de noms et de prénoms d'employés dans une entreprise
quelconque sera balisé comme suit par du HTML :
<UL>
<LI>Jean Bernard</LI>
<LI>Jean-Yves Dupré<LI>
...
</UL>
|
Alors que dans le XML, le balisage adoptera une autre forme plus adaptée
aux données :
<ENTREPRISE>
<EMPLOYE SECU_SOC="1.80.12.75.120.058/51">
<NOM>Bernard</NOM>
<PRENOM>Jean</PRENOM>
</EMPLOYE>
<EMPLOYE SECU_SOC="1.51.02.38.032.181/18">
<NOM>Dupré</NOM>
<PRENOM>Jean-Yves</PRENOM>
</EMPLOYE>
...
</ENTREPRISE>
|
Comme nous pouvons le constater, le XML est une structure arborescente
dont les noeuds de l'arbre contiennent des données. Dans l'exemple ci-dessus,
le noeud principal est <ENTREPRISE> et des noeuds secondaires
sont représentés par <EMPLOYE>. On remarquera que ce dernier
possède un attribut SECU_SOC qui représente une donnée complémentaire
et permet de différencier les noeuds secondaires entre eux.
Dans un navigateur compatible avec cette technologie comme Internet Explorer
5, le résultat à l'affichage est le suivant :
C'est pourquoi, pour afficher correctement ses données à l'instar du
HTML, le XML a besoin du langage des feuilles de style, le CSS (Cascading
Style Sheet) ou spécifiquement pour lui le XSL (eXtended StyleSheet Language).
Le XSL est une grammaire du XML, un processeur de modèle qui transforme
une grammaire XML en une autre ou en HTML.
Le prologue
Le prologue XML est une instruction de traîtement servant
à identifier la version du langage XML et doit se trouver obligatoirement
tout en haut du document XML.
Cette instruction est utilisée également pour déclarer le jeu de
caractères d'encodage du document XML.
Enfin, elle permet de spécifier si le document est autonome (standalone="yes")
ou s'il dépend, pour son fonctionnement, d'autres fichiers ou de toutes
autres ressources externes (standalone="no").
Les instructions XML légales sont les suivantes :
<?xml attributs ?>
<?XML ATTRIBUTS ?>
Ces instructions possèdent trois attributs :
version="numéro-de-version" |
: |
indique la version de XML utilisée pour le traîtement
du document. |
encoding="type-d'encodage" |
: |
indique le jeu de caractères employé dans le document. |
standalone="yes|no" |
: |
indique si le document est autonome ou s'il se réfère
à d'autres fichiers. |
exemple :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
L'instruction XML spécifie la version 1.0 de XML avec un encodage Unicode
compressé et requiert des documents externes.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
La déclaration suivante indique toujours la version 1.0, d'ailleurs la
seule, un encodage correspondant au type Latin-1, Europe occidentale
et enfin le document est autonome.
Les commentaires
Les commentaires permetttent d'illustrer le code afin de
le rendre compréhensible pour une meilleure efficacité dans la maintenance
d'un site.
Les commentaires peuvent être placés n'importe où dans un document
excepté à l'intérieur des balises. La définition de type de document peut
contenir ces commentaires aux endroits autorisés par la grammaire.
Les commentaires dans XML ont la même forme que ceux du HTML.
<!-- commentaire -->
Les informations textuelles contenues à l'intérieur de ce balisage ne
sont évidemment pas affichées à l'écran.
En outre, un processeur XML peut permettre à une application de récupérer
le texte des commentaires.
La chaîne double trait d'union (--) ne doit pas apparaître à l'intérieur
de commentaires en raison d'une incompatibilité.
<!----------commentaire---------->
Cette écriture est interdite car elle comporte deux séries de double
trait d'union.
Exemple :
<?xml version="1.0" standalone="yes"?>
<--/-L'esperluette & peut être utilisée
littéralement dans une instruction CDATA-/-->
<[CDATA[L'esperluette ou le & commercial]]>
<balise>
<!-- Explication -->
Données
</balise>
|
Les
sections CDTA
Les sections CDATA sont utilisées pour habiller des blocs
de texte contenant des caractères qui seraient autrement reconnus comme
balisage.
Les sections CDATA sont identifiées de la manière suivante
:
<![CDATA[ bloc de texte ]]>
Ces sections peuvent se trouver à n'importe quel endroit acceptable pour
des données textuelles dans le document XML.
En outre, il n'est pas possible d'employer des références d'entités (<,
&, etc.) à l'intérieur d'une section CDATA, en raison d'une incapacité
de transcription puisque seule la chaîne de caractères ]]> est
reconnue comme balisage.
Enfin, les sections CDATA ne peuvent pas s'imbriquer.
Exemple :
<?xml version="1.0" standalone="yes"?>
<[CDATA[Voici un élément vide
correctement fermé : <balise/>.]]>
|
Les
instructions de traitement
Une instruction de traitement permet de transmettre le type
d'application et éventuellement différents paramètres permettant de traiter
une entité externe non-analysable comme une vidéo (avi, mpeg, qtw,
etc.), un document textuel (pdf, doc, rtf, etc.) un programme Java, Perl
ou encore C++.
<?cible liste_attributs?>
La cible identifie l'application à laquelle l'instruction est
destinée.
La liste d'attributs permet de spécifier des données particulières pour
le traitement de l'instruction.
Les instructions de traitement débutant par la chaîne de caractères xml
sont réservés à un usage réservé au standard XML.
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Exemple :
<?tableau feuille="compte.xsl"?>
<?bml register demos.texteditor.MenuBarAdder?>
<?xml-stylesheet type="text/css" href="style.css"?>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE document [
<!ELEMENT document (article)>
<!ELEMENT article (#PCDATA)>
<!ATTLIST article source ENTITY #REQUIRED>
<!ENTITY doc_word SYSTEM "/doc/article.doc"
NDATA doc>
<!NOTATION doc PUBLIC
"-//IETF//NONSGML Media Types
application/msword//EN"
"http://www.isi.edu/in-notes/iana/assignments
/media-types/application/msword">
]>
<?doc WinWord?>
<document>
<article source="doc_word">
Spécification de XML 1.0
</article>
</document>
|
La
définition de type de doccument
Une DTD permet de déclarer la liste, le type et les relations
des éléments, des attributs, des entités et des notations contenus dans
le document XML.
La DTD contraint le document XML à se conformer aux règles énoncées.
Si le document est conforme au DTD, alors ce document XML est considéré
comme valide.
Chaque élément, attribut et entité doivent être déclarés dans la DTD avant
leur utilisation.
De plus, la structure adoptée dans la DTD doit correspondre rigoureusement
à celle construite dans le corps du document XML.
<!DOCTYPE élément_racine [
<!ELEMENT balise (#PCDATA)>
<!ATTLIST balise attribut CDATA #REQUIRED>
<!ELEMENT élément_racine (balise)>
<!ENTITY e-aigu "é">
]>
<élément_racine>
<balise attribut="valeur">donn&e-aigu;e</balise>
</élément_racine>
|
La définition s'énonce à la suite de la déclaration XML préalable par
la commande suivante :
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE Elément_racine...>
<Elément_racine>
...
</Elément_racine>
|
Cette définition se compose du nom de l'élément racine, suivi de la déclaration
de type de document soit sous forme d'une énumération des éléments, attributs
et entités, soit sous forme d'une URI (Uniform Resource Identifier) pointant
vers une DTD externe auquelle est associée un mot-clé : SYSTEM
ou PUBLIC combiné avec le nom public de la DTD externe.
<!DOCTYPE Elément_racine [Enumération...]>
<!DOCTYPE Elément_racine SYSTEM "URI">
<!DOCTYPE Elément_racine PUBLIC "Nom_DTD" "URI">
|
Il est également possible de combiner une DTD externe à une DTD interne.
Ainsi, la DTD du document XML se composera d'une sous-DTD externe et d'une
sous-DTD interne.
<!DOCTYPE Elément_racine SYSTEM "URI" [Enumération...]>
Il existe, donc, deux mots-clé pour cette instruction :
SYSTEM |
: |
indique la localisation d'une URI d'une DTD utilisée dans le document. |
PUBLIC |
: |
est employé lorsque la DTD possède un usage général. |
La valeur diffère selon le mot-clé spécifié.
"URI" |
: |
permet d'indiquer une adresse d'une DTD lors de la spécification
du mot-clé SYSTEM. |
"Nom_DTD" "URI" |
: |
représente, lors d'une spécification PUBLIC, le nom de la
DTD que le processeur XML utilisera pour retrouver la définition du
type de document et une adresse permettra de se substituer au nom
de la DTD précitée en cas d'impossibilité d'être atteinte. |
Exemple :
<!DOCTYPE document SYSTEM "../dtd/definition.dtd">
<!DOCTYPE document
PUBLIC
"-//NomDTD//DTD//EN"
"http://www.monsite.com/dtd/definition.dtd">
<!DOCTYPE document [
<!ELEMENT paragraphe (phrase)>
<!ELEMENT phrase (#PCDATA)>
<!ATTLIST paragraphe auteur CDATA #IMPLIED>
<!ENTITY e-dans-o "œ">
<!ENTITY a-dans-e "æ">
]>
|
Documents
bien formés et valides
Un document XML est dit bien formé lorsque le document
est correct sans toutefois possèder une DTD.
Le prologue du document
ne contient pas de Définition de Type de Document (DTD) et la structure
arborescente du document respecte les standards XML (nom des balises et
attributs, imbrication des marqueurs XML,...).
<?xml version="1.0" standalone="yes"?>
<magasin>
<service>
<produit>
Vaisselle
</produit>
</service>
</magasin>
|
Un document XML est dit valide lorsque le document est bien
formé et possède une DTD.
Le prologue du document contient une
Définition de Type de Document (DTD) et l'arborescence des éléments XML
respecte strictement, la structure définie par la DTD.
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE magasin [
<!ELEMENT magasin (service)>
<!ELEMENT service (produit)>
<!ELEMENT produit (#PCDATA)>
]>
<magasin>
<service>
<produit>
Vaisselle
</produit>
</service>
</magasin>
|
Un document XML bien formé doit obéir aux règles suivantes :
- Le document doit commencer par une déclaration XML.
<?version="1.0"
standalone="yes" encoding="iso-8859-1"?>
- Le document doit utiliser une DTD (Document Type Definition).
<!DOCTYPE
élément_racine [Définitions...]>
- Le document doit contenir un seul et unique élément racine, déclaré
dans l'instruction DOCTYPE, dont les marqueurs encadrent une
ou plusieurs autres balises.
<!DOCTYPE élément_racine [Déclarations...]>
<élément_racine>
<balise>donnée</balise>
...
</élément_racine>
- Le document doit contenir un ou plusieurs éléments. Si le document
contient un seul élément, alors ce document sera composé du seul élément
racine.
- Les valeurs d'attribut doivent être impérativement encadrées par des
guillemets simples (') ou doubles (").
<balise attribut="valeur"
attribut2='valeur'>
- Une balise contenant des données doit impérativement être fermée.
<balise>donnée</balise>
- Une balise vide (ne contenant pas de données à l'instar de la balise
IMG dans le HTML) doit également contenir un marqueur de fermeture.
<balise></balise>
<balise/>
- Les balises doivent être correctement imbriquées, ainsi la ou les
balises fils doivent être encadrées par une balise parente de départ
et une de fin.
<balise parent>
<balise fils>donnée</balise fils>
<balise fils/>
</balise parent>
- Les noms d'éléments et d'attributs ne peuvent être composés que de
lettres, y compris les lettres accentuées, de chiffres, de soulignés(_),
de tirets (-), de points (.) et de deux points (:).
- Les noms d'éléments et d'attributs doivent commencer par une lettre
ou un souligné.
<_balise attribut9='valeur'/>
- Les noms d'éléments dans les balises d'ouvertures ou de fermetures
devront respecter une casse rigoureusement identique.
<BaLiSe>Donnée</BaLiSe>
- Les noms d'attributs doivent également conserver une casse rigoureusement
identique.
balise AttribuT="valeur">donnée<balise>
balise2 AttribuT="valeur">donnée<balise2>
- Le caractère inférieur à (<) sert uniquement à ouvrir une
balise.
<élément/>
- Le caractère esperluette (&) est utilisé essentiellement
pour faire appel à une référence d'entité soit prédéfinie, soit générale,
déclarée au préalable dans la DTD.
&
&entité_générale;
- Les caractères inférieur à (<), l'esperluette (&)
ou la séquence ]]> doivent être remplacés respectivement par les
références d'entité <, & ou ]]>.
- Les attributs des documents XML bien formés sans DTD seront considérés
de type CDATA, d'ailleurs considéré comme type par défaut.
Les éléments
Les éléments XML sont des balises particulières à l'instar de celles
du langage HTML, hormis que dans ce cas, elles sont le fruit de l'auteur.
Tous les Eléments doivent être déclarées dans la Définition de Type de Document
(DTD).
Les balises XML peuvent être de deux sortes.
La première contient, entre la balise de début et la balise de fin, des
données diverses comme du texte.
<Elément>donnée</Elément>
La seconde est du type vide, c'est-à-dire, des balises ne contenant pas
de données à proprement parler à l'instar des balises HTML <IMG...>
ou <BR>. Dans ce cas, contrairement au HTML, les éléments doivent
être impérativement fermées par une balise de fin ou le caractère slash
(/) placé juste avant le caractère supérieur à (>).
<Elément></Elément>
<Elément/>
En effet, le balisage XML doit respecter des règles strictes comme la
fermeture obligatoire de tous les types d'éléments comme précité.
<centre>
<image src="http://monsite.com/photo.jpg">
</centre>
Cet exemple ne pourra pas fonctionner car la balise image n'est pas fermée.
De plus, Les éléments doivent être correctement imbriquées sous peine
de dysfonctionnements.
<tableau>
<gras><souligne>Titre</gras></souligne>
</tableau>
Dans cet exemple, les éléments gras et souligne sont incorrectement
imbriquées.
Le nom d'un élément doit commencer par une lettre (a-zA-Z et les caractères
accentués), le caractère de soulignement (_). Le nom peut comporter un
nombre quelconque des caractères précités auxquels s'ajoutent les chiffres
(0-9), le tiret (-), le point (.), les caractère deux points (:). Ce dernier
est en général utilisé comme séparateur entre un espace de nom (namespace)
et le nom d'élément.
<2main/> <!--Balise incorrecte-->
<&variable/> <!--Balise incorrecte-->
<Premier Pas/> <!--Balise incorrecte-->
<départ/> <!--Balise correcte-->
<_depart/> <!--Balise correcte-->
<football:milieu/> <!--Balise correcte-->
<fin/> <!--Balise correcte-->
Pour en savoir plus sur la construction des noms, consultez le site du
World Wide Web Consortium (W3C).
De même, un nom d'élément ne peut commencer par la chaîne de caractère
xml, XML ou toutes autres combinaisons formant ce dernier,
réservée pour un usage spécifique.
Les noms d'éléments XML sont sensibles à la casse.
<balise>
<Balise>
<BALISE>
Les trois balises ci-dessus sont toutes strictement différentes. Le processeur
XML interprètera chacun de ces éléments de façon unique, si bien qu'ils
seront incompatibles entre eux.
<balise>donnée</Balise>
Cet exemple provoquera une erreur puisque les balises de début et de
fin ne sont pas équivalentes.
Les attributs
Les attributs apportent des informations complémentaires à une balise
XML.
Les attributs des éléments XML doivent être déclarés dans la Définition
de Dype de Document (DTD) avant leur utilisation dans le document XML.
A l'image de ceux du HTML, les attributs sont formés d'un nom auquel est
associé une valeur.
<livre edition="EditeurX" auteur="IndividuY">Titre</livre>
Dans cet exemple, deux attributs sont associés à l'élément livre,
lui apportant deux caractéristiques supplémentaires.
Les attributs ne peuvent être présents que dans la balise de début de
l'élément XML.
<balise attribut="valeur">...</balise>
<balise attribut="valeur"/>
La valeur des attributs doivent toujours être entre des guillemets doubles
("...") ou simples ('...').
Les attributs pays='France' et pays="France" sont tout les deux corrects.
Les attributs sont également sensibles à la casse.
L'attribut monnaie="francs" est différent de MONNAIE="francs".
Le nom d'un attribut doit commencer par une lettre (a-zA-Z et les caractères
accentués), le caractère de soulignement (_) ou le caractère deux points
(:) utilisé généralement pour des attributs réservés.
Ainsi, l'attribut poids='120kg' est correct alors que #poids='72kg' est invalide.
Enfin, une balise ne peut commencer par la chaîne de caractère xml
ou XML réservée pour un usage spécifique, en l'occurrence pour
des attributs réservés comme xml:lang
et xml:space.
La déclaration des entités
Les documents XML sont construits à partir d'une ou plusieurs entités
internes ou externes.
Ces denières possèdent un contenu et un identifiant, en l'occurrence une
valeur d'entité et un nom d'entité.
Tout document XML possède au moins une entité correspondant à la Déclaration
de Type de Document et l'élément racine. Cette entité s'appelle entité
document.
Les entités peuvent contenir des données XML bien formulées, d'autres formes
de texte comme des courriers électroniques ou des données binaires comme
des images ou des applets Java.
Les noms d'entités obéissent aux mêmes règles que les noms d'éléments ou
d'attributs. Ils ne peuvent être constitués que de lettres, y compris les
lettres accentuées, de chiffres, de soulignés (_), de tirets (-), de points
(.) et de deux-points (:). Toutefois le nom d'entité ne peut commencer que
par une lettre ou un souligné.
Deux catégories d'entités se distinguent. Il s'agit des entités
internes, définies et utilisables dans le document XML, et les
entités
externes, définies dans une ressource externe et utilisable dans
le document via une adresse URL (Uniform Resource Locator).
Deux autres types d'entités apparaissent également : les entités
analysables dont le contenu est entièrement conforme à un XML
bien formé, et les entités
non-analysables correspondant à un contenu composé de texte non-XML
ou de données binaires.
Enfin, les entités se divisent encore en deux parties. Les entités
générales permettent d'utiliser leur contenu essentiellement dans
le document XML hors DTD. Les entités paramètres sont utilisables
exclusivement dans la Déclaration de Type de Document.
Les notations
Les notations sont utilisées en conjonction avec des entités
non-analysables, c'est-à-dire contenant des données non-XML (image, applet
Java, courrier électronique, etc.).
Le nom de la notation est associé, au sein de l'instruction <!ENTITY...>,
au mot-clé NDATA permettant ainsi de faire référence à un identificateur
(ID) permettant de décrire le format de données non-XML concerné.
L'identificateur externe (ID_Externe) peut tout à fait être un type MIME (Multipurpose Internet Mail Extensions)
comme "video/mpeg", "text.rtf", "application.pdf", etc..
Si l'identificateur est public alors une adresse URI (Uniform Resource Identifier)
est nécessaire.
La déclaration d'une notation s'effectue comme suit :
<!NOTATION nom_notation SYSTEM "ID_Externe">
<!NOTATION nom_notation PUBLIC "ID_Public" "URI">
L'appel à cette notation s'opère de la manière suivante :
<!ENTITY nom_entité SYSTEM "URI" NDATA nom_notation>
Exemple :
<?xml version="1.0" standalone="no"?>
<!DOCTYPE vidéothèque [
<!ELEMENT vidéothèque (vidéo)>
<!ELEMENT vidéo EMPTY>
<!ATTLIST vidéo source ENTITY #REQUIRED>
<!NOTATION avi SYSTEM "video/avi">
<!ENTITY vacance SYSTEM "mes_vacances.avi" NDATA avi>
]>
<vidéothèque>
<vidéo source="&vacance;"/>
<vidéothèque>
|
Les sections conditionnelles
Les sections conditionnelles permettent d'inclure ou d'ignorer des portions
de déclarations dans la DTD (Document Type Definition).
L'instruction suivante permet d'inclure le bloc de déclarations dans la
DTD.
<![INCLUDE Bloc_Déclarations...]]>
L'instruction suivante permet d'ignorer le bloc de déclarations dans
la DTD.
<![IGNORE Bloc_Déclarations...]]>
Il est possible de substiturer la directive INCLUDE ou IGNORE
par une entité paramètre, déclarée par l'instruction ENTITY.
De cette façon, l'entité paramètre pourra prendre comme valeur INCLUDE
ou IGNORE afin d'inclure ou d'ignorer la section concernée.
<!ENTITY % directive "INCLUDE"> <![%directive;
Bloc_Déclarations...]]>
Si une DTD externe est utilisée pour plusieurs documents XML, l'entité
paramètre déclarée dans la sous-DTD interne combinée avec les sections
conditionnelles déclarées dans la DTD externe permettent d'adapter cette
dernière à tous les documents XML.
Exemple :
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE document SYSTEM "definition.dtd" [
<!ENTITY % directive "IGNORE">
]>
<!-- document.xml -->
<document>
...
</document>
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE document SYSTEM "definition.dtd" [
<!ENTITY % directive "INCLUDE">
]>
<!-- snd_document.xml -->
<document>
...
</document>
<!-- definition.dtd -->
<!ELEMENT document ANY>
<![%directive; Bloc_Déclarations...]]>
|
|