Dictée
authoriinov
mar., 16 oct. 2018 22:37:01 +0200
changeset 463 4a7e62074e60
parent 462 61f23b379b5d
child 464 968d3380597e
Dictée
Data/Quiz/Audios/houston.ogg
Data/Quiz/dictation.xml
RelaxNG/publiquiz.rnc
Binary file Data/Quiz/Audios/houston.ogg has changed
--- /dev/null	jeu. janv. 01 00:00:00 1970 +0000
+++ b/Data/Quiz/dictation.xml	mar. oct. 16 22:37:01 2018 +0200
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='utf-8'?>
+<publiquiz version="1.0">
+  <quiz id="dictation" xml:lang="fr">
+    <head>
+      <title>Dictée</title>
+    </head>
+
+    <instructions>
+      <p>Écoute attentivement le texte et écris-le.</p>
+    </instructions>
+
+    <dictation>
+      <audio id="houston"/>
+      <p>
+        <hint>
+          <w>Julie</w>
+          <mistake is="julie">Un nom propre prend toujours une
+          majuscule.</mistake>
+          <mistake is="July">La graphie française était attendue.</mistake>
+        </hint>
+        ne
+        <hint>
+          <w>prend</w>
+          <mistake is="prends"><emphasis>prends</emphasis> est la première ou
+          deuxième personne du singulier. Ici, il s'agit de la troisième
+          personne.</mistake>
+          <mistake is="prand">Ici le son <emphasis>en</emphasis> s'écrit avec
+          un <highlight>e</highlight>.</mistake>
+          <mistake is="">Je prends, tu prends, il/elle prend.</mistake>
+        </hint>
+        pas l'avion demain.
+      </p>
+    </dictation>
+  </quiz>
+</publiquiz>
--- a/RelaxNG/publiquiz.rnc	mer. sept. 05 17:54:38 2018 +0200
+++ b/RelaxNG/publiquiz.rnc	mar. oct. 16 22:37:01 2018 +0200
@@ -128,6 +128,7 @@
  | flashcard
  | coloring
  | memory
+ | dictation
  | production
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ choices ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -431,6 +432,14 @@
     memory-m.item,
     audio?
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dictation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+dictation = element dictation { dictation.content }
+
+dictation.content =
+    audio,
+    dictation.block+
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ production ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 production = element production { production.content }
@@ -498,6 +507,7 @@
 pointing.block = (
    pointing.p | pointing.list | pointing.blockquote | pointing.speech
  | pointing.table | media)
+dictation.block = dictation.p
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -506,17 +516,20 @@
 blanks-c.p = element p { blanks-c.p.content }
 correct.p = element p { correct.p.content }
 pointing.p = element p { pointing.p.content }
+dictation.p = element p { dictation.p.content }
 
 blanks.p.content =
-   blanks.inlines
+    blanks.inlines
 blanks-m.p.content =
-   blanks-m.inlines
+    blanks-m.inlines
 blanks-c.p.content =
-   blanks-c.inlines
+    blanks-c.inlines
 correct.p.content =
-   correct.inlines
+    correct.inlines
 pointing.p.content =
-   pointing.inlines
+    pointing.inlines
+dictation.p.content =
+    dictation.inlines
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -1109,6 +1122,11 @@
  & point*
 }
 
+dictation.inlines = mixed {
+   warning*
+ & dictation.hint*
+}
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~ blank, blank-m, blank-c ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 # ~~~~~~ blank
@@ -1174,3 +1192,24 @@
    "right" | "cat1" | "cat2" | "cat3" | "cat4" | "cat5" }
 
 point.content = inlines
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dictation.hint ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# ~~~~~~ dictation.hint
+dictation.hint = element hint { dictation.hint.content }
+
+dictation.hint.content =
+    dictation.hint.w,
+    mistake+
+
+# ~~~~~~ dictation.hint.w
+dictation.hint.w = element w { text }
+
+# ~~~~~~ mistake
+mistake = element mistake { mistake.attributes, mistake.content }
+
+mistake.attributes =
+   mistake.is.attribute
+mistake.is.attribute = attribute is { text }
+
+mistake.content = inlines