This page describes the elements in the ClosedQuestion xml.

attributes:
*type=(a|b|c) -> mandatory attribute, possible values: a or b or c
(id|identifier)=String -> "id" and "identifier" are synonymous and of type String

children:
(?) -> 0 or 1
(*) -> 0 or more
(+) -> 1 or more
(0|+) -> for some question type 0, for others 1 or more.

<question
  *type=(option|check|fillblanks|hotspot|dragdrop|balance|selectorder|pattern|sequence)
  duplicates=(0|1)
  alignment=(normal|horizontal)
  >
    text         (?)
    prompt       (0|?)
    unit         (0|1)
    matheval     (*)
    textlabel    (*)
    hint         (*)
    correct      (0|1|?)
    option       (0|+)
    inlineoption (0|*)
    matchimg     (0|1)
    default      (0|?)
    startstate   (0|?)
    mapping      (0|*)
    question     (0|+)
    database     (?)
</question>


<text>
    XHTML
    inlinechoice  (0|*)
    feedbackblock (*)
    mathresult    (*)
</text>


<prompt>
    XHTML
    mathresult    (*)
</prompt>


<unit>
    XHTML
</unit>


<inlinechoice
  *(id|identifier)=String
  freeform=(0|1)
  group=String
  class=String
  style=String
/>


<feedbackblock
  *(id|identifier)=String
/>


<mathresult
  *(e|expression)=String
/>


<matheval
  store=(0|1)
  *(e|expression)=String
/>


<textlabel
  *(id|identifier)=String
  >
  triggernumber (*)
</textlabel>


<triggernumber
  min=Float
  max=Float
  >
  XHTML
</triggernumber>


<hint
  mintries=Integer
  maxtries=Integer
  feedbackblock=String
  >
    XHTML
    mathresult
</hint>


<correct>
    XHTML
    mathresult
</correct>


<option
  (id|identifier)=String
  >
    choice      (1)
    description (?)
    feedback    (*)
    feedbackunselected (*)
</option>


<choice>
    XHTML
    mathresult (*)
</choice>


<description>
    XHTML
    mathresult (*)
</description>


<feedback(unselected)
  mintries=Integer
  maxtries=Integer
  feedbackblock=String
  >
    XHTML
    mathresult (*)
</feedbac(unselected)k>


<inlineoption
  *(id|identifier)=String
  group=String
  >
    XHTML
    mathresult (*)
</inlineoption>


<matchimg
  *src=URL
  height=Integer
  width=Integer
  maxchoices=Integer
  >
    hotspot   (+)
    draggable (*)
</matchimg>


<hotspot
  *shape=(rect|circle|poly)
  *(id|identifier)=String
  *coords=CSV of Integers
  >
    XHTML
</hotspot>


<draggable
  *(id|identifier)=String
  class=String
  >
    XHTML
</draggable>


<default|startstate
  *value=String
/>


<mapping
  *correct=(0|1)
  *stop=(0|1)
  >
    and      (*)
    or       (*)
    not      (*)
    match    (*)
    range    (*)
    feedback (*)
</mapping>


<and>
    and   (*)
    or    (*)
    not   (*)
    match (*)
    range (*)
</and>


<or>
    and   (*)
    or    (*)
    not   (*)
    match (*)
    range (*)
<or>


<not>
    (and|or|not|match|range) (1)
<not>


<match
  matchall=(0|1)
  inlinechoice=String
  inlineoption=String
  pattern=String
  hotspot=String
  draggable=String
/>


<range
  matchall=(0|1)
  inlinechoice=String
  value=Number|Math
  minval=Number|Math
  maxval=Number|Math
/>


<database
  server=String
  username=String
  password=String
  database=String
  >
    query (+)
</database>


<query
  string=String
  >
    param (+)
</query>


<param
  type=(remote|uid|uname)
  name=String
/>