<?xml version='1.0' encoding='iso-8859-1'?>


<!-- ********************* common attributes *************************** -->

<!ENTITY % boolean "(true|false)">


<!ENTITY % HtmlAttrs
 "title         CDATA           #IMPLIED
  size          CDATA           #IMPLIED
  onclick       CDATA           #IMPLIED
  tabindex      CDATA           #IMPLIED
  accesskey     CDATA           #IMPLIED
  onclick       CDATA           #IMPLIED
  ondblclick    CDATA           #IMPLIED
  onchange      CDATA           #IMPLIED
  onfocus       CDATA           #IMPLIED
  onblur        CDATA           #IMPLIED">
  

<!--
Common attributes for all xoplon controls
  id    
        identifies the element within a dom tree and http request. 
        If absent, an id is generated by the framework.
  label 
        for display only
  disabled
        user input will be ignored
  handler
        class name of a com.tonbeller.wcf.component.NodeHandler that
        will be instantiated and associated with this element
-->


<!ENTITY % XoplonCtrlAttrs
  "%HtmlAttrs;
   id           ID             #IMPLIED  
   label        CDATA          #IMPLIED
   disabled     %boolean;       'false'
   handler      CDATA          #IMPLIED">


<!--
attributes for controls that have a data type. These attributes
are used to identify and configure a FormatHandler

  format
        format string for the FormatHandler
  type
        data type that identifies the FormatHandler. 
        If absent, "string" is assumed
  modelReference
        name of a bean property. May contain jakarta bean-utils expressions.
        If absent, values are not read/written from the bean 
-->


<!ENTITY % TypedCtrlAttrs
  "%XoplonCtrlAttrs;
   format       CDATA           #IMPLIED
   type         CDATA           #IMPLIED
   modelReference       CDATA   #IMPLIED">


<!--
attributes for TextField, TextArea and Password

  value
        contains the user input  
-->

<!ENTITY % EditCtrlAttrs
  "%TypedCtrlAttrs;
  value         CDATA           #IMPLIED
  cols          CDATA           #IMPLIED">


<!--
selectable items (checkBox, listItem, radioButton)

  selected
        whether or not this item is selected
  value
        if the parent(!) has a modelReference attribute (and an optional 
        type attribute), then this value will be stored in the bean 

  modelReference
        if present, must point to a boolean bean property that will be set 
        to the selected state of this item
-->


<!ENTITY % ItemAttrs
  "%XoplonCtrlAttrs;
  selected      %boolean;       #IMPLIED
  value         CDATA           #IMPLIED
  modelReference CDATA          #IMPLIED">
  

<!-- ********************* elements definitions *************************** -->

<!ELEMENT label EMPTY>
<!ATTLIST label %XoplonCtrlAttrs;>


<!-- 
used to render a group of buttons in a twocolumn form
-->
<!ELEMENT buttons (button)*>

<!--
a single submit button of a form
  forward
        forward to this uri (after optional validation). 
        The uri is relative to the servlet context
  action
        default behaviour: "validate" = validate user input and write back
        to the bean. "revert" = initialize form with values from bean
-->
<!ELEMENT button EMPTY>
<!ATTLIST button %XoplonCtrlAttrs;
  forward CDATA #IMPLIED
  action (validate|revert) #IMPLIED>
  

<!ELEMENT xform ANY>
<!ATTLIST xform 
  style (twocolumn|manual) #IMPLIED
  action CDATA #IMPLIED>

<!ELEMENT textField EMPTY>
<!ATTLIST textField %EditCtrlAttrs;>

<!ELEMENT password EMPTY>
<!ATTLIST password %EditCtrlAttrs;>

<!ELEMENT textArea EMPTY>
<!ATTLIST textArea %EditCtrlAttrs;
  rows  CDATA #IMPLIED>
  
<!ELEMENT listBox1 (listItem)*>
<!ATTLIST listBox1 %TypedCtrlAttrs;
  rows CDATA #IMPLIED>
  
<!ELEMENT listBoxN (listItem)*>
<!ATTLIST listBoxN %TypedCtrlAttrs;
  rows CDATA #IMPLIED>

<!ELEMENT listItem EMPTY>
<!ATTLIST listItem %ItemAttrs;>

<!ELEMENT radioButtons (radioButton)*>
<!ELEMENT radioButton EMPTY>
<!ATTLIST radioButton %ItemAttrs;
  group-id CDATA #REQUIRED>

<!ELEMENT checkBoxes (checkBox)*>
<!ELEMENT checkBox EMPTY>
<!ATTLIST checkBox %ItemAttrs;>