#?SuikaWikiConfig/2.0

ModuleSet:
  @Name: Web Forms
  @Version: 2.0 Call For Comments - 27 June 2004
  @ID: webforms20
  @Description:
    Web Forms 2.0, the next generation HTML form model.
  @BaseURI:
    
  @Description:
    Web Forms 2.0 proposal <http://www.hixie.ch/specs/html/forms/web-forms>.
  
  @Namespace:
    @@Name:
      http://www.w3.org/1999/xhtml
    @@DefaultPrefix: html
    @@UsePrefix: 0
  
  @Copyright: Wakaba <w@suika.fam.cx>
  @RCSDate:
    $Date: 2004/07/05 13:56:23 $

Datatype:
  @Type:
    @@Name: 
      :Character
    @@XMLType: CDATA
    @@Description: An XML Char
  
  @Type:
    @@Name: 
      :Charsets
    @@XMLType: CDATA
    @@Description: A white space separated list of IANA charset names
  
  @Type:
    @@Name:
      :ContentType
    @@XMLType: CDATA
    @@Description: An Internet Media Type
  
  @Type:
    @@Name:
      :ContentTypes
    @@XMLType: CDATA
  
  @Type:
    @@Name:
      :FrameTarget
    @@XMLType: NMTOKEN
    @@Description: Target frame or window name
  
  @Type:
    @@Name: 
      :Number
    @@XMLType: NMTOKEN
    @@Description: A non-negative integer
  
  @Type:
    @@Name:
      :Script
    @@XMLType: CDATA
    @@Description: Script code
  
  @Type:
    @@Name:
      :Text
    @@XMLType: CDATA
    @@Description: A human readable text
  
  @Type:
    @@Name:
      :URI
    @@XMLType: CDATA
    @@Description: A URI reference

Attribute:
  @AttributeSet:
    @@Name: accept
    @@Attribute:
      @@@Name: "accept"
      @@@Type:
       :ContentTypes
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: accesskey
    @@Attribute:
      @@@Name: "accesskey"
      @@@Type:
       :Character
      @@@Default: #IMPLIED
  
  
  @AttributeSet:
    @@Name: action
    @@Attribute:
      @@@Name: "action"
      @@@Type:
       :URI
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "enctype"
      @@@Type:
       :ContentType
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "method"
      @@@Type: "(get|post|put|delete)"
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "replace"
      @@@Type: "(document|values)"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: autocomplete
    @@Attribute:
      @@@Name: "autocomplete"
      @@@Type: "(on|off)"
      @@@Default: "on"
  
  @AttributeSet:
    @@Name: autofocus
    @@Attribute:
      @@@Name: "autofocus"
      @@@Type: "(autofocus)"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: disabled
    @@Attribute:
      @@@Name: "disabled"
      @@@Type: "(disabled)"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: form
    @@Attribute:
      @@@Name: "form"
      @@@Type: "IDREF"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: help
    @@Attribute:
      @@@Name: "help"
      @@@Type:
       :URI
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: img
    @@Attribute:
      @@@Name: "alt"
      @@@Type:
       :Text
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "src"
      @@@Type:
       :URI
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: name
    @@Attribute:
      @@@Name: "name"
      @@@Type: "CDATA"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: size
    @@Attribute:
      @@@Name: "size"
      @@@Type:
       :Number
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: tabindex
    @@Attribute:
      @@@Name: "tabindex"
      @@@Type:
       :Number
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: template
    @@Attribute:
      @@@Name: "template"
      @@@Type: "IDREF"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: text
    @@ref: autocomplete
    @@Attribute:
      @@@Name: "inputmode"
      @@@Type: "CDATA"
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "maxlength"
      @@@Type:
       :Number
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "readonly"
      @@@Type: "(readonly)"
      @@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "required"
        @@@@Type: "(required)"
        @@@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: value
    @@Attribute:
      @@@Name: "value"
      @@@Type: "CDATA"
      @@@Default: #IMPLIED
  
  @AttributeSet:
    @@Name: focus
    @@ref: accesskey
    @@ref: autofocus
    @@ref: tabindex
  
  @Attribute:
    @@Name: repeat.global
    @@Attribute:
      @@@Name: repeat
      @@@Type: "CDATA"
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: repeat-start
      @@@Type:
        :Number
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: repeat-min
      @@@Type:
        :Number
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: repeat-max
      @@@Type:
        :Number
      @@@Default: #IMPLIED
    @@Description: For non-XHTML 1 namespace element types
  @Attribute:
    @@Name: repeat
    @@Attribute:
      @@@Name: "repeat"
      @@@Type: "CDATA"
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "repeat-start"
      @@@Type:
        :Number
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "repeat-min"
      @@@Type:
        :Number
      @@@Default: #IMPLIED
    @@Attribute:
      @@@Name: "repeat-max"
      @@@Type:
        :Number
      @@@Default: #IMPLIED
    @@Description: For XHTML 1 namespace element types
  
  @AttributeSet:
    @@Name: control.extra
  @AttributeSet:
    @@Name: control.events
    @@Description:
      Placeholder for additional events attributes
  @AttributeSet:
    @@Name: control
    @@ref: control.extra
  
  @AttributeSet:
    @@Name:
      :Common.extra
  @AttributeSet:
    @@Name: 
      :Common
    @@ref:
      :Common.extra
    @@ref: repeat
  
  @AttributeSet:
    @@Name: common
    @@ref:
      :Common

