Copyright © 2023 Yves MARCOUX; dernière modification de cette page: 2023-01-05.
Yves MARCOUX – EBSI – Université de Montréal
Préalables :
Sauf s’il est demandé d’identifier des erreurs, tous les documents présentés sont bien formés.
Avant de regarder les exemples donnés en réponse, créez vos propres documents dans oXygen, tel qu’expliqué dans cette section de Comment lire ce Tour d’horizon ?, et vérifiez-en le bien-formé (Ctrl+Maj+W).
Quelques-unes des réponses possibles :
<a/>
<accès>P</accès>
<suggestion type="farfelue">Changer le nom XML en
ZML !
<!-- C’est n’importe quoi, non ?
-->
</suggestion>
Quelques-unes des réponses possibles :
<a />
<accès><clé valeur="3K47" /></accès>
<suggestion type="discrète"><!--Aucune
idée…--></suggestion>
Quelques-unes des réponses possibles :
<a a="a"/>
<repas breuvage="café"
dessert="tarte">Délicieux !</repas>
<conseils>
<conseil important="oui">Don't do
drugs</conseil>
</conseils>
<slogan portée='public'><fort>Un pour
tous</fort></slogan>
Quelques-unes des réponses possibles :
<monDoc><a a = "a" b = 'b' /></monDoc>
<essai sel="poivre" />
Une des réponses possibles :
<monDoc>
Contrairement à ce qu'on pourrait penser,
ce
document contient <emph>un seul sous-élément</emph>
<!--
<emph>et non deux</emph> -->!
</monDoc>
Rappelons qu’en aucun cas un commentaire ne peut survenir à l’intérieur d’une balise; ainsi, ceci est mal formé :
<roman <!-- ébauche --> >
À
rédiger
</roman>
joker.Réponse minimaliste :
<joker><joker/><joker/></joker>
Une autre des réponses possibles :
<joker>
Comme si ce n’était pas assez d’avoir un joker,
ou
même deux, comme dans un <joker>jeu de
cartes</joker>,
nous, on en a
<joker>trois</joker>!
</joker>
<!-- Petit document --> <doc>
Rien à signaler.
</doc><!-- C’était très court. -->
<!-- Petit document -->
<doc>
Rien à signaler.
</doc><!-- C’était très
court. -->
Le prologue est tout ce qui vient avant l’élément-document, incluant les blancs.
<!-- Petit document --> <doc>
Rien à signaler.
</doc><!-- C’était très court. -->
<!-- Petit document --> <doc>
Rien à signaler.
</doc><!-- C’était
très court. -->
L’élément-document est tout le document, sauf le prologue et l’épilogue.
<doc> Rien à signaler. </doc>
<doc> Rien à signaler. </doc>
Tout ce qu’il y a entre les balises d’un élément est son contenu, y compris les espaces et autres blancs.
<doc> Rien à signaler. </doc>
<doc> Rien à signaler. </doc>
Le contenu textuel est identique au contenu, car l’élément-document n’a aucun élément descendant.
<doc>Problème <!--Rien--> à signaler. </doc>
<doc>Problème <!--Rien--> à signaler. </doc>
</doc>
Les commentaires sont exclus du contenu textuel d’un élément.
<para>
<excl>Pas facile</excl> de rédiger un document
qui contient &lt;.
</para>
Il ne faut pas oublier les noms d’élément que l’on retrouve dans les balises de fin.
<para>
<excl>Pas facile</excl> de rédiger
un document
qui contient &lt;.
</para>
<para>
<excl>Pas facile</excl> de rédiger un document
qui contient &amp;.
</para>
<para>
<excl>Pas facile</excl> de rédiger un document
qui contient
&amp;.
</para>
<MEMO>
<CONFIDENTIEL/> <PERSONNEL />
<AUTEUR>Julien</AUTEUR><DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On s’appelle et on déjeune ?</SUJET>
<CORPS></CORPS>
</MEMO>
<MEMO>
<CONFIDENTIEL/>
<PERSONNEL
/>
<AUTEUR>Julien</AUTEUR><DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On
s’appelle et on déjeune
?</SUJET>
<CORPS></CORPS>
</MEMO>
<MESSAGE>
<PERSONNEL/><CONFIDENTIEL/>
<AUTEUR>Julien</AUTEUR>
<DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On s’appelle et on déjeune ?</SUJET>
<CORPS></CORPS>
</MESSAGE>
Les balises auto-fermantes ne sont pas des balises de début (ni des balises de fin, d’ailleurs).
<MESSAGE>
<PERSONNEL/><CONFIDENTIEL/>
<AUTEUR>Julien</AUTEUR>
<DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On s’appelle et on déjeune
?</SUJET>
<CORPS></CORPS>
</MESSAGE>
<MESSAGE>
<PERSONNEL/> <CONFIDENTIEL/>
<AUTEUR>Linda</AUTEUR>
<DESTINATAIRE>Francesca</DESTINATAIRE>
<SUJET>As-tu hâte aux <EM>vacances</EM> ?</SUJET>
</MESSAGE>
<MESSAGE>
<PERSONNEL/>
<CONFIDENTIEL/>
<AUTEUR>Linda</AUTEUR>
<DESTINATAIRE>Francesca</DESTINATAIRE>
<SUJET>As-tu
hâte aux <EM>vacances</EM>
?</SUJET>
</MESSAGE>
<MESSAGE>
<CONFIDENTIEL/> <PERSONNEL />
<AUTEUR>Julien</AUTEUR><DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On s’appelle et on déjeune ?</SUJET>
<CORPS></CORPS>
</MESSAGE>
Un élément vide s’exprime par une balise auto-fermante ou par une balise de début et une balise de fin collées.
<MESSAGE>
<CONFIDENTIEL/>
<PERSONNEL
/>
<AUTEUR>Julien</AUTEUR><DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On
s’appelle et on déjeune ?</SUJET>
<CORPS></CORPS>
</MESSAGE>
<para>Pas facile de rédiger un document
qui contient &amp;.</para>
Il n’y en a qu’un.
<para>Pas facile de rédiger un document
qui contient &amp;.</para>
<para>Pas facile de <!--rédiger-->créer un<!-- document
qui contient--> fichier contenant &amp;!</para>
Il y en a deux, dont un qui s’étend sur deux lignes.
<para>Pas facile de <!--rédiger-->créer un<!--
document
qui contient--> fichier contenant
&amp;!</para>
<para>J’aimerais bien inscrire un < <!-- et un & -->
dans mon document, mais je ne peux pas le faire directement.</para>
Il n’y en a qu’un. Le & contenu dans le commentaire
est ignoré et ne compte donc pas.
<para>J’aimerais bien inscrire un < <!-- et un & -->
dans mon document,
mais je ne peux pas le faire directement.</para>
<anecdote type = 'humour' cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un gars…</anecdote>
Il y en a trois en tout, dont deux sur le même élément.
<anecdote type = 'humour'
cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un
gars…</anecdote>
<anecdote type = 'humour' cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un gars…</anecdote>
Une balise commence toujours par < et se poursuit jusqu’au
prochain >, même si elle contient des spécifications
d’attribut.
<anecdote type = 'humour' cote ="PG"
>
<intro
type="classique">Une fois,</intro> c’est un
gars…</anecdote>
<anecdote type = 'humour' cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un gars…</anecdote>
<anecdote type = 'humour' cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un
gars…</anecdote>
<anecdote type = 'humour' cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un gars…</anecdote>
<anecdote type = 'humour' cote ="PG" >
<intro type="classique">Une fois,</intro> c’est un
gars…</anecdote>
intro dans le
document suivant :
<anec><intro type="1F" >Une fois,</intro> c’t’un gars…</anec>
<anec><intro type="1F" >Une
fois,</intro> c’t’un gars…</anec>
<anec><intro type="1F" >Une fois,</intro> c’t’un gars…</anec>
<anec><intro type="1F" >Une
fois,</intro> c’t’un
gars…</anec>
anec dans le document suivant :
<anec><intro type="1F" >Une fois,</intro> c’t’un gars…</anec>
<anec><intro type="1F" >Une
fois,</intro> c’t’un gars…</anec>
Pour chaque fichier texte montré, dites s’il s’agit ou non d’un document XML bien formé et sinon, décrivez le problème.
<employés> <employé no="1"> <nom>Roy, Lucie</nom> <adresse>2, rue Bray</adresse> </employé> <employé no="2"> <nom>Bray, Luc</nom> </employé> </employés>
Bien formé.
<saga durée='2 siècles' auteur = "Thor"> À venir… </saga>
Bien formé.
<saga durée='2 siècles' auteur = "Thor"> À venir… </saga ouf="enfin">
Mal formé : Une balise de fin ne peut pas contenir de spécification d’attribut.
<saga longue-durée auteur = "Thor"> À venir… </saga>
Mal formé : longue-durée sera interprété comme un nom
d’attribut et alors, il devrait être suivi du signe = puis
d’une valeur d’attribut entre guillemets (simples ou doubles).
<scpd action="3" action="4" />
Mal formé : le même attribut (action) est spécifié plus d’une
fois sur le même élément.
<étapes>
<1>Commencer la recette</1>
<2>Terminer la recette</2>
</étapes>
Mal formé : un nom d’élément ne peut pas commencer par un chiffre, il doit commencer par une lettre ou le caractère de soulignement « _ ».
<slogan>En recherche & développement, nous sommes #1 !</slogan>
Mal formé : l’esperluette (&) ne peut être inscrite
directement comme texte dans un élément (ni dans une valeur d’attribut,
d’ailleurs).
<slogan type="<hourra>">
Numéro un cette année encore !
</slogan>
Mal formé : le caractère (<) ne peut être inscrit
directement dans une valeur d’attribut (ni comme texte dans un élément,
d’ailleurs).
<slogan type="{hourra}">
Est-on 100% @ votre service pour vos [$$$] ? Oui !
</slogan>
Bien formé : les seuls caractères qu’on ne peut pas inscrire directement
comme texte dans un élément (ou dans une valeur d’attribut) sont le
plus-petit-que < et l’esperluette &. Tous
les autres caractères, « spéciaux » ou non, peuvent être inscrits
directement.
<étape>Casser les œufs.</étape>
<étape>Brasser les œufs.</étape>
<étape>Cuire les œufs.</étape>
Mal formé : il n’y a pas d’élément de plus haut niveau.
<para>
<emph>Jamais !</emph> s'écria-t-il.
</para>
Bien formé. Le document contient directement à la fois un sous-élément et un bout de texte, ce qui est tout à fait correct.
<citation>
Quand l’inspiration vient à manquer, il faut se tourner vers les classiques.
<citation />
Mal formé. La balise finale n’est pas une balise de fin, mais une balise auto-fermante.
Pour d’autres exemples de documents mal formés, avec explications, voir le dossier
007-malformesdans les exemples du cours.
Faux Un document XML est un fichier texte, dans lequel les notions de couleur ou de police de caractères n’existent pas. Plusieurs outils qui comprennent le format XML appliquent une coloration syntaxique lorsqu’ils affichent un document XML, ce qui permet d’identifier facilement la plupart des constructions syntaxiques de XML, mais cela ne change rien au fait que dans le document XML lui-même, il n’y a aucune notion de couleur du texte.
Faux XML est une recommandation du W3C (World Wide Web Consortium).
Vrai Cependant, elle est peu utilisée.
2 et 3
Faux Le bien-formé est un ensemble de règles syntaxiques.
1
Vrai
3 La dynamisation de la consultation du document (pliage et dépliage des éléments) s’appuie sur la mise en évidence de la structure hiérarchique et serait impossible sans elle.
Faux
Des caractères blancs, ou simplement blancs.
.xml.Vrai Par exemple, les images en format SVG ont
habituellement un nom avec l’extension .svg, même s’il s’agit
de fichiers XML (parce que le format SVG est basé sur XML).
Faux Ces deux normes sont basées sur XML et ont donc été développées après XML.
Vrai
Vrai Par exemple, les guillemets entourant les valeurs d’attribut peuvent être omis dans certains cas en HTML, mais jamais en XML.
<ok¤>¤⤶ Ça¤va</ok¤>⤶
19 caractères.
<para>
<excl>Pas facile</excl> de rédiger un document
qui contient &lt;.
</para>
L’élément para est le seul élément à avoir un contenu mixte
(rappel : un contenu mixte est composé d’au moins un caractère de contenu
textuel direct non blanc et d’au moins un sous-élément).
<MESSAGE>
<CONFIDENTIEL/> <PERSONNEL />
<AUTEUR>Julien</AUTEUR><DESTINATAIRE>Viateur</DESTINATAIRE>
<SUJET>On s’appelle et on déjeune ?</SUJET>
<CORPS></CORPS>
</MESSAGE>
Le nombre d’éléments dans un document XML est toujours égal au nombre de balises de début + le nombre de balises auto-fermantes. La réponse est donc 7.
MESSAGE
Un sous-élément est un élément imbriqué (i.e. contenu) dans un autre élément plus long. Dans tout document XML, seul l’élément-document n’est pas aussi un sous-élément. La réponse est donc 6.
Les éléments enfants de MESSAGE sont CONFIDENTIEL, PERSONNEL, AUTEUR, DESTINATAIRE, SUJET et CORPS. L’aîné et le cadet sont respectivement CONFIDENTIEL et CORPS.
<MESSAGE>
<!-- <PERSONNEL/><CONFIDENTIEL/> -->
<AUTEUR>Linda</AUTEUR>
<DESTINATAIRE>Francesca</DESTINATAIRE>
<SUJET>As-tu hâte aux <EM>vacances</EM> ?</SUJET>
</MESSAGE>
Quatre : AUTEUR, DESTINATAIRE, SUJET et EM. Le commentaire lui-même n’est pas un élément, et son contenu, même s’il ressemble à une suite de deux éléments, est ignoré et ne peut donc en aucun cas comporter des éléments.