# Simplified Forms Module

form =
  element form {
    form.attlist,
    # Don't use Block.model, because this gets redefined by the
    # legacy module.
    Block.class+
  }
form.attlist =
  Common.attrib,
  attribute action { URI.datatype },
  attribute method { "get" | "post" }?,
  attribute enctype { ContentType.datatype }?
label = element label { label.attlist, Inline.model }
label.attlist =
  Common.attrib,
  attribute for { IDREF.datatype }?,
  attribute accesskey { Character.datatype }?
input = element input { input.attlist }
input.attlist =
  Common.attrib,
  attribute type { InputType.class }?,
  attribute name { text }?,
  attribute value { text }?,
  attribute checked { "checked" }?,
  attribute size { text }?,
  attribute maxlength { Number.datatype }?,
  attribute src { URI.datatype }?,
  attribute accesskey { Character.datatype }?
InputType.class =
  "text"
  | "password"
  | "checkbox"
  | "radio"
  | "submit"
  | "reset"
  | "hidden"
select = element select { select.attlist, option+ }
select.attlist =
  Common.attrib,
  attribute name { text }?,
  attribute size { Number.datatype }?,
  attribute multiple { "multiple" }?
option =
  element option {
    Common.attrib,
    attribute selected { "selected" }?,
    attribute value { text }?,
    text
  }
textarea = element textarea { textarea.attlist }
textarea.attlist =
  Common.attrib,
  attribute name { text }?,
  attribute rows { Number.datatype },
  attribute cols { Number.datatype },
  attribute accesskey { Character.datatype }?,
  text
Form.class = form
Formctrl.class = input | label | select | textarea
Block.class |= Form.class
Inline.class |= Formctrl.class
