diff -r d8a9a8a8acc6 -r fd645a45932e RelaxNG/publiquiz.rnc --- a/RelaxNG/publiquiz.rnc mar. nov. 28 13:03:48 2017 +0100 +++ b/RelaxNG/publiquiz.rnc mar. févr. 27 05:29:56 2018 +0100 @@ -1,4 +1,3 @@ - include "publidoc.rnc" { start = publiquiz @@ -127,6 +126,8 @@ | categories | wordsearch | flashcard + | coloring + | memory | production # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ choices ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -191,7 +192,7 @@ correct-line = element correct-line { correct.attributes, correct.content } -correct.attributes = +correct.attributes = remove-space.attribute? remove-space.attribute = attribute remove-space { xsd:boolean } @@ -342,7 +343,7 @@ cell = element cell {cell.content} cell.content = xsd:token {pattern = "."} - + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ flashcard ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~ flashcard @@ -375,6 +376,60 @@ | blanks-select | sort +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ coloring ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +coloring = element coloring { coloring.attributes, coloring.content } + +coloring.attributes = + nomark.attribute? +nomark.attribute = attribute nomark { xsd:boolean } + +coloring.content = + palette + & canvas + & areas? + +# ~~~~~~ palette +palette = element palette { palette.content } + +palette.content = + color+ + +# ~~~~~~ canvas +canvas = element canvas { canvas.attributes } + +canvas.attributes = + media.id.attribute + +# ~~~~~~ areas +areas = element areas { areas.attributes } + +areas.attributes = + media.id.attribute + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ memory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# ~~~~~~ memory +memory = element memory { memory.attributes, memory.content } + +memory.attributes = + display.attribute? + & delay.attribute? +display.attribute = attribute display { xsd:positiveInteger } +delay.attribute = attribute delay { xsd:positiveInteger } + +memory.content = + memory.match, + memory.match+ + +# ~~~~~~ memory.match +memory.match = element match { memory-m.content } + +memory-m.content = + memory-m.item, + memory-m.item, + audio? + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ production ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ production = element production { production.content } @@ -497,7 +552,7 @@ blanks-c.item = element item { blanks-c.item.content } correct.item = element item { correct.item.content } pointing.item = element item { pointing.item.content } - + blanks.item.content = blanks.inlines | blanks.block+ blanks-m.item.content = blanks-m.inlines | blanks-m.block+ @@ -850,7 +905,7 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ words.item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ words.item = element item {words.item.content, words.item.attributes } - + words.item.content = inlines words.item.attributes = @@ -864,6 +919,22 @@ endx = attribute endx {xsd:token {pattern = "[a-zA-Z]+"}} endy = attribute endy {xsd:token {pattern = "\d+"}} +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ color ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +color = element color { color.attributes } + +color.attributes = + color.code + & color.coderef? +color.code = attribute code {xsd:token { pattern = "#(\d|\w){6}"}} +color.coderef = attribute coderef { list{xsd:token { pattern = "#(\d|\w){6}"}+}} + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ memory-m.item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +memory-m.item = element item { memory-m.item.content } + +memory-m.item.content = image + # ============================================================================= # INLINE LEVEL @@ -1053,16 +1124,16 @@ | image | audio | (s-m+, help?, answer?) - + # ~~~~~~ blank-c blank-c = element blank { blank-c.attributes, blank-c.content } - + blank-c.attributes = form.attribute? form.attribute = attribute form { 'radio' | 'check' } - + blank-c.content = (blank-c.right | blank-c.wrong)+, help?, answer? blank-c.right = element right { inlines } -blank-c.wrong = element wrong { inlines } +blank-c.wrong = element wrong { inlines } # ~~~~~~ s s = element s { s.content } @@ -1075,7 +1146,7 @@ | math | image | audio - + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ char ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ char = element char { char.attributes, char.content }