]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.core/src/org/argeo/app/core/schemas/xCard-4.0-RFC6351.rnc
Add cn to person entity
[gpl/argeo-suite.git] / org.argeo.app.core / src / org / argeo / app / core / schemas / xCard-4.0-RFC6351.rnc
1 default namespace = "urn:ietf:params:xml:ns:vcard-4.0"
2
3 ### Section 3.3: vCard Format Specification
4 #
5 # 3.3
6 iana-token = xsd:string { pattern = "[a-zA-Z0-9-]+" }
7 x-name = xsd:string { pattern = "x-[a-zA-Z0-9-]+" }
8
9 ### Section 4: Value types
10 #
11 # 4.1
12 value-text = element text { text }
13 value-text-list = value-text+
14
15 # 4.2
16 value-uri = element uri { xsd:anyURI }
17
18 # 4.3.1
19 value-date = element date {
20 xsd:string { pattern = "\d{8}|\d{4}-\d\d|--\d\d(\d\d)?|---\d\d" }
21 }
22
23 # 4.3.2
24 value-time = element time {
25 xsd:string { pattern = "(\d\d(\d\d(\d\d)?)?|-\d\d(\d\d?)|--\d\d)"
26 ~ "(Z|[+\-]\d\d(\d\d)?)?" }
27 }
28
29 # 4.3.3
30 value-date-time = element date-time {
31 xsd:string { pattern = "(\d{8}|--\d{4}|---\d\d)T\d\d(\d\d(\d\d)?)?"
32 ~ "(Z|[+\-]\d\d(\d\d)?)?" }
33 }
34
35 # 4.3.4
36 value-date-and-or-time = value-date | value-date-time | value-time
37
38 # 4.3.5
39 value-timestamp = element timestamp {
40 xsd:string { pattern = "\d{8}T\d{6}(Z|[+\-]\d\d(\d\d)?)?" }
41 }
42
43 # 4.4
44 value-boolean = element boolean { xsd:boolean }
45
46 # 4.5
47 value-integer = element integer { xsd:integer }
48
49 # 4.6
50 value-float = element float { xsd:float }
51
52 # 4.7
53 value-utc-offset = element utc-offset {
54 xsd:string { pattern = "[+\-]\d\d(\d\d)?" }
55 }
56
57 # 4.8
58 value-language-tag = element language-tag {
59 xsd:string { pattern = "([a-z]{2,3}((-[a-z]{3}){0,3})?|[a-z]{4,8})"
60 ~ "(-[a-z]{4})?(-([a-z]{2}|\d{3}))?"
61 ~ "(-([0-9a-z]{5,8}|\d[0-9a-z]{3}))*"
62 ~ "(-[0-9a-wyz](-[0-9a-z]{2,8})+)*"
63 ~ "(-x(-[0-9a-z]{1,8})+)?|x(-[0-9a-z]{1,8})+|"
64 ~ "[a-z]{1,3}(-[0-9a-z]{2,8}){1,2}" }
65 }
66
67 ### Section 5: Parameters
68 #
69 # 5.1
70 param-language = element language { value-language-tag }?
71
72 # 5.2
73 param-pref = element pref {
74 element integer {
75 xsd:integer { minInclusive = "1" maxInclusive = "100" }
76 }
77 }?
78
79 # 5.4
80 param-altid = element altid { value-text }?
81
82 # 5.5
83 param-pid = element pid {
84 element text { xsd:string { pattern = "\d+(\.\d+)?" } }+
85 }?
86
87 # 5.6
88 param-type = element type { element text { "work" | "home" }+ }?
89
90 # 5.7
91 param-mediatype = element mediatype { value-text }?
92
93 # 5.8
94 param-calscale = element calscale { element text { "gregorian" } }?
95
96 # 5.9
97 param-sort-as = element sort-as { value-text+ }?
98
99 # 5.10
100 param-geo = element geo { value-uri }?
101
102 # 5.11
103 param-tz = element tz { value-text | value-uri }?
104
105 ### Section 6: Properties
106 #
107 # 6.1.3
108 property-source = element source {
109 element parameters { param-altid, param-pid, param-pref,
110 param-mediatype },
111 value-uri
112 }
113
114 # 6.1.4
115 property-kind = element kind {
116 element text { "individual" | "group" | "org" | "location" |
117 x-name | iana-token }*
118 }
119
120 # 6.2.1
121 property-fn = element fn {
122 element parameters { param-language, param-altid, param-pid,
123 param-pref, param-type }?,
124 value-text
125 }
126
127 # 6.2.2
128 property-n = element n {
129 element parameters { param-language, param-sort-as, param-altid }?,
130 element surname { text }+,
131 element given { text }+,
132 element additional { text }+,
133 element prefix { text }+,
134 element suffix { text }+
135 }
136
137 # 6.2.3
138 property-nickname = element nickname {
139 element parameters { param-language, param-altid, param-pid,
140 param-pref, param-type }?,
141 value-text-list
142 }
143
144 # 6.2.4
145 property-photo = element photo {
146 element parameters { param-altid, param-pid, param-pref, param-type,
147 param-mediatype }?,
148 value-uri
149 }
150
151 # 6.2.5
152 property-bday = element bday {
153 element parameters { param-altid, param-calscale }?,
154 (value-date-and-or-time | value-text)
155 }
156
157 # 6.2.6
158 property-anniversary = element anniversary {
159 element parameters { param-altid, param-calscale }?,
160 (value-date-and-or-time | value-text)
161 }
162
163 # 6.2.7
164 property-gender = element gender {
165 element sex { "" | "M" | "F" | "O" | "N" | "U" },
166 element identity { text }?
167 }
168
169 # 6.3.1
170 param-label = element label { value-text }?
171 property-adr = element adr {
172 element parameters { param-language, param-altid, param-pid,
173 param-pref, param-type, param-geo, param-tz,
174 param-label }?,
175 element pobox { text }+,
176 element ext { text }+,
177 element street { text }+,
178 element locality { text }+,
179 element region { text }+,
180 element code { text }+,
181 element country { text }+
182 }
183
184 # 6.4.1
185 property-tel = element tel {
186 element parameters {
187 param-altid,
188 param-pid,
189 param-pref,
190 element type {
191 element text { "work" | "home" | "text" | "voice"
192 | "fax" | "cell" | "video" | "pager"
193 | "textphone" }+
194 }?,
195 param-mediatype
196 }?,
197 (value-text | value-uri)
198 }
199
200 # 6.4.2
201 property-email = element email {
202 element parameters { param-altid, param-pid, param-pref,
203 param-type }?,
204 value-text
205 }
206
207 # 6.4.3
208 property-impp = element impp {
209 element parameters { param-altid, param-pid, param-pref,
210 param-type, param-mediatype }?,
211 value-uri
212 }
213
214 # 6.4.4
215 property-lang = element lang {
216 element parameters { param-altid, param-pid, param-pref,
217 param-type }?,
218 value-language-tag
219 }
220
221 # 6.5.1
222 property-tz = element tz {
223 element parameters { param-altid, param-pid, param-pref,
224 param-type, param-mediatype }?,
225 (value-text | value-uri | value-utc-offset)
226 }
227
228 # 6.5.2
229 property-geo = element geo {
230 element parameters { param-altid, param-pid, param-pref,
231 param-type, param-mediatype }?,
232 value-uri
233 }
234
235 # 6.6.1
236 property-title = element title {
237 element parameters { param-language, param-altid, param-pid,
238 param-pref, param-type }?,
239 value-text
240 }
241
242 # 6.6.2
243 property-role = element role {
244 element parameters { param-language, param-altid, param-pid,
245 param-pref, param-type }?,
246 value-text
247 }
248
249 # 6.6.3
250 property-logo = element logo {
251 element parameters { param-language, param-altid, param-pid,
252 param-pref, param-type, param-mediatype }?,
253 value-uri
254 }
255
256 # 6.6.4
257 property-org = element org {
258 element parameters { param-language, param-altid, param-pid,
259 param-pref, param-type, param-sort-as }?,
260 value-text-list
261 }
262
263 # 6.6.5
264 property-member = element member {
265 element parameters { param-altid, param-pid, param-pref,
266 param-mediatype }?,
267 value-uri
268 }
269
270 # 6.6.6
271 property-related = element related {
272 element parameters {
273 param-altid,
274 param-pid,
275 param-pref,
276 element type {
277 element text {
278 "work" | "home" | "contact" | "acquaintance" |
279 "friend" | "met" | "co-worker" | "colleague" | "co-resident" |
280 "neighbor" | "child" | "parent" | "sibling" | "spouse" |
281 "kin" | "muse" | "crush" | "date" | "sweetheart" | "me" |
282 "agent" | "emergency"
283 }+
284 }?,
285 param-mediatype
286 }?,
287 (value-uri | value-text)
288 }
289
290 # 6.7.1
291 property-categories = element categories {
292 element parameters { param-altid, param-pid, param-pref,
293 param-type }?,
294 value-text-list
295 }
296
297 # 6.7.2
298 property-note = element note {
299 element parameters { param-language, param-altid, param-pid,
300 param-pref, param-type }?,
301 value-text
302 }
303
304 # 6.7.3
305 property-prodid = element prodid { value-text }
306
307 # 6.7.4
308 property-rev = element rev { value-timestamp }
309
310 # 6.7.5
311 property-sound = element sound {
312 element parameters { param-language, param-altid, param-pid,
313 param-pref, param-type, param-mediatype }?,
314 value-uri
315 }
316
317 # 6.7.6
318 property-uid = element uid { value-uri }
319
320 # 6.7.7
321 property-clientpidmap = element clientpidmap {
322 element sourceid { xsd:positiveInteger },
323 value-uri
324 }
325
326 # 6.7.8
327 property-url = element url {
328 element parameters { param-altid, param-pid, param-pref,
329 param-type, param-mediatype }?,
330 value-uri
331 }
332
333 # 6.8.1
334 property-key = element key {
335 element parameters { param-altid, param-pid, param-pref,
336 param-type, param-mediatype }?,
337 (value-uri | value-text)
338 }
339
340 # 6.9.1
341 property-fburl = element fburl {
342 element parameters { param-altid, param-pid, param-pref,
343 param-type, param-mediatype }?,
344 value-uri
345 }
346
347 # 6.9.2
348 property-caladruri = element caladruri {
349 element parameters { param-altid, param-pid, param-pref,
350 param-type, param-mediatype }?,
351 value-uri
352 }
353
354 # 6.9.3
355 property-caluri = element caluri {
356 element parameters { param-altid, param-pid, param-pref,
357 param-type, param-mediatype }?,
358 value-uri
359 }
360
361 # Top-level grammar
362 property = property-adr | property-anniversary | property-bday
363 | property-caladruri | property-caluri | property-categories
364 | property-clientpidmap | property-email | property-fburl
365 | property-fn | property-geo | property-impp | property-key
366 | property-kind | property-lang | property-logo
367 | property-member | property-n | property-nickname
368 | property-note | property-org | property-photo
369 | property-prodid | property-related | property-rev
370 | property-role | property-gender | property-sound
371 | property-source | property-tel | property-title
372 | property-tz | property-uid | property-url
373 start = element vcards {
374 element vcard {
375 (property
376 | element group {
377 attribute name { text },
378 property*
379 })+
380 }+
381 }
382