Module:
  @Name: Forms Extensions
  @ID: formext
  
  @Element:
    @@Name: form
    @@Content: 
      ($:Heading.class | $:List.class | $:Block.mix)*
    @@Attribute:
      @@@ref: accept
      @@@Attribute:
        @@@@Name: "accept-charset"
        @@@@Type:
          :Charsets
        @@@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "action"
        @@@@Type:
          :URI
        @@@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "enctype"
        @@@@Type:
          :ContentType
        @@@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "method"
        @@@@Type: "(get|post|put|delete)"
        @@@@Default: "get"
      @@@Attribute:
        @@@@Name: "replace"
        @@@@Type: "(document|values)"
        @@@@Default: "document"
  
  @Element:
    @@Name: input
    @@Content: "EMPTY"
    @@Attribute:
      @@@ref: accept
      @@@ref: action
      @@@Attribute:
        @@@@Name: "checked"
        @@@@Type: "(checked)"
        @@@@Default: #IMPLIED
      @@@ref: disabled
      @@@ref: form
      @@@ref: focus
      @@@ref: help
      @@@ref: img
      @@@Attribute:
        @@@@Name: "min"
        @@@@Type: "CDATA"
        @@@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "max"
        @@@@Type: "CDATA"
        @@@@Default: #IMPLIED
      @@@ref: name
      @@@Attribute:
        @@@@Name: "pattern"
        @@@@Type: "CDATA"
        @@@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "step"
        @@@@Type: "CDATA"
        @@@@Default: #IMPLIED
      @@@ref: size
      @@@ref: template
      @@@ref: text
      @@@Attribute:
        @@@@Name: "type"
        @@@@Type: "(text|password|checkbox|radio|button|submit|reset|add|remove|file|hidden|image|datetime|local-datetime|date|month|week|time|number|range|email|uri)"
        @@@@Default: "text"
      @@@ref: value
      @@@ref: control
  
  @Element:
    @@Name: select
    @@Content: (optgroup|option)*
    @@Attribute:
      @@@ref: autocomplete
      @@@ref: autofocus
      @@@ref: disabled
      @@@ref: form
      @@@ref: help
      @@@Attribute:
        @@@@Name: "multiple"
        @@@@Type: "(multiple)"
        @@@@Default: #IMPLIED
      @@@ref: name
      @@@ref: size
      @@@ref: tabindex
      @@@ref: control
  
  @Element:
    @@Name: optgroup
    @@Content: (option)*
    @@Attribute:
      @@@ref: disabled
      @@@Attribute:
        @@@@Name: "label"
        @@@@Type:
          :Text
        @@@@Default: #REQUIRED
  
  @Element:
    @@Name: option
    @@Content: (#PCDATA)*
    @@Attribute:
      @@@ref: disabled
      @@@Attribute:
        @@@@Name: "label"
        @@@@Type:
          :Text
        @@@@Default: #IMPLIED
      @@@Attribute:
        @@@@Name: "selected"
        @@@@Type: "(selected)"
        @@@@Default: #IMPLIED
      @@@ref: value
  
  @Element:
    @@Name: textarea
    @@Content: (#PCDATA)*
    @@Attribute:
      @@@Attribute:
        @@@@Name: "cols"
        @@@@Type:
          :Number
        @@@@Default: #IMPLIED
      @@@ref: disabled
      @@@ref: form
      @@@ref: focus
      @@@ref: help
      @@@ref: name
      @@@Attribute:
        @@@@Name: "rows"
        @@@@Type:
          :Number
        @@@@Default: #IMPLIED
      @@@ref: text
      @@@Attribute:
        @@@@Name: "wrap"
        @@@@Type: "(soft|hard)"
        @@@@Default: "soft"
      @@@ref: control
  
  @Element:
    @@Name: output
    @@Content: (#PCDATA)*
    @@Attribute:
      @@@Attribute:
        @@@@Name: "for"
        @@@@Type: "IDREFS"
        @@@@Default: #IMPLIED
      @@@ref: form
      @@@ref: name
      @@@ref: control
  
  @Element:
    @@Name: button
    @@Content:
      (#PCDATA|$:Heading.class|$:List.class|$:Block.mix|$:Inline.mix)*
    @@Description: Content cannot include Form and Formctrl.
    @@Attribute:
      @@@ref: accesskey
      @@@ref: action
      @@@ref: disabled
      @@@ref: form
      @@@ref: help
      @@@ref: name
      @@@ref: tabindex
      @@@ref: template
      @@@Attribute:
        @@@@Name: "type"
        @@@@Type: "(button|submit|reset|add|remove)"
        @@@@Default: "submit"
      @@@ref: value
      @@@ref: control
  
  @Element:
    @@Name: fieldset
    @@Content:
      (#PCDATA|legend|$:Flow.mix)*
    @@Attribute:
      @@@ref: disabled
      @@@ref: form
      @@@ref: help
      @@@ref: control
  
  @Element:
    @@Name: legend
    @@Content:
      (#PCDATA|$:Inline.mix)*
    @@Attribute:
      @@@ref: accesskey
  
  @Element:
    @@Name: label
    @@Content:
      (#PCDATA|$:Inline.mix)*
    @@Description: Cannot nest label itself.
    @@Attribute:
      @@@ref: accesskey
      @@@Attribute:
        @@@@Name: "for"
        @@@@Type: "IDREF"
        @@@@Default: #IMPLIED

Module:
  @Name: Extended Form Events
  @ID: formevent
  
  @AttributeSet:
    @@Name: oninput
    @@Attribute:
      @@@Name: "oninput"
      @@@Type:
        :Script
      @@@Default: #IMPLIED
      @@@Description:
            The oninput attribute is added to all the elements that
            have an onchange attribute
  @AttributeSet:
    @@Name: onformchange
    @@Attribute:
      @@@Name: "onformchange"
      @@@Type:
        :Script
      @@@Default: #IMPLIED
  @AttributeSet:
    @@Name: onforminput
    @@Attribute:
      @@@Name: "onforminput"
      @@@Type:
        :Script
      @@@Default: #IMPLIED
  @AttributeSet:
    @@Name: oninvalid
    @@Attribute:
      @@@Name: "oninvalid"
      @@@Type:
        :Script
      @@@Default: #IMPLIED
      @@@Description:
            The oninvalid attribute is added to all the form control
            elements other than output and fieldset
  
  @Attribute:
    @@ElementType: input
    @@ref: oninput
    @@ref: oninvalid
  @Attribute:
    @@ElementType: select
    @@ref: oninput
    @@ref: oninvalid
  @Attribute:
    @@ElementType: textarea
    @@ref: oninput
    @@ref: oninvalid

  @AttributeSet:
    @@Name: control.events
    @@ref: onformchange
    @@ref: onforminput
    @@Description:
            The onformchange and onforminput attributes are added
            to all form control elements
  
  @Attribute:
    @@ElementType: button
    @@ref: oninvalid

  @Attribute:
    @@ElementType: output
    @@Attribute:
      @@@Name: "onchange"
      @@@Type:
        :Script
      @@@Default: #IMPLIED

Module:
  @Name: Frame Target
  @ID: target
  
  @AttributeSet:
    @@Attribute:
      @@@Name: "target"
      @@@Type:
        :FrameTarget
      @@@Default: #IMPLIED
