summaryrefslogtreecommitdiff
blob: 75968df7d23dbe86049110d1e66da195d8b8341c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

userlist = element userlist { attlist.userlist, user* }
attlist.userlist &= empty
user =
  element user {
    attlist.user,
    realname,
    pgpkey,
    email+,
    joined,
    birthday,
    status?,
    roles?,
    location?,
    address*
  }
attlist.user &= attribute username { xsd:ID }
realname = element realname { attlist.realname, firstname, familyname }
attlist.realname &= attribute fullname { text }?
firstname = element firstname { attlist.firstname, text }
attlist.firstname &= empty
familyname = element familyname { attlist.familyname, text }
attlist.familyname &= attribute sort { text }?
pgpkey = element pgpkey { attlist.pgpkey, text }
attlist.pgpkey &= empty
pgpfingerprint = element pgpfingerprint { attlist.pgpfingerprint, text }
attlist.pgpfingerprint &= empty
email = element email { attlist.email, text }
attlist.email &=
  attribute role { "primary" | "alias" | "secondary" | "gentoo" }
# all dates should be DD MMMM YYYY - eg '15 October 2006'
joined = element joined { attlist.joined, text }
attlist.joined &= empty
retired = element retired { attlist.retired, text }
attlist.retired &= empty
birthday = element birthday { attlist.birthday, text }
attlist.birthday &= empty
address =
  element address {
    attlist.address,
    street,
    number,
    suffix?,
    zipcode,
    city,
    state?,
    country,
    formatted?
  }
attlist.address &=
  attribute role { "main" | "work" | "secondary" | "home" }
street = element street { attlist.street, text }
attlist.street &= empty
number = element number { attlist.number, text }
attlist.number &= empty
suffix = element suffix { attlist.suffix, text }
attlist.suffix &= empty
zipcode = element zipcode { attlist.zipcode, text }
attlist.zipcode &= empty
city = element city { attlist.city, text }
attlist.city &= empty
state = element state { attlist.state, text }
attlist.state &= empty
country = element country { attlist.country, text }
attlist.country &= attribute fullname { text }?
formatted = element formatted { attlist.formatted, text }
attlist.formatted &=
  [ a:defaultValue = "preserve" ] attribute xml:space { "preserve" }?
status = element status { attlist.status, text }
attlist.status &= empty
roles = element roles { attlist.roles, text }
attlist.roles &= empty
# Location is the string displayed on the webpage
location = element location { attlist.location, text }
# signed decimal numbers. degrees north/east.
attlist.location &=
  attribute latitude { text }?,
  attribute longitude { text }?
start = retired | userlist | pgpfingerprint