<?xml version="1.0" encoding="UTF-8"?>


<!ELEMENT module (level, credits, replaces, core, optional, assigned,
pre-requisite, co-requisite, aims, outcome,
times, syllabus, reading, assesment, programmes?,
date,comments )>

<!ATTLIST module
id CDATA #REQUIRED
coordinator CDATA #REQUIRED
>

<!ELEMENT replaces (external*,comment?)>
<!ELEMENT external (#PCDATA )>
<!ELEMENT comment (p)*>
<!ELEMENT core (status)>
<!ELEMENT optional (status)>
<!ELEMENT assigned (status)>
<!ELEMENT status EMPTY>
<!ATTLIST status
programmes (CS | SE | IS | CS-SE | CS-IS | SE-IS | CS-SE-IS | NONE) #REQUIRED
>

<!ELEMENT level (#PCDATA )>
<!ELEMENT credits (#PCDATA )>

<!ELEMENT pre-requisite (course-reference)*>
<!ELEMENT co-requisite (course-reference)*>
<!ELEMENT course-reference EMPTY>
<!ATTLIST course-reference
id CDATA #REQUIRED
>

<!ELEMENT aims (p)*>
<!ELEMENT outcome (p)*>
<!ELEMENT syllabus (p)*>
<!ELEMENT comments (p)*>

<!ELEMENT p (#PCDATA | reference | b | i | u | list | p )*>
<!ELEMENT i (#PCDATA | reference | b | i | u | list | p )*>
<!ELEMENT b (#PCDATA | reference | b | i | u | list | p )*>
<!ELEMENT u (#PCDATA | reference | b | i | u | list | p )*>
<!ELEMENT list (item)+ >
<!ELEMENT item (#PCDATA | reference | b | i | u | list | p )*>
<!ELEMENT reference (#PCDATA)>
<!ATTLIST reference
href CDATA #REQUIRED
>

<!ELEMENT times (lectures, tutorials?, labs?, independent?, total)+>
<!ELEMENT lectures (#PCDATA )>
<!ELEMENT tutorials (#PCDATA )>
<!ELEMENT labs (#PCDATA )>
<!ELEMENT independent (#PCDATA )>
<!ELEMENT total (#PCDATA )>

<!ELEMENT reading (essential?,supplementary?)>
<!ELEMENT essential (book)+>
<!ELEMENT supplementary (book)+>
<!ELEMENT book (author, title, publisher, edition?, year?, isbn?, reference?)+>
<!ELEMENT author (#PCDATA )>
<!ELEMENT title (#PCDATA )>
<!ELEMENT publisher (#PCDATA )>
<!ELEMENT edition (#PCDATA )>
<!ELEMENT year (#PCDATA )>
<!ELEMENT isbn (#PCDATA )>

<!ELEMENT assesment (continual,exam)>
<!ELEMENT continual (#PCDATA )>
<!ELEMENT exam (#PCDATA )>

<!ELEMENT date (#PCDATA )>