====== Notes de cours XML ======
{{:enseignement:bd:xml-dtd-xpath.pdf|Diapos du cours}}
===== XML =====
XML (eXtensible Markup
Language) est un standard du W3C. Il s'agit d'un format de
documents permettant de représenter des données sous
forme de texte, tout en conservant une certaine organisation. Le
modèle de données sous-jacent est un arbre (voir la
section 1.1). Il existe cependant
des extensions à XML permettant de considérer des
graphes.
Lorsque l'on considère XML, c'est souvent en conjonction avec
un ensemble de technologies qui vont permettre de l'utiliser. Voici
une partie de ces technologies:
Parmi ces informations, on trouve la version de XML utilisée
(''version'') et qui est presque toujours ''1.0'',
l'encodage des caractères (''encoding'') ou encore le
fait que le document fasse ou non référence à
d'autres documents (''standalone'').
----
**Exemple**
//Le prologue suivant://
//signifie qu'il s'agit d'un document XML version 1.0, que
l'encodage des caractères suit la norme unicode sur 8bits
(UTF-8) et que le document fait référence à d'autres
documents.//
----
== Une déclaration de type ==
Elle est de forme suivante:
où //''le-type''// est au choix:
* //nom//
* //nom// SYSTEM "//URL//"
* //nom// PUBLIC //identifiant//
//nom// indique le nom
de l'élément principal du document, //URL// indique
l'url où peut être trouvée la DTD du document et
//identifiant// indique un identifiant publique pour le type,
tel que ''%%"-//W3C//DTD XHTML 1.0 Transitional//EN"%%'' pour le
xhtml en version 1.0 transitionnelle.
Les //déclarations supplémentaires// correspondent
soit à la DTD complète, soit à des déclarations
qui s'ajoutent à la DTD.
----
**Exemple** //La déclaration suivante://
]>
//indique que l'élément principal est nommé
''collection'', que la description du document est donnée
dans le fichier ''collection.dtd'' et que l'entité
''Arl'' correspond au texte ''Arleston''.//
----
=== Syntaxe des noeuds de l'arbre XML ===
== Attributs ==
Un attribut s'écrit
nom="valeur"
ou bien
nom='valeur'
Il doit
obligatoirement être placé à l'intérieur de la
balise ouvrante de l'élément qui est son père.
== Éléments ==
La syntaxe d'un élément est la
suivante:
... enfants qui ne sont pas des attributs ...
Les //attributs// d'un élément sont
séparés par des espaces. //nom// est le nom de
l'élément.
Un élément sans enfants autres que des attributs peut
s'écrire:
== Texte ==
Les noeuds texte sont écrits tels
quels, sauf en ce qui concerne les caractères spéciaux:
Caractère | Comment l'écrire |
< | < |
> | > |
" | "e; |
' | ' |
& | & |
== Commentaires ==
Les commentaires s'écrivent:
== Les commandes (ou //processing instructions//) ==
Elles s'écrivent:
----
**Exemple**
//Document XML correspondant à
l'exemple d'arbre XML précédent.//
Arleston
Tarquin
L'ivoire du Magohamoth
Tarquin
Adieu, monde cruel
----
==== DTDs ====
DTD signifie Document
Type Definition. Une DTD est une spécification de la
structure du document XML. Elle spécifie, pour chaque
élément du document, quels peuvent être ses enfants
et dans quel ordre ils peuvent apparaître. La DTD d'un
document peut être spécifiée soit dans le document
lui-même, à l'intérieur des crochets [ ] de la
déclaration <!DOCTYPE
...>, soit de manière externe grâce
aux définitions SYSTEM ou
PUBLIC de <!DOCTYPE
... > (voir la section 1.2.1). Une DTD peut également contenir
des définitions d'entités, qui permettent de définir
un alias pour un morceau de document XML.
<!ATTLIST editeur nom CDATA #REQUIRED adresse CDATA #IMPLIED>
<!ENTITY Arl "Arleston">
<!ENTITY Tar "<dessinateur>Tarquin</dessinateur>">
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE collection [ <!ELEMENT collection (serie*)> <!ELEMENT serie (tome+,editeur?)> <!ATTLIST serie nom CDATA #REQUIRED> <!ELEMENT tome (scenariste?,dessinateur?,titre)> <!ATTLIST tome numero CDATA #REQUIRED> <!ELEMENT scenariste (#PCDATA)> <!ELEMENT dessinateur (#PCDATA)> <!ELEMENT titre (#PCDATA)> <!ELEMENT editeur EMPTY> <!ATTLIST editeur nom CDATA #REQUIRED adresse CDATA #IMPLIED> <!ENTITY Arl "Arleston"> <!ENTITY Tar "<dessinateur>Tarquin</dessinateur>"> ] > <collection> <serie nom="Lanfeust de Troy"> <tome numero="1"> <scenariste>&Arl;</scenariste> &Tar; <titre>L'ivoire du Magohamoth</titre> </tome> <tome numero="2"> &Tar; <titre><![CDATA[Thanos l'incongru]]></titre> </tome> <editeur nom="Soleil"/> </serie> <serie nom="Calvin & Hobbes"> <tome numero="1"> <titre>Adieu, monde cruel</titre> </tome> </serie> </collection>
<livres xmlns="http://www.livres-pas-chers.com"> <livre> <auteur>Stephen King</auteur> <titre>Le fléau</titre> <annee>2003</annee> <!-- ici c'est l'année d'édition !!! --> <prix>5.3</prix> </livre> </livres>
<livres xmlns="http://www.livres-pas-chers.com"> <livre xmlns:encyclo="http://toutsurleslivres.org"> <auteur>Stephen King</auteur> <titre>Le fléau</titre> <annee>2003</annee> <!-- ici c'est l'année d'édition --> <encyclo:annee>1978</encyclo:annee> <!-- ici c'est l'année de première parution --> <prix>5.3</prix> </livre> </livres>