TD1 : Découverte des langages à balises et du standard XML

Modalités de rendu

Les questions de ce TD en gras devront être rendues sous forme papier pour le 13 décembre 2012 au matin, une double feuille maximum.

La question XML devra avoir été traitée pour le TD suivant, et le fichier XML corrigé devra être disponible sur votre compte.

Arbres et arborescence

On vous propose les fragments de documents suivants rédigés dans différents langages (SGML, HTML, XML : Docbook, EDI, SVG), glanés sur le web.

XML "TEI"

Construisez l'arbre des éléments.

<body>
  <div1 type="recueil">
  <div2 type="poème">
  <titre>L'invitation au voyage</titre>
  <strophe>
  <vers>
  <segment>Mon enfant, ma soeur, </segment>
  <segment>Songe à la douceur</segment>
  <segment>D'aller là-bas vivre ensemble!</segment></vers>
  <vers> 
  <segment>Aimer à loisir,</segment>
  <segment>Aimer et mourir</segment>
  <segment>Au pays qui te ressemble!</segment></vers>
  <vers>
  <segment>Les soleils mouillés</segment>
  <segment>De ces ciels brouillés</segment>
  <segment>Pour mon esprit ont les charmes</segment>
  <segment>Si mystérieux</segment>
  <segment>De tes traîtres yeux</segment>
  <segment>Brillant à travers leurs larmes.</segment></vers>
  </strophe>
  <refrain>
  <segment>Là, tout n'est qu'ordre et beauté,</segment>
  <segment>Luxe, calme et volupté.</segment>
  </refrain>
  <!-- ... -->
  </div2>
  <!-- ...-->
  </div1>
</body> 
<!-- ... -->

SGML Docbook

Quelle est la profondeur de l'arbre ? Combien l'élément thead a-t-il de frères ? Combien y a-t-il de feuilles en tout ?

<!DOCTYPE article PUBLIC " -//OASIS//DTD DocBook V3.1//EN">
<!-- La ligne ci-dessus décrit le document -->

<!-- On définit la classe et la langue de notre texte -->
<article class="whitepaper" id="un-example" lang="fr">

<!-- On entre d'abord les informations concernant le header, elles
permettront entre autres, de retrouver les auteurs, les dates de
modification, etc. -->
<artheader> <title>Premier exemple</title>

<author>

<firstname>Xavier</firstname>
<surname>Nicollet</surname>

<affiliation>
<address><email>nicollet@efrei.fr</email>
</address>
</affiliation>
</author>

</artheader>

<!-- On entre dans la première section -->
<sect1><title>Première partie</title>

<para> Dans ce paragraphe, j'insère une figure:

<!-- On verra plus tard d'autres moyens d'insérer des figures -->
<figure> <title>Le logo d'EFREI LINUX:</title>
<graphic fileref="fig/fig1"> </graphic>
</figure>

</para>

<sect2> <title> Première sous-section </title>

<para> Les tableaux peuvent être très complexes en docbook, en voici une version simple. </para>

<para> 
Voici un tableau simple : 
Une description fictive des caractéristiques du compilateur
<informaltable frame="all">
 <tgroup cols="4"> <!-- on décrit le nombre de colonnes -->

 <thead> <!-- on passe au "header" du tableau -->
 <row>
 <entry>Architecture</entry>
 <entry>Companie</entry>
 <entry>Code natif supporté</entry>
 <entry>Optimisation max.</entry>
 </row>
 </thead>
 <tbody> <!-- et on remplit les lignes -->
 <row>
 <entry>i386</entry>
 <entry>Intel</entry>
 <entry>oui</entry>
 <entry>-O4</entry>
 </row>
 <row>
 <entry>alpha</entry>
 <entry>DEC</entry>
 <entry>oui</entry>
 <entry>-O3</entry>
 </row>
 <row>
 <entry>Z80</entry>
 <entry>Zilog</entry>
 <entry>non</entry>
 <entry>-O1</entry>
 </row>
 </tbody>
 </tgroup>
