<?xml encoding='US-ASCII'?>
<!-- $Id$ -->

<!-- overall organization -->
<!ELEMENT design (note*,types*,category*)>
<!ATTLIST design name CDATA #IMPLIED
                 date CDATA #IMPLIED>
<!ELEMENT date (#PCDATA)>
<!ELEMENT types (category)*>
<!ELEMENT category (note*,(class|interface)*)>
<!ATTLIST category name    CDATA   #REQUIRED
                   package NMTOKEN #IMPLIED
>

<!-- markup -->
<!ELEMENT note (#PCDATA)>

<!-- types -->
<!ENTITY % types 'array|primitive|reference|collection'>
<!ELEMENT array (note*,(primitive|reference))>
<!ATTLIST array dimension CDATA '1'>
<!ELEMENT primitive EMPTY>
<!ATTLIST primitive type (long|int|short|byte|char|boolean) #REQUIRED>
<!ELEMENT reference EMPTY>
<!ATTLIST reference idref IDREF #REQUIRED>
<!ELEMENT collection (note*,collector,items)>
<!ELEMENT collector (%types;)>
<!ELEMENT items (%types;)>
<!ELEMENT union (note?,part,part+)>
<!ELEMENT part (note?,(%types;)*)>

<!-- sections -->
<!ENTITY % visibility 'public|private|protected'>
<!ELEMENT constant (note*,(%types;))>
<!ATTLIST constant name       NMTOKEN        #REQUIRED
                   value      CDATA          #IMPLIED
                   visibility (%visibility;) 'public'
>
<!ELEMENT field (note*,(%types;))>
<!ATTLIST field name       NMTOKEN        #REQUIRED
                visibility (%visibility;) 'protected'
>
<!ELEMENT constructor (note*,param*,throws*)>
<!ATTLIST constructor visibility (%visibility;) 'public'>
<!ELEMENT method (note*,param*,returns?,throws*)>
<!ATTLIST method name       NMTOKEN        #REQUIRED
                 visibility (%visibility;) 'public'
>
<!ELEMENT param (note*,(%types;))>
<!ATTLIST param name NMTOKEN #REQUIRED>
<!ELEMENT returns (note*,(%types;))>
<!ELEMENT throws (note*,reference)>

<!-- objects -->
<!ELEMENT class (note*,extends?,implements*,constant*,field*,constructor*,method*)>
<!ATTLIST class id         ID             #REQUIRED 
                name       NMTOKEN        #REQUIRED
                visibility (%visibility;) #FIXED 'public'
>
<!ELEMENT interface (note*,extends*,constant*,method*)>
<!ATTLIST interface id         ID             #REQUIRED
                    name       NMTOKEN        #REQUIRED
                    visibility (%visibility;) #FIXED 'public'
>
<!ELEMENT extends (note*,reference)>
<!ELEMENT implements (note*,reference)>
