namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" include "common.rnc" body.class = block.class | glepindex body = element body { body.attlist, body.class* } project = element project { project.attlist, name, longname?, date?, author*, description, longdescription, goals?, recruitment?, (dev | resource | subproject | plannedproject | extraproject | extrachapter | herd | task | author)* } project.attlist &= attribute disclaimer { "draft" | "obsolete" }?, attribute redirect { text }? name = element name { name.attlist, text } name.attlist &= empty longname = element longname { longname.attlist, text } longname.attlist &= empty description = element description { description.attlist, text } description.attlist &= empty longdescription = element longdescription { longdescription.attlist, body.class* } longdescription.attlist &= empty goals = element goals { goals.attlist, body.class* } goals.attlist &= empty recruitment = element recruitment { recruitment.attlist, job+ } recruitment.attlist &= empty job = element job { job.attlist, summary, details, requirements, contact+ } job.attlist &= empty details = element details { details.attlist, (text | inline.class)* } details.attlist &= empty requirements = element requirements { requirements.attlist, (text | inline.class)* } requirements.attlist &= empty contact = element contact { contact.attlist, text } contact.attlist &= empty dev = element dev { dev.attlist, text } dev.attlist &= [ a:defaultValue = "member" ] attribute role { text }?, attribute description { text }? resource = element resource { resource.attlist, text } resource.attlist &= attribute link { text }? subproject = element subproject { subproject.attlist, empty } subproject.attlist &= attribute ref { text }, [ a:defaultValue = "no" ] attribute inheritmembers { "yes" | "no" }?, [ a:defaultValue = "no" ] attribute inheritresources { "yes" | "no" }? extraproject = element extraproject { extraproject.attlist, (text | inline.class)* } extraproject.attlist &= attribute name { text }, attribute lead { text }?, attribute link { text }? plannedproject = element plannedproject { plannedproject.attlist, (text | inline.class)* } plannedproject.attlist &= attribute name { text } extrachapter = element extrachapter { extrachapter.attlist, title, section+ } section = element section { section.attlist, title?, body+ } extrachapter.attlist &= [ a:defaultValue = "bottom" ] attribute position { "top" | "bottom" | "subproject" | "goals" | "resources" | "devs" | "recruitment" | "tasks" }? herd = element herd { herd.attlist, empty } herd.attlist &= attribute name { text } # TASK tags declaration task = element task { task.attlist, name, description, longdescription?, startdate, enddate?, (reference | milestone | dev | depends)* } task.attlist &= attribute id { xsd:ID }?, attribute lead { text }, [ a:defaultValue = "no" ] attribute finished { "yes" | "no" }? startdate = element startdate { startdate.attlist, text } startdate.attlist &= empty enddate = element enddate { enddate.attlist, text } enddate.attlist &= empty reference = element reference { reference.attlist, (text | bug | mail | uri)* } reference.attlist &= empty bug = element bug { bug.attlist, text } bug.attlist &= attribute no { text } milestone = element milestone { milestone.attlist, enddate, description } milestone.attlist &= [ a:defaultValue = "no" ] attribute finished { "yes" | "no" }? depends = element depends { depends.attlist, text } depends.attlist &= attribute ref { xsd:IDREF } chapter |= notAllowed start = values | \include | project | included | license | abstract