</informaltable>

</para>

</sect2>

<sect2> <title>Une autre sous_section</title>

<para>Voici une liste:</para>

<itemizedlist mark=opencircle>

<listitem> <para>Premier point</para>
</listitem>
<listitem> <para>Deuxième point</para>
</listitem>
<listitem> <para>Troisième point</para>
</listitem>

</itemizedlist>

</sect2>

</sect1>

</article>

XML "RÉCIT"

Construisez l'arbre des éléments.

<RECIT
xmlns:xlink="http://www.w3.org/1999/xlink">

<Titre>Le garçon
webmestre</Titre>

<Contexte>Il était une fois un
garçon ni joli ni moche, ni bête ni intelligent,
ni drôle ni ennuyeux.

</Contexte> <Probleme>Il était
assez heureux dans sa vie de webmaster pour l'office de la promotion
des technologies anciennes. Toutefois, il lui manquait une amie.

</Probleme>

<But>Il fallait que cela change !</But>

<FIL>

<EPISODE>

<SousBut>Un jour il s'est dit qu'il doit agir
coûte que coûte.</SousBut>

<TENTATIVE> <Action>Il s'est rendu au pub
du coin. Arrivé au bar il voit un ancien camarade de classe
accompagné de deux filles. Ils commencent à
discuter et quand il raconta qu'il était WebMaster, une des
filles lui demande ce qu'il faisait. Alors il expliqua
fièrement qu'il faisait des pages HTML avec Frontier. Et
avec un élan de courage il demanda à la fille
s'il pouvait lui offrir un verre.</Action>
</TENTATIVE>

<Resultat>La fille lui répondit: "Non merci".
Un peu désespéré le garçon
rentra chez lui.</Resultat>

</EPISODE>

......

</FIL>

<Morale> La morale de l'histoire est que HTML ne suffit
plus. </Morale>

<INFOS> <Date>30 octobre 2003 -
</Date><Auteur>DKS -
</Auteur> </INFOS> 

</RECIT>

XML "SVG"

Combien y-a-t'il d'éléments ? Quelles informations sont décrites par du contenu textuel ? Quelles informations sont décrites par des attributs ?

<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns"
 xmlns:svg="http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">
 <name>Circuit - Ground</name>
 <description>A ground point</description>
 <icon>ground.xpm</icon>
 <connections>
 <point x="0" y="0"/>
 </connections>
 <svg:svg width="3.0" height="3.0">
 <svg:line x1="0" y1="0" x2="0" y2="1" />
 <svg:line x1="-2" y1="1" x2="2" y2="1" />
 <svg:line x1="-1.33" y1="1.5" x2="1.33" y2="1.5" />
 <svg:line x1="-0.66" y1="2" x2="0.66" y2="2" />
 </svg:svg>
 </shape>

Structures documentaires

On considère ce document PDF.

Vous allez l'étudier suivant deux angles (attention, quand des éléments se répètent trop, ne pas tous les mettre : produisez une vue explicative) :

Faites maintenant le lien entre les deux structures : comment représenter un élément d'une structure dans l'autre (utilisez des flèches pour expliquer) ? 

A quels indices dans le document pdf fourni s'aperçoit-on que son créateur n'a pas utilisé une architecture technique décomposant structure logique et structure physique ?

XML

Document XML bien formé

Enregistrez sur votre compte le document  XML Exo1.xml. Ouvrez-le dans un éditeur de texte.

Ce document n'est pas bien formé, vous allez donc le corriger jusqu'à ce qu'il le soit. Pour vérifier sa bonne formation, ouvrez-le régulièrement avec un navigateur tel que Firefox ou Internet Explorer, qui disposent d'un parser pour afficher l'arborescence des éléments, et s'arrête dès qu'il rencontre une erreur de bonne formation.

Recherche d’information

Répondez aux questions suivantes à l'aide de votre moteur de recherche préféré