1 default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
3 # 3.2 Property Parameters
5 # 3.2.1 Alternate Text Representation
7 altrepparam = element altrep {
13 cnparam = element cn {
17 # 3.2.3 Calendar User Type
19 cutypeparam = element cutype {
31 delfromparam = element delegated-from {
37 deltoparam = element delegated-to {
41 # 3.2.6 Directory Entry Reference
43 dirparam = element dir {
47 # 3.2.7 Inline Encoding
49 encodingparam = element encoding {
58 fmttypeparam = element fmttype {
62 # 3.2.9 Free/Busy Time Type
64 fbtypeparam = element fbtype {
75 languageparam = element language {
79 # 3.2.11 Group or List Membership
81 memberparam = element member {
85 # 3.2.12 Participation Status
87 partstatparam = element partstat {
93 type-partstat-event = (
103 type-partstat-todo = (
115 type-partstat-jour = (
123 # 3.2.13 Recurrence Identifier Range
125 rangeparam = element range {
131 # 3.2.14 Alarm Trigger Relationship
133 trigrelparam = element related {
140 # 3.2.15 Relationship Type
142 reltypeparam = element reltype {
150 # 3.2.16 Participation Role
152 roleparam = element role {
161 # 3.2.17 RSVP Expectation
163 rsvpparam = element rsvp {
169 sentbyparam = element sent-by {
173 # 3.2.19 Time Zone Identifier
175 tzidparam = element tzid {
179 # 3.3 Property Value Data Types
183 value-binary = element binary {
189 value-boolean = element boolean {
195 value-cal-address = element cal-address {
201 pattern-date = xsd:string {
202 pattern = "\d\d\d\d-\d\d-\d\d"
205 value-date = element date {
211 pattern-date-time = xsd:string {
212 pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
215 value-date-time = element date-time {
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)?)|"
229 value-duration = element duration {
235 value-float = element float {
241 value-integer = element integer {
247 value-period = element period {
263 value-recur = element recur {
265 (type-until | type-count)?,
278 element wkst { type-weekday }?
281 type-freq = element freq {
291 type-until = element until {
292 # mbaudier - 2022-05-31 : corrected undefined pattern from RFC 6321
297 type-count = element count {
301 type-bysecond = element bysecond {
305 type-byminute = element byminute {
309 type-byhour = element byhour {
323 type-byday = element byday {
324 # mbaudier - 2022-05-31 : corrected (?) grouping data is only allowed inside list from RFC 6321
329 type-bymonthday = element bymonthday {
333 type-byyearday = element byyearday {
337 type-byweekno = element byweekno {
341 type-bymonth = element bymonth {
345 type-bysetpos = element bysetpos {
351 value-text = element text {
357 pattern-time = xsd:string {
358 pattern = "\d\d:\d\d:\d\dZ?"
361 value-time = element time {
367 value-uri = element uri {
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)?" }
380 value-unknown = element unknown {
384 # 3.4 iCalendar Stream
386 start = element icalendar {
390 # 3.6 Calendar Components
392 vcalendar = element vcalendar {
397 type-calprops = element properties {
404 type-component = element components {
409 component-vfreebusy |
414 # 3.6.1 Event Component
416 component-vevent = element vevent {
423 type-eventprop = element properties {
430 property-description? &
434 property-organizer? &
437 property-status-event? &
446 (property-dtend | property-duration)? &
450 property-categories* &
456 property-resources* &
460 # 3.6.2 To-do Component
462 component-vtodo = element vtodo {
469 type-todoprop = element properties {
474 property-completed? &
476 property-description? &
480 property-organizer? &
485 property-status-todo? &
493 (property-dtstart?, property-dtend? ) |
494 (property-dtstart, property-duration)?
499 property-categories* &
505 property-resources* &
509 # 3.6.3 Journal Component
511 component-vjournal = element vjournal {
515 type-jourprop = element properties {
523 property-organizer? &
526 property-status-jour? &
534 property-categories* &
537 property-description? &
544 # 3.6.4 Free/Busy Component
546 component-vfreebusy = element vfreebusy {
550 type-fbprop = element properties {
558 property-organizer? &
567 # 3.6.5 Time Zone Component
569 component-vtimezone = element vtimezone {
574 # mbaudier - 2022-05-31 : corrected undefined reference from RFC 6321
578 (component-standard | component-daylight) &
579 component-standard* &
584 component-standard = element standard {
588 component-daylight = element daylight {
592 type-tzprop = element properties {
594 property-tzoffsetto &
595 property-tzoffsetfrom &
604 # 3.6.6 Alarm Component
606 component-valarm = element valarm {
607 # mbaudier - 2022-05-31 : corrected undefined reference from RFC 6321
608 type-audioprop | type-dispprop | type-emailprop
611 type-audioprop = element properties {
616 (property-duration, property-repeat)? &
621 type-dispprop = element properties {
623 property-description &
629 (property-duration, property-repeat)? &
634 type-emailprop = element properties {
636 property-description &
639 (property-duration, property-repeat)?
642 # 3.7 Calendar Properties
644 # 3.7.1 Calendar Scale
646 property-calscale = element calscale {
648 element parameters { empty }?,
650 element text { "GREGORIAN" }
655 property-method = element method {
657 element parameters { empty }?,
662 # 3.7.3 Product Identifier
664 property-prodid = element prodid {
666 element parameters { empty }?,
673 property-version = element version {
675 element parameters { empty }?,
677 element text { "2.0" }
680 # 3.8 Component Properties
682 # 3.8.1 Descriptive Component Properties
686 property-attach = element attach {
693 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
700 property-categories = element categories {
703 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
710 # 3.8.1.3 Classification
712 property-class = element class {
714 element parameters { empty }?,
725 property-comment = element comment {
735 # 3.8.1.5 Description
737 property-description = element description {
747 # 3.8.1.6 Geographic Position
749 property-geo = element geo {
751 element parameters { empty }?,
753 element latitude { xsd:float },
754 element longitude { xsd:float }
759 property-location = element location {
770 # 3.8.1.8 Percent Complete
772 property-percent = element percent-complete {
774 element parameters { empty }?,
782 property-priority = element priority {
784 element parameters { empty }?,
791 property-resources = element resources {
803 property-status-event = element status {
805 element parameters { empty }?,
814 property-status-todo = element status {
816 element parameters { empty }?,
826 property-status-jour = element status {
828 element parameters { empty }?,
839 property-summary = element summary {
849 # 3.8.2 Date and Time Component Properties
851 # 3.8.2.1 Date/Time Completed
853 property-completed = element completed {
855 element parameters { empty }?,
860 # 3.8.2.2 Date/Time End
862 property-dtend = element dtend {
868 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
873 # 3.8.2.3 Date/Time Due
875 property-due = element due {
881 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
886 # 3.8.2.4 Date/Time Start
888 property-dtstart = element dtstart {
894 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
901 property-duration = element duration {
903 element parameters { empty }?,
908 # 3.8.2.6 Free/Busy Time
910 property-freebusy = element freebusy {
920 # 3.8.2.7 Time Transparency
922 property-transp = element transp {
925 element parameters { empty }?,
933 # 3.8.3 Time Zone Component Properties
935 # 3.8.3.1 Time Zone Identifier
937 property-tzid = element tzid {
939 element parameters { empty }?,
944 # 3.8.3.2 Time Zone Name
946 property-tzname = element tzname {
955 # 3.8.3.3 Time Zone Offset From
957 property-tzoffsetfrom = element tzoffsetfrom {
959 element parameters { empty }?,
964 # 3.8.3.4 Time Zone Offset To
966 property-tzoffsetto = element tzoffsetto {
968 element parameters { empty }?,
973 # 3.8.3.5 Time Zone URL
975 property-tzurl = element tzurl {
977 element parameters { empty }?,
982 # 3.8.4 Relationship Component Properties
986 property-attendee = element attendee {
1007 property-contact = element contact {
1009 element parameters {
1019 property-organizer = element organizer {
1021 element parameters {
1031 # 3.8.4.4 Recurrence ID
1033 property-recurid = element recurrence-id {
1035 element parameters {
1040 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
1045 # 3.8.4.5 Related-To
1047 property-related = element related-to {
1049 element parameters {
1056 # 3.8.4.6 Uniform Resource Locator
1058 property-url = element url {
1060 element parameters { empty }?,
1065 # 3.8.4.7 Unique Identifier
1067 property-uid = element uid {
1069 element parameters { empty }?,
1073 # 3.8.5 Recurrence Component Properties
1075 # 3.8.5.1 Exception Date/Times
1077 property-exdate = element exdate {
1079 element parameters {
1083 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
1088 # 3.8.5.2 Recurrence Date/Times
1090 property-rdate = element rdate {
1092 element parameters {
1096 # mbaudier - 2022-05-31 : corrected syntax error from RFC 6321
1102 # 3.8.5.3 Recurrence Rule
1104 property-rrule = element rrule {
1106 element parameters { empty }?,
1111 # 3.8.6 Alarm Component Properties
1115 property-action = element action {
1117 element parameters { empty }?,
1125 # 3.8.6.2 Repeat Count
1127 property-repeat = element repeat {
1129 element parameters { empty }?,
1136 property-trigger = element trigger {
1139 element parameters {
1146 element parameters { empty }?,
1152 # 3.8.7 Change Management Component Properties
1154 # 3.8.7.1 Date/Time Created
1156 property-created = element created {
1158 element parameters { empty }?,
1163 # 3.8.7.2 Date/Time Stamp
1165 property-dtstamp = element dtstamp {
1166 element parameters { empty }?,
1171 # 3.8.7.3 Last Modified
1173 property-last-mod = element last-modified {
1175 element parameters { empty }?,
1180 # 3.8.7.4 Sequence Number
1182 property-seq = element sequence {
1184 element parameters { empty }?,
1189 # 3.8.8 Miscellaneous Component Properties
1191 # 3.8.8.3 Request Status
1193 property-rstatus = element request-status {
1195 element parameters {
1199 element code { xsd:string },
1200 element description { xsd:string },
1201 element data { xsd:string }?