Blog

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

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 :

TypeCe que c'estDans l'exemple
categoryPas une question : la catégorie de la banque de questions où sont enregistrées les questions qui suiventUne par partie du sujet
multichoiceChoix multiple, avec une ou plusieurs bonnes réponsesQuestions 1 à 5
truefalseUne seule affirmation, vraie ou fausseQuestion 6, une par affirmation
numericalUne réponse qui est un nombre, avec une tolérance facultativeQuestion 7
shortanswerUn mot ou une expression saisis, comparés aux réponses acceptéesQuestion 8
essayUne réponse rédigée, corrigée par un enseignantQuestion 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. CDATA permet 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 true pour une seule bonne réponse (boutons radio) et false quand plusieurs sont justes (cases à cocher). Dans la question 5 de l'exemple, Python et Java ont chacun fraction="50" et les deux mauvaises options fraction="-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 false pour 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

  1. 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).
  2. Choisissez Importer, sélectionnez Format Moodle XML, déposez le fichier .xml dans la zone de dépôt et cliquez sur Importer.
  3. 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.
  4. 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 &lt; pour < et &amp; 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.

Plus d'articles

4 novembre 2026

Comment créer plusieurs versions d'un QCM dans Word

Word ne mélange pas un sujet à votre place. Combien de versions faire, comment préparer le fichier, quoi bloquer et comment obtenir gratuitement chaque version avec son code et son corrigé.

17 octobre 2026

Importer un sujet Word dans Moodle sans tout ressaisir

Moodle ne lit pas un QCM au format .docx. Comparez les méthodes (Aiken, GIFT, plugin Word, Moodle XML), préparez le fichier Word, convertissez-le gratuitement en Moodle XML et importez-le avec images et formules intactes.

17 octobre 2026

Planifier une journée d'évaluation en ligne pour 300 candidats

Comment répartir 300 candidats en sessions, vérifier combien votre plateforme en accepte en même temps, préparer la connexion, les places et l'équipe, et gérer le jour J un ordinateur qui lâche ou une connexion coupée. Avec un calendrier et une liste de contrôle.