<!-- ...................................................................... -->
<!-- XHTML Module Template  ............................................... -->
<!-- file: module_template.mod

     ....................................................................... -->

<!-- MIT I/S Project DTD module

     This has most of the guts of the "project" DTD

     Root element:
        project

     Other elements:
        appearance
        status
        contact

        schedule
        project-db
        team-member
        communication
        document
        issue
        task
        quarterly-goals

-->



<!ELEMENT project (appearance?, status?, contact, (
                        schedule | project-db | team-member | communication |
                        description | document | issue | task |
                        quarterly-goals | section )*) >
<!ATTLIST project
           name CDATA #REQUIRED
           page CDATA #IMPLIED
           date CDATA #IMPLIED>


<!ELEMENT appearance EMPTY>
<!ATTLIST appearance
            background  %URI;          #IMPLIED
            bgcolor     %Color;        #IMPLIED
            text        %Color;        #IMPLIED
            link        %Color;        #IMPLIED
            vlink       %Color;        #IMPLIED
            alink       %Color;        #IMPLIED
            logo        CDATA          #IMPLIED
            small-logo  CDATA          #IMPLIED
            logo-href   CDATA          #IMPLIED
            boxcolor    %Color;        #IMPLIED
>

<!-- status consists of summary and full subelements. -->

<!ELEMENT summary  %Flow; >

<!ELEMENT full  %Flow; >

<!ELEMENT status  (summary?, full?) >
<!ATTLIST status date CDATA #REQUIRED>


<!-- Primary person or mailing list to contact -->

<!ELEMENT contact (#PCDATA) >


<!-- Brief description (100 words or less) of the project. -->

<!ELEMENT description %Flow; >


<!-- Schedule is a collection of checkpoints, each of which
     has start & end dates, and deliverables and activities.
-->
<!ELEMENT schedule (checkpoint)* >

<!ELEMENT checkpoint ((deliverable|activity)*)>
<!ATTLIST checkpoint
            caption          CDATA  #REQUIRED
            scheduled-start  CDATA  #IMPLIED
            scheduled-end    CDATA  #IMPLIED
            actual-start     CDATA  #IMPLIED
            actual-end       CDATA  #IMPLIED >

<!ELEMENT deliverable  %Flow; >
<!ELEMENT activity %Flow; >

<!-- Project-DB entry; should eventuall have attrs or something
     to encode the whole project db entry.  Just have the ID for now.
      XXXX TODO finish it.
-->
<!ELEMENT project-db EMPTY>
<!ATTLIST project-db
            projid CDATA #REQUIRED
            process CDATA #REQUIRED
            practice CDATA #REQUIRED
            status CDATA #REQUIRED
            priority CDATA #REQUIRED
            sponsor CDATA #REQUIRED
            commitment CDATA #REQUIRED
            leader CDATA #REQUIRED
            customer CDATA #REQUIRED
>


<!-- Team-member.  Values are all on attributes; name, email.
     office, phone, cellphone, homephone, birthday, etc.
-->

<!ELEMENT team-member EMPTY>
<!ATTLIST team-member
            name CDATA #REQUIRED
            role CDATA #REQUIRED
            email CDATA #REQUIRED
            office CDATA #IMPLIED
            phone CDATA #IMPLIED
            homephone CDATA #IMPLIED
            cellphone CDATA #IMPLIED
            pager CDATA #IMPLIED
            birthday CDATA #IMPLIED >

<!-- Communication is for a communication-venue about the project,
     such as a mailing list, discuss meeting, report, etc.
     Everything but the name is on an attribute; the name is
     an arbitrary flow so it can be a link.

      XXX arbitrary rewrite by lcs:
     type = keyword, one of email, meeting, discuss, report, paper
     location = where to find it; room or URL or email addr.
     href == URL to use as href of location, if it's email or discuss.
     when = time if applicable, and frequency.
     purpose = what it is for
     access = keyword: closed or open.
     
-->

<!ELEMENT communication %Flow; >
<!ATTLIST communication
            type (meeting|email|discuss|report|paper) #REQUIRED
            location CDATA #REQUIRED
            href CDATA #IMPLIED
            when CDATA #IMPLIED
            purpose CDATA #REQUIRED
            access CDATA #REQUIRED
>


<!-- Project documents
     Text content should be title of document.  Let the attributes
     categorize it and link it.
     href == pointer to content
-->

<!ELEMENT document %Flow; >
<!ATTLIST document
            category (basic|output|communication|other) #REQUIRED
            href  CDATA  #IMPLIED
>


<!-- Issues; the text is the subject/statement of issue.
     Attrs are metatdata
     XXX Come back and set down *real* categories.
-->
<!ELEMENT issue %Flow; >
<!ATTLIST issue
            category (volatile|religious|divisive) #REQUIRED
            owner CDATA  #IMPLIED
            status CDATA  #IMPLIED
            entered CDATA  #IMPLIED
            resolved CDATA  #IMPLIED
            resolution CDATA  #IMPLIED
>


<!-- Task descriptions - pieces of work to be done.
     Text is the description, attrs are metadata, like issues.
     For the "effort" attributes, default opt. & pess from likely.
-->
<!ELEMENT task %Flow; >
<!ATTLIST task
            owner CDATA  #IMPLIED
            completion CDATA  #IMPLIED
            effort-optimistic CDATA  #IMPLIED
            effort-likely CDATA  #IMPLIED
            effort-pessimistic CDATA  #IMPLIED
>


<!-- Quarterly goal block; goals and/or acheivements for a
     common end date.
-->
<!ELEMENT quarterly-goals (goal | achievement)+ >
<!ATTLIST quarterly-goals date CDATA #REQUIRED>

<!ELEMENT goal %Flow; >
<!ELEMENT achievement %Flow; >


<!-- Generic section, for generic auxiliary documents.  Section is
     one of those blocks that gets its own left-side colored box label.
     Caption attr goes in that label.
 -->
<!ELEMENT section %Flow; >
<!ATTLIST section caption CDATA #REQUIRED>
  
<!-- end of module_template.mod -->
