Le format Moodle XML expliqué, avec un exemple à télécharger
Moodle XML est le format de fichier que Moodle utilise pour exporter les questions d'une banque de questions et pour les importer dans un autre cours ou un autre site. Il prend en charge tous les types de questions standard, avec les images et les formules dans le fichier : c'est pour cela que les outils qui transforment des sujets en questions Moodle l'écrivent. Vous aurez rarement à l'écrire à la main, mais savoir ce qu'il contient aide quand un import échoue ou qu'une question ne se comporte pas comme prévu.
Cette page parcourt un vrai fichier, partie par partie. Les deux fichiers de l'exemple sont téléchargeables : un court sujet Word, et le fichier Moodle XML que le convertisseur de sujets gratuit d'ExamQR en a tiré.
Télécharger l'exemple
- Le sujet Word (moodle-xml-example-fr.docx) : neuf questions en quatre parties, avec une image et une équation.
- Le fichier Moodle XML (moodle-xml-example-fr.xml) : prêt à importer dans un cours de test.
La structure d'un fichier
Un fichier Moodle XML est un élément <quiz> qui contient une liste d'éléments <question>. L'attribut type indique la nature de chacun. L'exemple contient ceux-ci :
| Type | Ce que c'est | Dans l'exemple |
|---|---|---|
category | Pas une question : la catégorie de la banque de questions où sont enregistrées les questions qui suivent | Une par partie du sujet |
multichoice | Choix multiple, avec une ou plusieurs bonnes réponses | Questions 1 à 5 |
truefalse | Une seule affirmation, vraie ou fausse | Question 6, une par affirmation |
numerical | Une réponse qui est un nombre, avec une tolérance facultative | Question 7 |
shortanswer | Un mot ou une expression saisis, comparés aux réponses acceptées | Question 8 |
essay | Une réponse rédigée, corrigée par un enseignant | Question 9 |
Moodle connaît aussi matching, description (un texte sans réponse, comme un texte de lecture), gapselect, ddwtos et d'autres. Les questions de types ajoutés par des plugins ne s'importent que sur les sites où ces plugins sont installés.
Les catégories
<question type="category">
<category>
<text>$course$/top/moodle-xml-example/Partie 1. Choix multiple</text>
</category>
</question>
Toutes les questions qui suivent cette entrée vont dans la catégorie Partie 1. Choix multiple, à l'intérieur d'une catégorie qui porte le nom du fichier, en haut de la banque de questions du cours ($course$). Sur la page d'import de Moodle, l'option Obtenir la catégorie à partir du fichier (Get category from file) décide si ces entrées sont utilisées. Décochez-la pour placer toutes les questions dans la catégorie de votre choix.
Ce que chaque question contient
<question type="multichoice">
<name><text><![CDATA[Q1: Quel périphérique conserve les données quand l'ordinateur...]]></text></name>
<questiontext format="html">
<text><![CDATA[<p>Quel périphérique conserve les données quand l'ordinateur est éteint ?</p>]]></text>
</questiontext>
<generalfeedback format="html"><text></text></generalfeedback>
<defaultgrade>1.0000000</defaultgrade>
<penalty>0.0000000</penalty>
<hidden>0</hidden>
…
- name est ce que vous voyez dans la liste de la banque de questions, pas ce que voient les étudiants. Le convertisseur le fait commencer par le numéro de la question, pour que la banque garde votre ordre.
- questiontext est la question en HTML.
CDATApermet de placer le HTML dans le XML sans échapper chaque<. - generalfeedback est montré aux étudiants après leur réponse, si les options de relecture du test le permettent. Une correction détaillée écrite dans le fichier Word après « Solution : » va ici.
- defaultgrade est le nombre de points de la question ; penalty est ce que coûte chaque essai faux dans les tests qui autorisent plusieurs essais.
Choix multiple
<single>true</single>
<shuffleanswers>true</shuffleanswers>
<answernumbering>ABCD</answernumbering>
<answer fraction="0"><text><![CDATA[RAM]]></text></answer>
<answer fraction="100"><text><![CDATA[Disque dur]]></text></answer>
<answer fraction="0"><text><![CDATA[Cache du processeur]]></text></answer>
<answer fraction="0"><text><![CDATA[Carte graphique]]></text></answer>
- fraction est la part des points que rapporte une réponse, en pourcentage : 100 pour la bonne, 0 pour les autres.
- single vaut
truepour une seule bonne réponse (boutons radio) etfalsequand plusieurs sont justes (cases à cocher). Dans la question 5 de l'exemple, Python et Java ont chacunfraction="50"et les deux mauvaises optionsfraction="-100": une case cochée à tort annule les points. Moodle ne descend jamais sous zéro pour une question. - shuffleanswers permet à Moodle de réordonner les options pour chaque étudiant, si le test l'autorise aussi. La question 2 se termine par « Toutes les réponses ci-dessus », qui doit rester en dernier, et Moodle ne sait pas bloquer une seule option : le convertisseur écrit donc
falsepour cette question et vous le signale.
Vrai ou faux
La question truefalse de Moodle contient une seule affirmation. Une question Word avec quatre affirmations a) à d) devient donc quatre questions Moodle, chacune valant un quart des points (defaultgrade 0.25), avec la consigne commune répétée au-dessus de chaque affirmation :
<question type="truefalse">
<questiontext format="html"><text><![CDATA[<p>Indiquez si chaque affirmation sur les réseaux est vraie ou fausse.</p>
<p><b>b)</b> Internet est un réseau unique qui appartient à une seule entreprise.</p>]]></text></questiontext>
<defaultgrade>0.2500000</defaultgrade>
<answer fraction="0"><text>true</text></answer>
<answer fraction="100"><text>false</text></answer>
Réponse courte et nombres
<question type="numerical">
…
<answer fraction="100"><text>11</text><tolerance>0</tolerance></answer>
<question type="shortanswer">
…
<usecase>0</usecase>
<answer fraction="100"><text>Ctrl+C</text></answer>
- Une réponse qui est un nombre devient
numerical: « 11 », « 11.0 » et « 11 » précédé d'une espace sont tous acceptés. tolerance autorise une marge, par exemple 0,5 pour des valeurs mesurées. - Les autres réponses deviennent
shortanswer. usecase à 0 ignore les majuscules. Plusieurs réponses acceptées correspondent à plusieurs éléments<answer>, chacun avec fraction 100.
Question ouverte
<question type="essay">
…
<responseformat>editor</responseformat>
<responserequired>1</responserequired>
<responsefieldlines>15</responsefieldlines>
<attachments>0</attachments>
<graderinfo format="html"><text></text></graderinfo>
Les questions ouvertes sont corrigées par un enseignant : il n'y a donc pas de bonne réponse. responseformat editor donne aux étudiants un éditeur de texte de 15 lignes. graderinfo n'est visible que des correcteurs ; quand votre sujet comporte une réponse modèle pour la question, elle est placée ici.
Les images
<questiontext format="html">
<text><![CDATA[<p>… Quelle est la longueur du plus grand côté ?</p>
<p><img src="@@PLUGINFILE@@/1794550115_a0694cce26d60c92_001.png" alt="" /></p>]]></text>
<file name="1794550115_a0694cce26d60c92_001.png" path="/" encoding="base64">iVBORw0KGgo…</file>
</questiontext>
L'image voyage dans le fichier. L'élément <file> contient l'image encodée en texte base64, et le HTML y renvoie avec @@PLUGINFILE@@, que Moodle remplace par l'adresse du fichier enregistré après l'import. Un lien vers une image sur un autre site web fonctionnerait aussi, mais il casse quand ce site change.
Les formules
<p>Quelles sont les solutions de l'équation \(x^2-5x+6=0\) ?</p>
Une équation Word est écrite en TeX entre \( et \). Moodle l'affiche sous forme de formule grâce à son filtre MathJax, activé par défaut. Si les étudiants voient le code à la place, demandez à l'administrateur du site d'activer le filtre MathJax pour le cours.
Importer l'exemple
- Ouvrez un cours où vous pouvez faire des essais et allez dans sa banque de questions (dans le menu Plus du cours : Banque de questions, ou Banques de questions dans les versions récentes).
- Choisissez Importer, sélectionnez Format Moodle XML, déposez le fichier .xml dans la zone de dépôt et cliquez sur Importer.
- Moodle liste les questions qu'il a lues. Cliquez sur Continuer ; elles se trouvent dans la catégorie moodle-xml-example et ses quatre parties.
- Prévisualisez la question 3 (l'image) et la question 4 (la formule) pour vérifier que les deux s'affichent.
Modifier un fichier à la main
- Utilisez un éditeur de texte brut qui enregistre en UTF-8, pas un traitement de texte.
- Gardez le HTML à l'intérieur de
CDATA. En dehors, écrivez<pour<et&pour&. - Une seule balise non fermée, et Moodle refuse tout le fichier. Ouvrez-le d'abord dans un navigateur : un fichier cassé indique la ligne de l'erreur.
- Importez dans un cours de test avant le vrai cours, et prévisualisez quelques questions.
Créer le vôtre à partir de votre sujet Word
Rédigez le sujet dans Word comme d'habitude, en suivant les règles de l'aide-mémoire du format Word, puis ouvrez le convertisseur de sujets gratuit, envoyez le fichier et cliquez sur Moodle XML (.xml). Aucun compte n'est nécessaire. Avant le téléchargement, le convertisseur liste tout ce que Moodle traite différemment, par exemple une question à réponses multiples que Moodle note avec un crédit partiel. La marche à suivre complète se trouve dans comment importer un sujet Word dans Moodle.
Questions fréquentes
Moodle XML, est-ce la même chose que GIFT ou Aiken ? Non. GIFT et Aiken sont des formats texte brut que l'on tape à la main ; ils ne peuvent pas contenir d'images dans le fichier, et Aiken ne connaît que le choix multiple à réponse unique. Moodle XML est plus long, mais il transporte tout.
D'autres systèmes peuvent-ils lire Moodle XML ? Certains le peuvent, mais c'est le format propre à Moodle. Pour les systèmes qui importent des paquets QTI 2.1, le convertisseur en produit aussi un. Canvas Classic Quizzes attend du QTI 1.2 et ne lit donc pas ce paquet.
Pourquoi Moodle compte-t-il plus de questions que mon sujet n'en a ? Parce que certaines questions deviennent plusieurs questions Moodle : chaque affirmation vrai/faux est une question à part, et un texte de lecture devient une description placée avant ses questions. Le convertisseur vous indique combien de questions Moodle il a écrites.
L'exemple fonctionne-t-il dans d'autres langues ? Oui. L'exemple existe dans toutes les langues de ce site ; changez la langue en haut de la page pour le télécharger.