]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.core/src/org/argeo/app/core/schemas/xCal-2.0.rnc
Add cn to person entity
[gpl/argeo-suite.git] / org.argeo.app.core / src / org / argeo / app / core / schemas / xCal-2.0.rnc
1 default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
2
3 # 3.2 Property Parameters
4
5 # 3.2.1 Alternate Text Representation
6
7 altrepparam = element altrep {
8 value-uri
9 }
10
11 # 3.2.2 Common Name
12
13 cnparam = element cn {
14 value-text
15 }
16
17 # 3.2.3 Calendar User Type
18
19 cutypeparam = element cutype {
20 element text {
21 "INDIVIDUAL" |
22 "GROUP" |
23 "RESOURCE" |
24 "ROOM" |
25 "UNKNOWN"
26 }
27 }
28
29 # 3.2.4 Delegators
30
31 delfromparam = element delegated-from {
32 value-cal-address+
33 }
34
35 # 3.2.5 Delegatees
36
37 deltoparam = element delegated-to {
38 value-cal-address+
39 }
40
41 # 3.2.6 Directory Entry Reference
42
43 dirparam = element dir {
44 value-uri
45 }
46
47 # 3.2.7 Inline Encoding
48
49 encodingparam = element encoding {
50 element text {
51 "8BIT" |
52 "BASE64"
53 }
54 }
55
56 # 3.2.8 Format Type
57
58 fmttypeparam = element fmttype {
59 value-text
60 }
61
62 # 3.2.9 Free/Busy Time Type
63
64 fbtypeparam = element fbtype {
65 element text {
66 "FREE" |
67 "BUSY" |
68 "BUSY-UNAVAILABLE" |
69 "BUSY-TENTATIVE"
70 }
71 }
72
73 # 3.2.10 Language
74
75 languageparam = element language {
76 value-text
77 }
78
79 # 3.2.11 Group or List Membership
80
81 memberparam = element member {
82 value-cal-address+
83 }
84
85 # 3.2.12 Participation Status
86
87 partstatparam = element partstat {
88 type-partstat-event |
89 type-partstat-todo |
90 type-partstat-jour
91 }
92
93 type-partstat-event = (
94 element text {
95 "NEEDS-ACTION" |
96 "ACCEPTED" |
97 "DECLINED" |
98 "TENTATIVE" |
99 "DELEGATED"
100 }
101 )
102
103 type-partstat-todo = (
104 element text {
105 "NEEDS-ACTION" |
106 "ACCEPTED" |
107 "DECLINED" |
108 "TENTATIVE" |
109 "DELEGATED" |
110 "COMPLETED" |
111 "IN-PROCESS"
112 }
113 )
114
115 type-partstat-jour = (
116 element text {
117 "NEEDS-ACTION" |
118 "ACCEPTED" |
119 "DECLINED"
120 }
121 )
122
123 # 3.2.13 Recurrence Identifier Range
124
125 rangeparam = element range {
126 element text {
127 "THISANDFUTURE"
128 }
129 }
130
131 # 3.2.14 Alarm Trigger Relationship
132
133 trigrelparam = element related {
134 element text {
135 "START" |
136 "END"
137 }
138 }
139
140 # 3.2.15 Relationship Type
141
142 reltypeparam = element reltype {
143 element text {
144 "PARENT" |
145 "CHILD" |
146 "SIBLING"
147 }
148 }
149
150 # 3.2.16 Participation Role
151
152 roleparam = element role {
153 element text {
154 "CHAIR" |
155 "REQ-PARTICIPANT" |
156 "OPT-PARTICIPANT" |
157 "NON-PARTICIPANT"
158 }
159 }
160
161 # 3.2.17 RSVP Expectation
162
163 rsvpparam = element rsvp {
164 value-boolean
165 }
166
167 # 3.2.18 Sent By
168
169 sentbyparam = element sent-by {
170 value-cal-address
171 }
172
173 # 3.2.19 Time Zone Identifier
174
175 tzidparam = element tzid {
176 value-text
177 }
178
179 # 3.3 Property Value Data Types
180
181 # 3.3.1 BINARY
182
183 value-binary = element binary {
184 xsd:string
185 }
186
187 # 3.3.2 BOOLEAN
188
189 value-boolean = element boolean {
190 xsd:boolean
191 }
192
193 # 3.3.3 CAL-ADDRESS
194
195 value-cal-address = element cal-address {
196 xsd:anyURI
197 }
198
199 # 3.3.4 DATE
200
201 pattern-date = xsd:string {
202 pattern = "\d\d\d\d-\d\d-\d\d"
203 }
204
205 value-date = element date {
206 pattern-date
207 }
208
209 # 3.3.5 DATE-TIME
210
211 pattern-date-time = xsd:string {
212 pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
213 }
214
215 value-date-time = element date-time {
216 pattern-date-time
217 }
218
219 # 3.3.6 DURATION
220
221 pattern-duration = xsd:string {
222 # mbaudier - 2022-05-31 : corrected regexp from RFC 6321
223 pattern = "(\+|-)?P(\d+W)|(\d+D)?"
224 ~ "(T(\d+H(\d+M)?(\d+S)?)|"
225 ~ "(\d+M(\d+S)?)|"
226 ~ "(\d+S))?"
227 }
228
229 value-duration = element duration {
230 pattern-duration
231 }
232
233 # 3.3.7 FLOAT
234
235 value-float = element float {
236 xsd:float
237 }
238
239 # 3.3.8 INTEGER
240
241 value-integer = element integer {
242 xsd:integer
243 }
244
245 # 3.3.9 PERIOD
246
247 value-period = element period {
248 element start {
249 pattern-date-time
250 },
251 (
252 element end {
253 pattern-date-time
254 } |
255 element duration {
256 pattern-duration
257 }
258 )
259 }
260
261 # 3.3.10 RECUR
262
263 value-recur = element recur {
264 type-freq,
265 (type-until | type-count)?,
266 element interval {
267 xsd:positiveInteger
268 }?,
269 type-bysecond*,
270 type-byminute*,
271 type-byhour*,
272 type-byday*,
273 type-bymonthday*,
274 type-byyearday*,
275 type-byweekno*,
276 type-bymonth*,
277 type-bysetpos*,
278 element wkst { type-weekday }?
279 }
280
281 type-freq = element freq {
282 "SECONDLY" |
283 "MINUTELY" |
284 "HOURLY" |
285 "DAILY" |
286 "WEEKLY" |
287 "MONTHLY" |
288 "YEARLY"
289 }
290
291 type-until = element until {
292 # mbaudier - 2022-05-31 : corrected undefined pattern from RFC 6321
293 value-date |
294 value-date-time
295 }
296
297 type-count = element count {
298 xsd:positiveInteger
299 }
300
301 type-bysecond = element bysecond {
302 xsd:positiveInteger
303 }
304
305 type-byminute = element byminute {
306 xsd:positiveInteger
307 }
308
309 type-byhour = element byhour {
310 xsd:positiveInteger
311 }
312
313 type-weekday = (
314 "SU" |
315 "MO" |
316 "TU" |
317 "WE" |
318 "TH" |
319 "FR" |
320 "SA"
321 )
322
323 type-byday = element byday {
324 # mbaudier - 2022-05-31 : corrected (?) grouping data is only allowed inside list from RFC 6321
325 xsd:integer? |
326 type-weekday
327 }
328
329 type-bymonthday = element bymonthday {
330 xsd:integer
331 }
332
333 type-byyearday = element byyearday {
334 xsd:integer
335 }
336
337 type-byweekno = element byweekno {
338 xsd:integer
339 }
340
341 type-bymonth = element bymonth {
342 xsd:positiveInteger
343 }
344
345 type-bysetpos = element bysetpos {
346 xsd:integer
347 }
348
349 # 3.3.11 TEXT
350
351 value-text = element text {
352 xsd:string
353 }
354
355 # 3.3.12 TIME
356
357 pattern-time = xsd:string {
358 pattern = "\d\d:\d\d:\d\dZ?"
359 }
360
361 value-time = element time {
362 pattern-time
363 }
364
365 # 3.3.13 URI
366
367 value-uri = element uri {
368 xsd:anyURI
369 }
370
371 # 3.3.14 UTC-OFFSET
372
373 value-utc-offset = element utc-offset {
374 # mbaudier - 2022-05-31 : corrected regexp from RFC 6321
375 xsd:string { pattern = "(\+|-)\d\d:\d\d(:\d\d)?" }
376 }
377
378 # UNKNOWN
379
380 value-unknown = element unknown {
381 xsd:string
382 }
383
384 # 3.4 iCalendar Stream
385
386 start = element icalendar {
387 vcalendar+
388 }
389
390 # 3.6 Calendar Components
391
392 vcalendar = element vcalendar {
393 type-calprops,
394 type-component
395 }
396
397 type-calprops = element properties {
398 property-prodid &
399 property-version &
400 property-calscale? &
401 property-method?
402 }
403
404 type-component = element components {
405 (
406 component-vevent |
407 component-vtodo |
408 component-vjournal |
409 component-vfreebusy |
410 component-vtimezone
411 )*
412 }
413
414 # 3.6.1 Event Component
415
416 component-vevent = element vevent {
417 type-eventprop,
418 element components {
419 component-valarm+
420 }?
421 }
422
423 type-eventprop = element properties {
424 property-dtstamp &
425 property-dtstart &
426 property-uid &
427
428 property-class? &
429 property-created? &
430 property-description? &
431 property-geo? &
432 property-last-mod? &
433 property-location? &
434 property-organizer? &
435 property-priority? &
436 property-seq? &
437 property-status-event? &
438
439 property-summary? &
440 property-transp? &
441 property-url? &
442 property-recurid? &
443
444 property-rrule? &
445
446 (property-dtend | property-duration)? &
447
448 property-attach* &
449 property-attendee* &
450 property-categories* &
451 property-comment* &
452 property-contact* &
453 property-exdate* &
454 property-rstatus* &
455 property-related* &
456 property-resources* &
457 property-rdate*
458 }
459
460 # 3.6.2 To-do Component
461
462 component-vtodo = element vtodo {
463 type-todoprop,
464 element components {
465 component-valarm+
466 }?
467 }
468
469 type-todoprop = element properties {
470 property-dtstamp &
471 property-uid &
472
473 property-class? &
474 property-completed? &
475 property-created? &
476 property-description? &
477 property-geo? &
478 property-last-mod? &
479 property-location? &
480 property-organizer? &
481 property-percent? &
482 property-priority? &
483 property-recurid? &
484 property-seq? &
485 property-status-todo? &
486 property-summary? &
487
488 property-url? &
489
490 property-rrule? &
491
492 (
493 (property-dtstart?, property-dtend? ) |
494 (property-dtstart, property-duration)?
495 ) &
496
497 property-attach* &
498 property-attendee* &
499 property-categories* &
500 property-comment* &
501 property-contact* &
502 property-exdate* &
503 property-rstatus* &
504 property-related* &
505 property-resources* &
506 property-rdate*
507 }
508
509 # 3.6.3 Journal Component
510
511 component-vjournal = element vjournal {
512 type-jourprop
513 }
514
515 type-jourprop = element properties {
516 property-dtstamp &
517 property-uid &
518
519 property-class? &
520 property-created? &
521 property-dtstart? &
522 property-last-mod? &
523 property-organizer? &
524 property-recurid? &
525 property-seq? &
526 property-status-jour? &
527 property-summary? &
528 property-url? &
529
530 property-rrule? &
531
532 property-attach* &
533 property-attendee* &
534 property-categories* &
535 property-comment* &
536 property-contact* &
537 property-description? &
538 property-exdate* &
539 property-related* &
540 property-rdate* &
541 property-rstatus*
542 }
543
544 # 3.6.4 Free/Busy Component
545
546 component-vfreebusy = element vfreebusy {
547 type-fbprop
548 }
549
550 type-fbprop = element properties {
551 property-dtstamp &
552 property-uid &
553
554 property-contact? &
555 property-dtstart? &
556 property-dtend? &
557 property-duration? &
558 property-organizer? &
559 property-url? &
560
561 property-attendee* &
562 property-comment* &
563 property-freebusy* &
564 property-rstatus*
565 }
566
567 # 3.6.5 Time Zone Component
568
569 component-vtimezone = element vtimezone {
570 element properties {
571 property-tzid &
572
573 property-last-mod? &
574 # mbaudier - 2022-05-31 : corrected undefined reference from RFC 6321
575 property-tzurl?
576 },
577 element components {
578 (component-standard | component-daylight) &
579 component-standard* &
580 component-daylight*
581 }
582 }
583
584 component-standard = element standard {
585 type-tzprop
586 }
587
588 component-daylight = element daylight {
589 type-tzprop
590 }
591
592 type-tzprop = element properties {
593 property-dtstart &
594 property-tzoffsetto &
595 property-tzoffsetfrom &
596
597 property-rrule? &
598
599 property-comment* &
600 property-rdate* &
601 property-tzname*
602 }
603
604 # 3.6.6 Alarm Component
605
606 component-valarm = element valarm {
607 # mbaudier - 2022-05-31 : corrected undefined reference from RFC 6321
608 type-audioprop | type-dispprop | type-emailprop
609 }
610
611 type-audioprop = element properties {
612 property-action &
613
614 property-trigger &
615
616 (property-duration, property-repeat)? &
617
618 property-attach?
619 }
620
621 type-dispprop = element properties {
622 property-action &
623 property-description &
624 property-trigger &
625 property-summary &
626
627 property-attendee+ &
628
629 (property-duration, property-repeat)? &
630
631 property-attach*
632 }
633
634 type-emailprop = element properties {
635 property-action &
636 property-description &
637 property-trigger &
638
639 (property-duration, property-repeat)?
640 }
641
642 # 3.7 Calendar Properties
643
644 # 3.7.1 Calendar Scale
645
646 property-calscale = element calscale {
647
648 element parameters { empty }?,
649
650 element text { "GREGORIAN" }
651 }
652
653 # 3.7.2 Method
654
655 property-method = element method {
656
657 element parameters { empty }?,
658
659 value-text
660 }
661
662 # 3.7.3 Product Identifier
663
664 property-prodid = element prodid {
665
666 element parameters { empty }?,
667
668 value-text
669 }
670
671 # 3.7.4 Version
672
673 property-version = element version {
674
675 element parameters { empty }?,
676
677 element text { "2.0" }
678 }
679
680 # 3.8 Component Properties
681
682 # 3.8.1 Descriptive Component Properties
683
684 # 3.8.1.1 Attachment
685
686 property-attach = element attach {
687
688 element parameters {
689 fmttypeparam? &
690 encodingparam?
691 }?,
692
693 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
694 (value-uri |
695 value-binary)
696 }
697
698 # 3.8.1.2 Categories
699
700 property-categories = element categories {
701
702 element parameters {
703 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
704 languageparam?
705 }?,
706
707 value-text+
708 }
709
710 # 3.8.1.3 Classification
711
712 property-class = element class {
713
714 element parameters { empty }?,
715
716 element text {
717 "PUBLIC" |
718 "PRIVATE" |
719 "CONFIDENTIAL"
720 }
721 }
722
723 # 3.8.1.4 Comment
724
725 property-comment = element comment {
726
727 element parameters {
728 altrepparam? &
729 languageparam?
730 }?,
731
732 value-text
733 }
734
735 # 3.8.1.5 Description
736
737 property-description = element description {
738
739 element parameters {
740 altrepparam? &
741 languageparam?
742 }?,
743
744 value-text
745 }
746
747 # 3.8.1.6 Geographic Position
748
749 property-geo = element geo {
750
751 element parameters { empty }?,
752
753 element latitude { xsd:float },
754 element longitude { xsd:float }
755 }
756
757 # 3.8.1.7 Location
758
759 property-location = element location {
760
761 element parameters {
762
763 altrepparam? &
764 languageparam?
765 }?,
766
767 value-text
768 }
769
770 # 3.8.1.8 Percent Complete
771
772 property-percent = element percent-complete {
773
774 element parameters { empty }?,
775
776 value-integer
777 }
778
779
780 # 3.8.1.9 Priority
781
782 property-priority = element priority {
783
784 element parameters { empty }?,
785
786 value-integer
787 }
788
789 # 3.8.1.10 Resources
790
791 property-resources = element resources {
792
793 element parameters {
794 altrepparam? &
795 languageparam?
796 }?,
797
798 value-text+
799 }
800
801 # 3.8.1.11 Status
802
803 property-status-event = element status {
804
805 element parameters { empty }?,
806
807 element text {
808 "TENTATIVE" |
809 "CONFIRMED" |
810 "CANCELLED"
811 }
812 }
813
814 property-status-todo = element status {
815
816 element parameters { empty }?,
817
818 element text {
819 "NEEDS-ACTION" |
820 "COMPLETED" |
821 "IN-PROCESS" |
822 "CANCELLED"
823 }
824 }
825
826 property-status-jour = element status {
827
828 element parameters { empty }?,
829
830 element text {
831 "DRAFT" |
832 "FINAL" |
833 "CANCELLED"
834 }
835 }
836
837 # 3.8.1.12 Summary
838
839 property-summary = element summary {
840
841 element parameters {
842 altrepparam? &
843 languageparam?
844 }?,
845
846 value-text
847 }
848
849 # 3.8.2 Date and Time Component Properties
850
851 # 3.8.2.1 Date/Time Completed
852
853 property-completed = element completed {
854
855 element parameters { empty }?,
856
857 value-date-time
858 }
859
860 # 3.8.2.2 Date/Time End
861
862 property-dtend = element dtend {
863
864 element parameters {
865 tzidparam?
866 }?,
867
868 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
869 (value-date-time |
870 value-date)
871 }
872
873 # 3.8.2.3 Date/Time Due
874
875 property-due = element due {
876
877 element parameters {
878 tzidparam?
879 }?,
880
881 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
882 (value-date-time |
883 value-date)
884 }
885
886 # 3.8.2.4 Date/Time Start
887
888 property-dtstart = element dtstart {
889
890 element parameters {
891 tzidparam?
892 }?,
893
894 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
895 (value-date-time |
896 value-date)
897 }
898
899 # 3.8.2.5 Duration
900
901 property-duration = element duration {
902
903 element parameters { empty }?,
904
905 value-duration
906 }
907
908 # 3.8.2.6 Free/Busy Time
909
910 property-freebusy = element freebusy {
911
912 element parameters {
913 fbtypeparam?
914 }?,
915
916
917 value-period+
918 }
919
920 # 3.8.2.7 Time Transparency
921
922 property-transp = element transp {
923
924
925 element parameters { empty }?,
926
927 element text {
928 "OPAQUE" |
929 "TRANSPARENT"
930 }
931 }
932
933 # 3.8.3 Time Zone Component Properties
934
935 # 3.8.3.1 Time Zone Identifier
936
937 property-tzid = element tzid {
938
939 element parameters { empty }?,
940
941 value-text
942 }
943
944 # 3.8.3.2 Time Zone Name
945
946 property-tzname = element tzname {
947
948 element parameters {
949 languageparam?
950 }?,
951
952 value-text
953 }
954
955 # 3.8.3.3 Time Zone Offset From
956
957 property-tzoffsetfrom = element tzoffsetfrom {
958
959 element parameters { empty }?,
960
961 value-utc-offset
962 }
963
964 # 3.8.3.4 Time Zone Offset To
965
966 property-tzoffsetto = element tzoffsetto {
967
968 element parameters { empty }?,
969
970 value-utc-offset
971 }
972
973 # 3.8.3.5 Time Zone URL
974
975 property-tzurl = element tzurl {
976
977 element parameters { empty }?,
978
979 value-uri
980 }
981
982 # 3.8.4 Relationship Component Properties
983
984 # 3.8.4.1 Attendee
985
986 property-attendee = element attendee {
987
988 element parameters {
989 cutypeparam? &
990 memberparam? &
991 roleparam? &
992 partstatparam? &
993 rsvpparam? &
994 deltoparam? &
995 delfromparam? &
996 sentbyparam? &
997 cnparam? &
998 dirparam? &
999 languageparam?
1000 }?,
1001
1002 value-cal-address
1003 }
1004
1005 # 3.8.4.2 Contact
1006
1007 property-contact = element contact {
1008
1009 element parameters {
1010 altrepparam? &
1011 languageparam?
1012 }?,
1013
1014 value-text
1015 }
1016
1017 # 3.8.4.3 Organizer
1018
1019 property-organizer = element organizer {
1020
1021 element parameters {
1022 cnparam? &
1023 dirparam? &
1024 sentbyparam? &
1025 languageparam?
1026 }?,
1027
1028 value-cal-address
1029 }
1030
1031 # 3.8.4.4 Recurrence ID
1032
1033 property-recurid = element recurrence-id {
1034
1035 element parameters {
1036 tzidparam? &
1037 rangeparam?
1038 }?,
1039
1040 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
1041 (value-date-time |
1042 value-date)
1043 }
1044
1045 # 3.8.4.5 Related-To
1046
1047 property-related = element related-to {
1048
1049 element parameters {
1050 reltypeparam?
1051 }?,
1052
1053 value-text
1054 }
1055
1056 # 3.8.4.6 Uniform Resource Locator
1057
1058 property-url = element url {
1059
1060 element parameters { empty }?,
1061
1062 value-uri
1063 }
1064
1065 # 3.8.4.7 Unique Identifier
1066
1067 property-uid = element uid {
1068
1069 element parameters { empty }?,
1070 value-text
1071 }
1072
1073 # 3.8.5 Recurrence Component Properties
1074
1075 # 3.8.5.1 Exception Date/Times
1076
1077 property-exdate = element exdate {
1078
1079 element parameters {
1080 tzidparam?
1081 }?,
1082
1083 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
1084 (value-date-time+ |
1085 value-date+)
1086 }
1087
1088 # 3.8.5.2 Recurrence Date/Times
1089
1090 property-rdate = element rdate {
1091
1092 element parameters {
1093 tzidparam?
1094 }?,
1095
1096 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
1097 (value-date-time+ |
1098 value-date+ |
1099 value-period+)
1100 }
1101
1102 # 3.8.5.3 Recurrence Rule
1103
1104 property-rrule = element rrule {
1105
1106 element parameters { empty }?,
1107
1108 value-recur
1109 }
1110
1111 # 3.8.6 Alarm Component Properties
1112
1113 # 3.8.6.1 Action
1114
1115 property-action = element action {
1116
1117 element parameters { empty }?,
1118 element text {
1119 "AUDIO" |
1120 "DISPLAY" |
1121 "EMAIL"
1122 }
1123 }
1124
1125 # 3.8.6.2 Repeat Count
1126
1127 property-repeat = element repeat {
1128
1129 element parameters { empty }?,
1130
1131 value-integer
1132 }
1133
1134 # 3.8.6.3 Trigger
1135
1136 property-trigger = element trigger {
1137
1138 (
1139 element parameters {
1140 trigrelparam?
1141 }?,
1142
1143 value-duration
1144 ) |
1145 (
1146 element parameters { empty }?,
1147
1148 value-date-time
1149 )
1150 }
1151
1152 # 3.8.7 Change Management Component Properties
1153
1154 # 3.8.7.1 Date/Time Created
1155
1156 property-created = element created {
1157
1158 element parameters { empty }?,
1159
1160 value-date-time
1161 }
1162
1163 # 3.8.7.2 Date/Time Stamp
1164
1165 property-dtstamp = element dtstamp {
1166 element parameters { empty }?,
1167
1168 value-date-time
1169 }
1170
1171 # 3.8.7.3 Last Modified
1172
1173 property-last-mod = element last-modified {
1174
1175 element parameters { empty }?,
1176
1177 value-date-time
1178 }
1179
1180 # 3.8.7.4 Sequence Number
1181
1182 property-seq = element sequence {
1183
1184 element parameters { empty }?,
1185
1186 value-integer
1187 }
1188
1189 # 3.8.8 Miscellaneous Component Properties
1190
1191 # 3.8.8.3 Request Status
1192
1193 property-rstatus = element request-status {
1194
1195 element parameters {
1196 languageparam?
1197 }?,
1198
1199 element code { xsd:string },
1200 element description { xsd:string },
1201 element data { xsd:string }?
1202 }
1203
1204
1205
1206
1207