RelaxNG/publiquiz.rnc
changeset 313 e4f154ea2837
parent 310 13939fb7824a
child 336 15beef04b08c
--- a/RelaxNG/publiquiz.rnc	mar. mai 13 12:59:42 2014 +0200
+++ b/RelaxNG/publiquiz.rnc	jeu. mai 15 07:20:59 2014 +0200
@@ -274,10 +274,11 @@
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-blanks.block =
-   (blanks.p | speech | blanks.list | blockquote | blanks.table | blanks.media)
-point.block =
-   (point.p | speech | point.list | blockquote | point.table | media)
+blanks.block = (
+   blanks.p | blanks.list | blanks.blockquote | blanks.speech | blanks.table
+ | blanks.media)
+point.block = (
+   point.p | point.list | point.blockquote | point.speech | point.table | media)
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -314,8 +315,47 @@
    point.inlines
  | point.block+
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blockquote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+blanks.blockquote = element blockquote {
+   blockquote.attributes, blanks.blockquote.content }
+point.blockquote = element blockquote {
+   blockquote.attributes, point.blockquote.content }
+
+blanks.blockquote.content =
+   block.head?,
+   (blanks.p | speech | blanks.list)+,
+   attribution?
+point.blockquote.content =
+   block.head?,
+   (point.p | speech | point.list)+,
+   attribution?
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# ~~~~~~ speech
+blanks.speech = element speech { blanks.speech.content }
+point.speech = element speech { point.speech.content }
+
+blanks.speech.content =
+   blanks.speaker?,
+   stage?,
+   (blanks.p | blanks.blockquote)+
+point.speech.content =
+   point.speaker?,
+   stage?,
+   (point.p | point.blockquote)+
+
+# ~~~~~~ speaker
+blanks.speaker = element speaker { blanks.speaker.content }
+point.speaker = element speaker { point.speaker.content }
+
+blanks.speaker.content = blanks.inlines
+point.speaker.content = point.inlines
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+# ~~~~~~ table
 blanks.table = element table { table.attributes, blanks.table.content }
 point.table = element table { table.attributes, point.table.content }
 
@@ -323,11 +363,11 @@
    block.head?,
    thead?,
    (blanks.tbody+ | blanks.tr+),
-   table.caption?
+   blanks.table.caption?
 point.table.content =
    block.head?,
    (point.tbody+ | point.tr+),
-   table.caption?
+   point.table.caption?
 
 # ~~~~~~ tbody
 blanks.tbody = element tbody { blanks.tbody.content }
@@ -355,21 +395,38 @@
 
 blanks.td.content =
    blanks.inlines
- | (p | media)+
+ | (blanks.p | blanks.media)+
 
 point.td.content =
    point.inlines
- | (p | media)+
+ | (point.p | media)+
+
+# ~~~~~~ table.caption
+blanks.table.caption = element caption { blanks.caption.content }
+point.table.caption = element caption { point.caption.content }
+
+blanks.caption.content =
+   blanks.inlines
+ | (blanks.p | speech | blanks.list | blockquote)+
+point.caption.content =
+   point.inlines
+ | (point.p | speech | point.list | blockquote)+
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ media ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-# ~~~~~~ blanks.media
-blanks.media = element media { media.attributes, blanksmedia.content }
+# ~~~~~~ media
+blanks.media = element media { media.attributes, blanks.media.content }
+point.media = element media { media.attributes, point.media.content }
 
-blanksmedia.content =
+blanks.media.content =
    block.head?,
    (blanks.image | audio | video)+,
-   media.caption?,
+   blanks.media.caption?,
+   link?
+point.media.content =
+   block.head?,
+   (image | audio | video)+,
+   point.media.caption?,
    link?
 
 # ~~~~~~ blanks.image
@@ -382,7 +439,7 @@
 pip.image.content =
    pip.dropzone+
 
-# ~~~~~~dropzone
+# ~~~~~~ dropzone
 blanks.dropzone = element dropzone {
    blanks.dropzone.attributes, blanks.dropzone.content }
 pip.dropzone = element dropzone {
@@ -402,6 +459,12 @@
 pip.dropzone.content =
    image?
 
+# ~~~~~~ media.caption
+blanks.media.caption = element caption {
+   caption.attributes, blanks.caption.content }
+point.media.caption = element caption {
+   caption.attributes, point.caption.content }
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~ choices.right, choices.wrong ~~~~~~~~~~~~~~~~~~~~~~~
 
 choices.right = element right { choices.right.content }
@@ -424,7 +487,7 @@
 
 blanks.wrong.content = text
 
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (match) item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ match.item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 match.item = element item { match.item.content }
 
@@ -432,7 +495,7 @@
    inlines
  | ((p | image | (audio, image?) | video), help?, answer?)
 
-# ~~~~~~~~~~~~~~~~~~~~~~~~ (sort) comparison, item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~ comparison, sort.item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 # ~~~~~~ comparison
 comparison = element comparison { comparison.content }
@@ -450,7 +513,7 @@
    inlines
  | ((p | image | (audio, image?) | video), help?, answer?)
 
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (category) item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ category.item ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 category.item = element item { category.item.content }