namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

personnel = 
    ##Defines the personnel as a collection of person elements.
    element personnel { attlist.personnel, person+ }
attlist.personnel &= empty
person = 
    ##Specify information about a person.
    element person { attlist.person, name, email*, url*, link? }
attlist.person &=
    ##Specify a required unique ID for this person.
    attribute id { xsd:ID }
attlist.person &= 
    ##If there is anything to note about this person.
    attribute note { text }?
attlist.person &=
  [ a:defaultValue = "false" ] attribute contr { "true" | "false" }?
attlist.person &=
     ##Specifies the salary for this person.
    attribute salary { text }?
name = 
    ##Specify the person family and given name.
    element name {
        attlist.name,
        ((family, given) | (given, family))
      }
attlist.name &= empty
family = 
    ##The person last name.
    element family { attlist.family, text }
attlist.family &= empty
given = 
    ## The person first name.
    element given { attlist.given, text }
attlist.given &= empty
email = 
    ##Email address for this person.
    element email { attlist.email, text }
attlist.email &= empty
url = 
    ##Enter an URL for this person.
    element url { attlist.url, empty }
attlist.url &= 
    ## Enter an URL for this person.
    [ a:defaultValue = "http://" ]  attribute href { text }? 
link = 
    ##Specify who is the manager and who are the subordinates for this person.
    element link { attlist.link, empty }
attlist.link &= 
    ##The manager ID.
    attribute manager { xsd:IDREF }?
attlist.link &=
     ##Space separated list with the subordinates IDs.
    attribute subordinates { xsd:IDREFS }?
start = personnel
