RelaxNG/publiquiz.rnc
changeset 310 13939fb7824a
parent 293 02671b229bdc
child 313 e4f154ea2837
equal deleted inserted replaced
309:b748affd5db2 310:13939fb7824a
    29 
    29 
    30 # =============================================================================
    30 # =============================================================================
    31 #                                  TOP LEVEL
    31 #                                  TOP LEVEL
    32 # =============================================================================
    32 # =============================================================================
    33 
    33 
    34 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quiz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    34 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ top.quiz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    35 
    35 
    36 top.quiz = element quiz { top.quiz.attributes, top.quiz.content }
    36 top.quiz = element quiz { top.quiz.attributes, top.quiz.content }
    37 
    37 
    38 top.quiz.attributes =
    38 top.quiz.attributes =
    39    quiz.id.attribute
    39    quiz.id.attribute
    47    instructions,
    47    instructions,
    48    (engine | composite),
    48    (engine | composite),
    49    help?,
    49    help?,
    50    answer?
    50    answer?
    51 
    51 
    52 # =============================================================================
    52 
    53 #                               COMPONENT LEVEL
    53 # =============================================================================
       
    54 #                                COMPONENT LEVEL
    54 # =============================================================================
    55 # =============================================================================
    55 
    56 
    56 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quiz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    57 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quiz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    57 
    58 
    58 quiz = element quiz { quiz.attributes, quiz.content }
    59 quiz = element quiz { quiz.attributes, quiz.content }
    59 
    60 
    60 quiz.attributes =
    61 quiz.attributes =
    61    (quiz.id.attribute | quiz.xmlid.attribute)?
    62    (quiz.id.attribute | xmlid.attribute)?
    62  & quiz.type.attribute?
    63  & quiz.type.attribute?
    63  & lang.attribute?
    64  & lang.attribute?
    64 quiz.xmlid.attribute = attribute xml:id { xsd:ID }
       
    65 
    65 
    66 quiz.content =
    66 quiz.content =
    67    component.head?,
    67    component.head?,
    68    instructions,
    68    instructions,
    69    (engine | composite),
    69    (engine | composite),
   187    sort.item,
   187    sort.item,
   188    sort.item+
   188    sort.item+
   189 
   189 
   190 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ categories ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   190 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ categories ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   191 
   191 
       
   192 # ~~~~~~ category.head
       
   193 category.head = element head { category.head.content }
       
   194 
       
   195 category.head.content =
       
   196    title,
       
   197    shorttitle?,
       
   198    subtitle*
       
   199 
   192 # ~~~~~~ categories
   200 # ~~~~~~ categories
   193 categories = element categories { categories.attributes, categories.content }
   201 categories = element categories { categories.attributes, categories.content }
   194 
   202 
   195 categories.attributes =
   203 categories.attributes =
   196    multiple.attribute?
   204    multiple.attribute?
   197    
   205 
   198 categories.content =
   206 categories.content =
   199    category.item*,
   207    category.item*,
   200    category,
   208    category,
   201    category+
   209    category+
   202 
   210 
   204 category = element category { category.content }
   212 category = element category { category.content }
   205 
   213 
   206 category.content =
   214 category.content =
   207    category.head,
   215    category.head,
   208    category.item*
   216    category.item*
   209    
       
   210 # ~~~~~~ category.head
       
   211 category.head = element head { category.head.content }
       
   212 
       
   213 category.head.content =
       
   214    title,
       
   215    shorttitle?,
       
   216    subtitle*
       
   217 
   217 
   218 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pip ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   218 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pip ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   219 
   219 
   220 pip = element pip { pip.attributes, pip.content }
   220 pip = element pip { pip.attributes, pip.content }
   221 
   221 
   234 # ~~~~~~ composite
   234 # ~~~~~~ composite
   235 composite = element composite { composite.attributes, composite.content }
   235 composite = element composite { composite.attributes, composite.content }
   236 
   236 
   237 composite.attributes =
   237 composite.attributes =
   238    multipage.attribute?
   238    multipage.attribute?
   239 multipage.attribute = attribute multipage { xsd:boolean } 
   239 multipage.attribute = attribute multipage { xsd:boolean }
   240 
   240 
   241 composite.content =
   241 composite.content =
   242    subquiz,
   242    subquiz,
   243    subquiz+
   243    subquiz+
   244 
   244 
   388 pip.dropzone = element dropzone {
   388 pip.dropzone = element dropzone {
   389    pip.dropzone.attributes, pip.dropzone.content }
   389    pip.dropzone.attributes, pip.dropzone.content }
   390 
   390 
   391 blanks.dropzone.attributes =
   391 blanks.dropzone.attributes =
   392    x.attribute
   392    x.attribute
   393  & y.attribute   
   393  & y.attribute
   394 pip.dropzone.attributes =
   394 pip.dropzone.attributes =
   395    x.attribute
   395    x.attribute
   396  & y.attribute
   396  & y.attribute
   397  & w.attribute
   397  & w.attribute
   398  & h.attribute
   398  & h.attribute