[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

new eduml dtd




Here's the new DTD.  It runs cleanly through nsgmls, the validating XML 
parser I found.

Dan


<?XML version="1.0"?>
<!-- DTD v0.2 for eduml v0.6  Dan Moore  1/1/99 -->
<!-- changes since v0.1:
 tracked eduml xml doc changes, through v0.8
 cleanly ran through nsgmls, an sgml/xml checker
-->

<!ELEMENT edu (locale?,school,scale*,plos*,library?)>

 <!ELEMENT locale (word+)>
   <!ELEMENT word EMPTY>  
   <!ATTLIST word orig CDATA #REQUIRED
                  tranlang CDATA #REQUIRED
                  tranword CDATA #REQUIRED> 

 <!ELEMENT school (people, groups+, course+,room+)>
 <!ATTLIST school id ID #IMPLIED>
   <!ELEMENT people (person+)> 
     <!ELEMENT person (password,id,status,name,contact+,
                       styles*,stakeholder+)>
     <!ELEMENT password (#PCDATA)>
     <!ELEMENT id (#PCDATA)> 
     <!ATTLIST id type (national|provincial|school-board|school)
                  #REQUIRED>
     <!ELEMENT status (#PCDATA)>
     <!ATTLIST status date CDATA #IMPLIED>
     <!ELEMENT name ((#PCDATA)|(org?, given,alias*,middle*,birthday,
                     family,pronounce?))>
       <!ELEMENT org (#PCDATA)>
       <!ELEMENT family (#PCDATA)>
       <!ELEMENT given (#PCDATA)>
       <!ELEMENT alias (#PCDATA)>
       <!ELEMENT middle (#PCDATA)>
       <!ELEMENT birthday (#PCDATA)>
       <!ELEMENT pronounce (#PCDATA)>
     <!ELEMENT contact (email, subscribe, snail, url, phone, fax)>
       <!ELEMENT email (#PCDATA)>
       <!ELEMENT subscribe (#PCDATA)>
       <!ELEMENT snail (#PCDATA)>
       <!ELEMENT url (#PCDATA)>
       <!ELEMENT phone (#PCDATA)>
       <!ATTLIST phone when (night|day|emergency) #REQUIRED
                       where (home|work) #REQUIRED>
       <!ELEMENT fax (#PCDATA)>
     <!ELEMENT styles (style+)>
       <!ELEMENT style (#PCDATA)>
     <!ELEMENT stakeholder (#PCDATA)>
     <!ATTLIST stakeholder id IDREF #REQUIRED>

   <!ELEMENT groups (group+)>
     <!ELEMENT group (member+, comment*)>
     <!ATTLIST group id IDREF #REQUIRED>
       <!ELEMENT member (#PCDATA)>
       <!ATTLIST member id IDREF #REQUIRED>
       <!ELEMENT comment (#PCDATA)>
 
   
   <!ELEMENT course ((course-name, room+, start,act,end,teacher+,
                     student+)|(#PCDATA))>
   <!ATTLIST course id ID #REQUIRED> 
     <!ELEMENT course-name (#PCDATA)>
     <!ELEMENT start (#PCDATA)>
     <!ELEMENT act (comment,scale,mark)>
     <!ATTLIST act id ID #REQUIRED date CDATA #REQUIRED>
       <!ELEMENT mark (#PCDATA)>
       <!ATTLIST mark student IDREF #REQUIRED time CDATA #REQUIRED 
                      marker IDREF #REQUIRED>
     <!ELEMENT end (#PCDATA)>
     <!ELEMENT teacher ((#PCDATA)|(EMPTY))>
     <!ATTLIST teacher id IDREF #REQUIRED>  
     <!ELEMENT student ((start,act,end)|EMPTY)>
     <!ATTLIST student id IDREF #REQUIRED>

   <!ELEMENT room (name,contact,schedule)>
   <!ATTLIST room id ID #REQUIRED>
     <!ELEMENT schedule (course)>

<!-- assessment ===================-->
 <!ELEMENT scale (description,high, weight,list, math)>
 <!ATTLIST scale id ID #REQUIRED>
   <!ELEMENT description (#PCDATA)>
   <!ELEMENT high (#PCDATA)>
   <!ELEMENT weight (#PCDATA)>
   <!ATTLIST weight type (relative|absolute) #REQUIRED>
   <!ELEMENT list (#PCDATA)>
   <!ELEMENT math (#PCDATA)>
 
 <!ELEMENT plos (outcome-id+)>
   <!ELEMENT outcome-id (plo-description, plo-report-card, plo+)>
   <!ATTLIST outcome id ID #REQUIRED>
     <!ELEMENT plo-description (#PCDATA)>
     <!ATTLIST plo-description issuer IDREF #REQUIRED>
     <!ELEMENT plo-report-card (#PCDATA)>
     <!ATTLIST plo-report-card issuer IDREF #REQUIRED>
     <!ELEMENT plo (item+)>
     <!ATTLIST plo id ID #REQUIRED type (prerequisite|composite|alias)
#IMPLIED>
       <!ELEMENT item (item-type, item-style, item-script)>
       <!ATTLIST item id ID #REQUIRED>
         <!ELEMENT item-type (#PCDATA)>
         <!ELEMENT item-style (#PCDATA)>
         <!ELEMENT item-script (#PCDATA)>
         <!ATTLIST item-script id (perl|tcl|python|shell|etc) #REQUIRED
                               lib CDATA #REQUIRED>

<!-- library catalog =================-->

 <!ELEMENT library (catalogue-system,item+)>
 <!ATTLIST library id ID #REQUIRED>
   <!ELEMENT catalogue-system (#PCDATA)>
   <!ELEMENT traps (trap+)>
     <!ELEMENT trap (#PCDATA)>
     <!ATTLIST trap id CDATA #REQUIRED> <!-- type of trap-->
   <!ELEMENT routines (routine+)>
     <!ELEMENT routine (#PCDATA)> 
   <!ELEMENT operators (operator+)>
     <!ELEMENT operator EMPTY>
     <!ATTLIST operator id IDREF #REQUIRED>
   <!ELEMENT borrower-categories (library-group+)>
     <!ELEMENT library-group (school-group,student,loan-value,fine, 
                         item-limit, trap)>
       <!ELEMENT school-group EMPTY>
       <!ATTLIST school-group id IDREF #REQUIRED school IDREF #REQUIRED>
       <!ELEMENT loan-value EMPTY>
       <!ATTLIST loan-value id CDATA #REQUIRED 
                            name CDATA #REQUIRED
                            duration CDATA #REQUIRED>
       <!ELEMENT fine EMPTY>
       <!ATTLIST fine id CDATA #REQUIRED 
                      max-fine CDATA #REQUIRED
                      daily-fine CDATA #REQUIRED>
       <!ELEMENT item-limit EMPTY>
       <!ATTLIST item-limit max CDATA #REQUIRED>
   <!ELEMENT resource-categories (category+)>
     <!ELEMENT category EMPTY>
     <!ATTLIST category id CDATA #REQUIRED
                        name CDATA #REQUIRED
                        loan-value CDATA #IMPLIED>
   <!ELEMENT lib-item (catalogue-code?,isbn?,issn?, barcode?,
                       loan-value-code, status, title, variant-title?, 
                       keywords, level, authorities,summary, location, 
                       responsibility, dates, price, edition, notes, 
                       loan+)>
   <!ATTLIST lib-item id ID #REQUIRED volume CDATA #REQUIRED 
                  copy CDATA #REQUIRED>
     <!ELEMENT catalogue-code (#PCDATA)>
     <!ELEMENT isbn (#PCDATA)>
     <!ELEMENT issn (#PCDATA)>
     <!ELEMENT barcode (#PCDATA)>
     <!ELEMENT loan-value-code EMPTY>
     <!ATTLIST loan-value-code category CDATA #REQUIRED>

     <!ELEMENT title (#PCDATA)>
     <!ELEMENT variant-title (#PCDATA)>
     <!ELEMENT keywords (#PCDATA)>
     <!ELEMENT level EMPTY>
     <!ATTLIST level reading CDATA #IMPLIED
                     viewing CDATA #IMPLIED
                     scale CDATA #IMPLIED>
     <!ELEMENT authorities (author+,subject+, series, conference,
                            organization, added-title, uniform)>
       <!ELEMENT author (#PCDATA)>
       <!ELEMENT subject (#PCDATA)>
       <!ELEMENT series (#PCDATA)>
       <!ELEMENT conference (#PCDATA)>
       <!ELEMENT organization (#PCDATA)>
       <!ELEMENT added-title (#PCDATA)>
       <!ELEMENT uniform (#PCDATA)>

     <!ELEMENT summary (#PCDATA)>
     <!ELEMENT location (#PCDATA)>
     <!ELEMENT responsibility (#PCDATA)>
     <!ELEMENT dates (date-acquired, year-published,
                      date-entry-updated)>
       <!ELEMENT date-acquired EMPTY>
       <!ATTLIST date-acquired date CDATA #IMPLIED>
       <!ELEMENT year-published EMPTY>
       <!ATTLIST year-published year CDATA #IMPLIED>
       <!ELEMENT date-entry-updated EMPTY>
       <!ATTLIST date-entry-updated date CDATA #REQUIRED 
                                    by ID #REQUIRED>
     <!ELEMENT price (#PCDATA)>

     <!ELEMENT edition (editor, place, publisher, physical)>
       <!ELEMENT editor (#PCDATA)>
       <!ELEMENT place (#PCDATA)>
       <!ELEMENT publisher (#PCDATA)>
       <!ELEMENT physical (#PCDATA)>
       <!ATTLIST physical pages CDATA #IMPLIED>
     <!ELEMENT notes (#PCDATA)>
     <!ELEMENT loan (student,start,duration,overdue,end, comment?)>
       <!ELEMENT duration (#PCDATA)>
       <!ELEMENT overdue (#PCDATA)>
       <!ATTLIST overdue severity CDATA #REQUIRED>