<link href="/assets/64d0ba83aa42c90354ff97799bcfc0c2.css" type="text/css" rel="stylesheet"> <script src="/assets/6fd6663d5303bb7eda3ef7493fc29db6.js"></script> <script> $(document).ready(function() { anchors.options = { visible: 'hover', placement: 'right', truncate: 64 }; anchors.add('#body h2, #body h3, #body h4, #body h5'); }); </script> <script> hljs.initHighlightingOnLoad(); </script>
<h1>M2 DEFI XML - DEVOIR 2018-2019</h1> <p><strong>À rendre avant le mercredi 7 novembre</strong></p> <h2>Présentation</h2> <p>L'équipe du <a href="http://infolingu.univ-mlv.fr/">LIGM</a> de l'université Paris-Est met à disposition (Licence : <a href="http://infolingu.univ-mlv.fr/DonneesLinguistiques/Lexiques-Grammaires/lgpllr.html">Lesser General Public License For Linguistic Resources</a>) des ressources linguistiques au format XML. Le téléchargement est disponible <a href="http://infolingu.univ-mlv.fr/DonneesLinguistiques/Dictionnaires/telechargement.html">ici</a> (mais est également fourni dans les fichiers à récupérer pour le devoir : voir ci-après). </p> <p>Dans ce devoir, nous allons étudier comment extraire de l'information de l'une de ces ressources, le <em>Dictionnaire DELA fléchi du français</em>.</p> <h2>Indications</h2> <ul> <li>Afin que vous ne soyez pas bloqué par une étape, je vous fournie les documents XML que vous devez obtenir.</li> <li>Pour les transformations XML vers XML, vous avez fortement intérêt à partir de la <a href="https://xml.jpjorda.fr/cours/xslt/identity">transformation « identité »</a>, vue en cours.</li> <li>L'outils <strong>xsltproc</strong> permet de travailler en XSLT <strong>1.0</strong> uniquement : vérifiez ce point si vous cherchez de la documentation sur internet.</li> </ul> <h2>Consignes</h2> <ul> <li>Vous rendez un travail individuel : deux copies fortement identiques seront considérées comme de la fraude . Cela n'empêche pas l'entraide, mais vous devez rendre votre travail, pas celui du copain ou de la copine.</li> <li>Vous noterez dans un fichier <code>devoir.txt</code> (ou un fichier type word ou libre/open-office si vous préférez) : <ul> <li>vos expressions XPath avec les numéros des questions ;</li> <li><em>des indications sur ce que vous n'avez pas réussi à faire</em>.</li> </ul></li> </ul> <h2>Préparation</h2> <h3>Répertoire de travail</h3> <p>Dans votre espace de travail, créez un répertoire <code>devoir_<votre_nom></code> (par exemple <code>devoir_jorda</code>). Tous les fichiers de votre devoir devront se trouver dans ce répertoire.</p> <h3>Les fichiers à récupérer</h3> <p>Dans la console, placez vous dans ce répertoire, et lancez la commande pour récupérer les fichiers nécessaires au devoir :</p> <pre><code>git clone https://github.com/master-defi-xml/devoir-2018-2019.git .</code></pre> <p>(le point à la fin de la commande évite qu'un répertoire <code>devoir-2018-2019</code> ne soit créé, mais ça ne fonctionne que si votre répertoire de travail est vide).</p> <p>(Vous pouvez également récupérer <a href="https://github.com/master-defi-xml/devoir-2018-2019/archive/master.zip">l'ensemble des fichiers</a> dans une archive zip. </p> <h3>Désarchivage du dictionnaire</h3> <p>Dans le répertoire de travail, désarchivez le dictionnaire :</p> <pre><code class="language-bash">unzip dela-fr-public-u8-xml.zip</code></pre> <h2>1. Préparation d'un extrait du dictionnaire</h2> <p>Le dictionnaire est volumineux (167Mo) : il n'est pas recommandé d'essayer de l'éditer. Cela implique également des temps de traitement non négligeable. Notre première étape consiste donc à créer un fichier contenant un extrait du dictionnaire pour pouvoir travailler plus confortablement.</p> <ul> <li>a. Donnez l'expression XPath permettant de compter le nombre d'élément fils de l'élément racine. L'expression doit être générale : elle doit pouvoir s'appliquer à n'importe quel type de document, indépendamment du nom des éléments.</li> <li>b. Donnez l'expression XPath permettant de sélectionner 200 éléments fils de l'élément racine à partir du 2000ième (les éléments 2001 à 2200).</li> <li>c. Mettez au point une feuille de style XSLT (que vous appellerez <code>extrait.xsl</code>) permettant de construire un extrait du dictionnaire comportant l'élément racine et 200 éléments fils de l'élément racine à partir du 2000ième (les éléments 2001 à 2200). Appliquez cette feuille de style au document <code>dela-fr-public-u8.dic.xml</code>. <em>Vous devez obtenir un document identique à</em> <code>dela-fr-public-u8-petit-extrait.dic.xml</code>.</li> </ul> <h2>2. Étude du format</h2> <p>a. Étudiez l'extrait <code>dela-fr-public-u8-petit-extrait.dic.xml</code> et proposer une représentation arborescente du format (appelez votre fichier <code>schema_format.txt</code>).</p> <p>Par exemple : </p> <pre><code>un_element_obligatoire [@un_attribut, @un_autre_attribut] --> un_autre_element_optionnel* --> text() --> un_element_vide[@un_attribut] .....</code></pre> <p>b. Donnez les expressions XPath absolues permettant d'adresser :</p> <ul> <li>le nombre d'éléments <code><entry></code> ;</li> <li>tous les éléments <code><lemma></code> ;</li> <li>les élements <code><lemma></code> décrivant des verbes (c.-à-d. dont l'attribut <em>name</em> de <code><pos></code> vaut "verb") ;</li> <li>les éléments contenant les formes fléchies (c.-à-d. les éléments <code><form></code> fils d'<code><inflected></code>) des verbes.</li> </ul> <h2>3. Extraction des verbes</h2> <p>Vous allez maintenant utiliser l'extrait <code>dela-fr-public-u8-petit-extrait.dic.xml</code> pour mettre au point vos expression XPath et vos feuilles de style XSLT. Vous allez chercher à extraire du document les entrées (<code><entry></code>) correspondant à des verbes (comme vous avez du le constater, le type du mot est déterminé par la valeur de l'attribut <em>name</em> de l'élément <code><pos></code>)</p> <ul> <li>a. L'élément racine du document est <code><dico></code>. Si ce nœud est le <em>contexte courant</em>, donnez l'expression XPath <em>relative</em> permettant d'adresser les entrées de type « verb ».</li> <li>b. Mettez au point une feuille de style XSLT (que vous appellerez <code>verbes.xsl</code>) permettant d'obtenir un document contenant uniquement les entrées des verbes. <em>Vous devez obtenir un document identique à</em> <code>dela-fr-public-u8-verbes.dic.xml</code>.</li> </ul> <h2> 4. Extraction et reformatage des formes des verbes</h2> <p>Toujours en partant de <code>dela-fr-public-u8-petit-extrait.dic.xml</code> :</p> <ul> <li>a. Mettez au point une feuille de style (que vous appellerez <code>formes_verbes.xsl</code>) permettant d'extraire une liste de formes des verbes (l'élément <code><form></code> dans <code><inflected></code> <strong>ET</strong> l'élément <code><lemma></code>). <em>Vous devez obtenir un document identique à</em> <code>liste_verbes.txt</code>.</li> <li>b. Mettez au point une feuille de style (que vous appellerez <code>formes_verbes_html.xsl</code>) permettant de générer une représentation HTML des différentes formes des verbes. <em>Vous devez obtenir un document identique à</em> <code>liste_verbes.html</code>.</li> <li>c. Mettez au point une feuille de style (que vous appellerez <code>formes_verbes_json.xsl</code>) permettant de générer une structure <a href="https://fr.wikipedia.org/wiki/JavaScript_Object_Notation">JSON</a> des différentes formes des verbes. <em>Vous devez obtenir un document identique à</em> <code>liste_verbes.json</code>... ou quelque chose s'en approchant le plus possible. Notez que les sauts de ligne et que les espaces entre les différents champs n'ont pas d'importance dans le format JSON.</li> </ul> <h2>Rendu du devoir</h2> <p>Vous devez envoyer votre devoir sous la forme d'une archive <em>mon-nom</em>.zip ou <em>mon-nom</em>.tar.gz. Cette archive devra contenir les fichiers suivant :</p> <pre><code> devoir.txt (voir les consignes) extrait.xsl schema_format.txt verbes.xsl formes_verbes.xsl formes_verbes_html.xsl formes_verbes_json.xsl</code></pre> <p>L'archive est à envoyer à defi@jpjorda.fr.</p>