XML et arbre Représentation d`un document XML sous

Transcription

XML et arbre Représentation d`un document XML sous
XML et arbre
Représentation d’un document XML sous forme d’arbre. Commençons par deux exemples...
suivis des explications.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Commentaire -->
<A>Le texte de A
<B>Le texte de B</B>
<D attr1="1" attr2="azerty">
<C/>
</D>
<![CDATA[2x<y]]>
</A>
Attention, ce n’est qu’une première représentation... l’arbre réel n’est donné qu’à la fin de ce
document.
Figure 1: arbre
XML et arbre
<?xml version="1.0" encoding="ISO-8859-1"?>
<COURS CODE="19599">
<SUJET>Structures de données</SUJET>
<ENSEIGNANTS>
<NOM RESPONSABLE="0">Carrez</NOM>
<NOM RESPONSABLE="1">Akoka</NOM>
</ENSEIGNANTS>
</COURS>
Figure 2: autre exemple d’arbre
Remarques :
• L’arbre commence par un nœud racine de type document ; c’est la racine du
document, notée / dans XPath.
• L’arbre contient les éléments (et leurs attributs), les commentaires, les instructions de
traitement, les données textuelles...
• Le prologue (<?xml version....>) n’est pas représenté.
• La racine du document peut avoir plusieurs fils qui sont
– l’éventuel déclaration de type de document DOCTYPE..., mais elle ne semble pourtant
pas figurer forcément dans les nœuds accessibles par XPath
– les instructions,
– les commentaires
– et un élément.
dans l’ordre dans lequel ils figurent dans le document.
Donc, la racine du document possède un seul fils qui est de type element ; c’est
l’élément racine ou l’élément document.
• Les entités et les notations ne sont pas des fils de la racine du document ; ils ont un
statut particulier. Ils sont non ordonnés.
Suite des remarques :
• Les fils d’un élément peuvent être des éléments, des instructions de traitement, des
appels d’entité sans remplacement, des données textuelles (littéral ou CDATA) et des
commentaires. Si l’élément est vide, il n’a pas de fils.
• Les attributs ne sont pas considérés comme des fils de l’élément ; ils ont un statut
particulier. Ils ne sont pas ordonnés ;
• A partir de l’élément document, seuls les éléments ont des fils. Les instructions, les
commentaires, les données textuelles,... sont forcément des feuilles.
• Pour les données textuelles, la recommandation du W3C définit un item textuel par
caractère en laissant aux applications XML la possibilité d’effectuer des regroupements
si nécessaire ou si désiré... Attention, cela provoque des fils, contenant des données
textuelles, qui ne sont pas toujours intuitifs.
XML et arbre réel
La recommandation du W3C précise que chaque caractère doit être pris en considération.
La gestion des espaces peut alors provoquer des surprises...
Si le contenu d’un élément commence par un passage à la ligne, l’élément aura un fils de
type données textuelles ; de même, si deux éléments sont séparés par un retour chariot, il
y aura entre les deux branches d’éléments, une branche de données textuelles... Les
exemples donnés ci-dessus ne font pas apparaı̂tre ces fils ; ils sont donc incomplets !
Les retour-chariots n’ont pas d’influence sur les fils directs de la racine du document car
celle-ci ne peut pas contenir de données textuelles.
En réalité, l’arbre représenté dans le premier exemple (figure 1), correspond au document
XML suivant, dans lequel les éléments se suivent, sans espace, sans retour-chariot.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--Commentaire-->
<A>Le texte de A<B>Le texte de B</B><D attr1="1" attr2="azerty"><C/></D>
<![CDATA[2x<y]] ></A>
qui n’est pas très lisible...
XML et arbre réel
Mettons en évidence les espaces et les retour-chariots, en représentant le retour-chariot par y
et l’espace par . Le document XML du premier exemple serait :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Commentaire -->y
<A>Le texte de Ay
<B>Le texte de B</B>y
<D attr1="1" attr2="azerty">y
<C/>y
</D>y
<![CDATA[2x<y]]>y
</A>
Vous remarquerez les espaces autour du mot commentaire et les espaces dus à l’indentation.
L’arbre du document sera le suivant :
Document
/
Text
Comment
Elément
commentaire
A
Elément
Le texte de Ay
B
Text
y
Elément
Text
D
Attribut
Attribut
attr1
attr2
y
Text
Le texte de B
Text
y
1
azerty
CDataSection
Text
2x < y
y
Elément
C
Text
y
Figure 3: l’arbre réel
Cette courte explication de l’arbre XML a été rédigée à partir des informations détaillées de
la recommandation du W3C du 24 octobre 2001 qui se trouve à la page
http://www.a525g.com/programmation/xml-infoset.htm

Documents pareils