nonEmpty = xsd:string { minLength = "1" } content = mixed { (persName | eventName)* } start = letter letter = element letter { header, \text } header = element header { title, provenance, persons, events } provenance = element provenance { nonEmpty } persons = element persons { person+ } person = element person { xmlid, name, affiliation?, animal? } xmlid = attribute xml:id { xsd:ID } name = element name { nonEmpty } affiliation = element affiliation { nonEmpty } animal = element animal { nonEmpty } events = element events { event+ } event = element event { xmlid, title, location } title = element title { nonEmpty } location = element location { nonEmpty } \text = element text { date, salutation, body, closing } date = element date { xsd:date } salutation = element salutation { content } body = element body { p+ } p = element p { content } closing = element closing { valediction?, signature } valediction = element valediction { content } signature = element signature { content } persName = element persName { ref, nonEmpty } ref = attribute ref { xsd:IDREF } eventName = element eventName { ref, nonEmpty }