<?xml encoding="ISO-8859-1"?>
<!-- $Id: ds-style.dtd,v 1.2 1999/09/12 20:09:52 gerd Exp $ -->

<!-- entities describing content models -->

<!ENTITY % vertical.only    "vspace">
<!ENTITY % horizontal.only  "hspace">
<!ENTITY % mixed            "vbox|hbox|label|entry|textbox|button">


<!-- entities describing attribute type -->

<!ENTITY % att.valign       "(top|bottom|center)">
<!ENTITY % att.halign       "(left|right|center)">


<!ENTITY % default.atts     "bgcolor CDATA   #IMPLIED
                             fgcolor CDATA   #IMPLIED
                             font    CDATA   #IMPLIED">

<!-- "bgcolor", "fgcolor", and "font" are attribute applicable to every
     element. They set the background color, foreground color, resp. the
     font of the element and all sub elements that do not specifiy another
     value.
     Colors: all X windows names are allowed, e.g. "black", "white",
     "lavenderblush", or "#A0B1C2".
     Font: again X windows font names
  -->


<!ELEMENT application (mask|sequence)+>
<!ATTLIST application
          start IDREF #REQUIRED
          %default.atts;
>

<!-- An "application" is the top-level element. The "start" attribute must 
     contain the name of the mask or mask sequence to start with.
  -->


<!ELEMENT sequence (mask)+>
<!ATTLIST sequence
          name ID #REQUIRED
          %default.atts;
>

<!-- A "sequence" of masks. In a sequence, you can use the special button
     actions "list-prev" and "list-next" that go to the previous mask resp.
     the next mask of the sequence.
  -->


<!ELEMENT mask (%vertical.only;|%horizontal.only;|%mixed;)*>
<!ATTLIST mask
          name ID #REQUIRED
          %default.atts;
>

<!-- A "mask" contains layout and functional elements of a visible page. -->


<!ELEMENT vbox (%vertical.only;|%mixed;)*>
<!ATTLIST vbox
          halign %att.halign; "left"
          %default.atts;
>

<!-- A "vbox" (vertical box) renders the inner material in vertical direction.
     The "halign" attribute specifies whether the inner material should be
     left-aligned, right-aligned, or centered.
  -->

<!ELEMENT hbox (%horizontal.only;|%mixed;)*>
<!ATTLIST hbox
          width CDATA         #IMPLIED
          halign %att.halign; "left"
          valign %att.valign; "top"
          %default.atts;
>

<!-- An "hbox" (horizontal box) renders the inner material in horizontal
     direction. The "valign" attribute specifies whether the inner material 
     should be top-aligned, bottom-aligned, or centered.
     Normally, the width of an hbox is the sum of its members, but you can
     also widen a box by specifying the "width" attribute. This is a number
     with a dimension, e.g. "10.5 cm", "105 mm", "4.13 in". Other dimensions
     are "pt" (points) and "px" (pixels).
     If "width" is given, you may also set "halign" (see vbox for possible
     values).
  -->

<!ELEMENT vspace EMPTY>
<!ATTLIST vspace
          height CDATA      #REQUIRED
          fill  (yes|no)    "no"
          %default.atts;
>

<!-- "vspace" is a vertical space of given "height" (again a number with a 
     dimension, see hbox). 
     If "fill" is "yes", the space is extended as much as possible.
  -->

<!ELEMENT hspace EMPTY>
<!ATTLIST hspace
          width CDATA       #REQUIRED
          fill  (yes|no)    "no"
          %default.atts;
>

<!-- "hspace" is a horizontal space of given "width" (again a number with a 
     dimension, see hbox). 
     If "fill" is "yes", the space is extended as much as possible.
  -->

<!ELEMENT label (#PCDATA)>
<!ATTLIST label
          textwidth CDATA    #IMPLIED
          halign %att.halign; "left"
          %default.atts;
>

<!-- A "label" is a piece of constant text. The text is included as #PCDATA
     in the element. 
     You may set "textwidth" to a (dimensionless) number to specify a fixed
     width. In this case, "halign" determines the horizontal alignment.
  -->

<!ELEMENT entry (#PCDATA)>
<!ATTLIST entry
          textwidth CDATA   #REQUIRED
          slot      NMTOKEN #REQUIRED
          %default.atts;
>

<!-- An "entry" is an editable text line. "textwidth" specifies the width of
     the visible line (but the contents can be longer). "slot" is the name of
     a slot that is associated with the element.
     If the element contains #PCDATA, this is used as default value if 
     the slot has not yet been filled.
  -->

<!ELEMENT textbox (#PCDATA)>
<!ATTLIST textbox
          textwidth  CDATA   #REQUIRED
          textheight CDATA   #REQUIRED
          slot       NMTOKEN #IMPLIED
          %default.atts;
>

<!-- A "textbox" is a text box with dimensions "textwidth" and "textheight"
     (both dimensionless number). 
     "slot" is the name of a slot that is associated with the element.
     If the element contains #PCDATA, this is used as default value if 
     the slot has not yet been filled.
     If you omit "slot", the #PCDATA is displayed read-only.
  -->

<!ELEMENT button EMPTY>
<!ATTLIST button
          label  CDATA        #REQUIRED
          action (goto|save|exit|save-exit|list-prev|list-next|
                  hist-prev|hist-next) "goto"
          goto   IDREF        #IMPLIED
          %default.atts;
>

<!-- A "button" is specified as follows:
     - "label" is what is written on the button
     - "action" specifies what to if the button is pressed:
       - "goto":  jump to another mask or mask sequence whose name is given
                  in the attribute "goto"
       - "save":  save the record
       - "exit":  exit the application
       - "save-exit": save, then exit
       - "list-prev": jump to the previous mask in the sequence
       - "list-next": jump to the next mask in the sequence
       - "hist-prev": jump to the mask that has actually been the predecessor
       - "hist-next": jump to the mask that has actually been the successor
  -->


