| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192 |
- # RELAX NG Schema for iCalendar in XML
- # Extract from RFC6321.
- # Erratum 3042 applied.
- # Erratum 3050 applied.
- # Erratum 3314 applied.
- default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
- # 3.2 Property Parameters
- # 3.2.1 Alternate Text Representation
- altrepparam = element altrep {
- value-uri
- }
- # 3.2.2 Common Name
- cnparam = element cn {
- value-text
- }
- # 3.2.3 Calendar User Type
- cutypeparam = element cutype {
- element text {
- "INDIVIDUAL" |
- "GROUP" |
- "RESOURCE" |
- "ROOM" |
- "UNKNOWN"
- }
- }
- # 3.2.4 Delegators
- delfromparam = element delegated-from {
- value-cal-address+
- }
- # 3.2.5 Delegatees
- deltoparam = element delegated-to {
- value-cal-address+
- }
- # 3.2.6 Directory Entry Reference
- dirparam = element dir {
- value-uri
- }
- # 3.2.7 Inline Encoding
- encodingparam = element encoding {
- element text {
- "8BIT" |
- "BASE64"
- }
- }
- # 3.2.8 Format Type
- fmttypeparam = element fmttype {
- value-text
- }
- # 3.2.9 Free/Busy Time Type
- fbtypeparam = element fbtype {
- element text {
- "FREE" |
- "BUSY" |
- "BUSY-UNAVAILABLE" |
- "BUSY-TENTATIVE"
- }
- }
- # 3.2.10 Language
- languageparam = element language {
- value-text
- }
- # 3.2.11 Group or List Membership
- memberparam = element member {
- value-cal-address+
- }
- # 3.2.12 Participation Status
- partstatparam = element partstat {
- type-partstat-event |
- type-partstat-todo |
- type-partstat-jour
- }
- type-partstat-event = (
- element text {
- "NEEDS-ACTION" |
- "ACCEPTED" |
- "DECLINED" |
- "TENTATIVE" |
- "DELEGATED"
- }
- )
- type-partstat-todo = (
- element text {
- "NEEDS-ACTION" |
- "ACCEPTED" |
- "DECLINED" |
- "TENTATIVE" |
- "DELEGATED" |
- "COMPLETED" |
- "IN-PROCESS"
- }
- )
- type-partstat-jour = (
- element text {
- "NEEDS-ACTION" |
- "ACCEPTED" |
- "DECLINED"
- }
- )
- # 3.2.13 Recurrence Identifier Range
- rangeparam = element range {
- element text {
- "THISANDFUTURE"
- }
- }
- # 3.2.14 Alarm Trigger Relationship
- trigrelparam = element related {
- element text {
- "START" |
- "END"
- }
- }
- # 3.2.15 Relationship Type
- reltypeparam = element reltype {
- element text {
- "PARENT" |
- "CHILD" |
- "SIBLING"
- }
- }
- # 3.2.16 Participation Role
- roleparam = element role {
- element text {
- "CHAIR" |
- "REQ-PARTICIPANT" |
- "OPT-PARTICIPANT" |
- "NON-PARTICIPANT"
- }
- }
- # 3.2.17 RSVP Expectation
- rsvpparam = element rsvp {
- value-boolean
- }
- # 3.2.18 Sent By
- sentbyparam = element sent-by {
- value-cal-address
- }
- # 3.2.19 Time Zone Identifier
- tzidparam = element tzid {
- value-text
- }
- # 3.3 Property Value Data Types
- # 3.3.1 BINARY
- value-binary = element binary {
- xsd:string
- }
- # 3.3.2 BOOLEAN
- value-boolean = element boolean {
- xsd:boolean
- }
- # 3.3.3 CAL-ADDRESS
- value-cal-address = element cal-address {
- xsd:anyURI
- }
- # 3.3.4 DATE
- pattern-date = xsd:string {
- pattern = "\d\d\d\d-\d\d-\d\d"
- }
- value-date = element date {
- pattern-date
- }
- # 3.3.5 DATE-TIME
- pattern-date-time = xsd:string {
- pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
- }
- value-date-time = element date-time {
- pattern-date-time
- }
- # 3.3.6 DURATION
- pattern-duration = xsd:string {
- pattern = "(+|-)?P(\d+W)|(\d+D)?"
- ~ "(T(\d+H(\d+M)?(\d+S)?)|"
- ~ "(\d+M(\d+S)?)|"
- ~ "(\d+S))?"
- }
- value-duration = element duration {
- pattern-duration
- }
- # 3.3.7 FLOAT
- value-float = element float {
- xsd:float
- }
- # 3.3.8 INTEGER
- value-integer = element integer {
- xsd:integer
- }
- # 3.3.9 PERIOD
- value-period = element period {
- element start {
- pattern-date-time
- },
- (
- element end {
- pattern-date-time
- } |
- element duration {
- pattern-duration
- }
- )
- }
- # 3.3.10 RECUR
- value-recur = element recur {
- type-freq,
- (type-until | type-count)?,
- element interval {
- xsd:positiveInteger
- }?,
- type-bysecond*,
- type-byminute*,
- type-byhour*,
- type-byday*,
- type-bymonthday*,
- type-byyearday*,
- type-byweekno*,
- type-bymonth*,
- type-bysetpos*,
- element wkst { type-weekday }?
- }
- type-freq = element freq {
- "SECONDLY" |
- "MINUTELY" |
- "HOURLY" |
- "DAILY" |
- "WEEKLY" |
- "MONTHLY" |
- "YEARLY"
- }
- type-until = element until {
- type-date |
- type-date-time
- }
- type-count = element count {
- xsd:positiveInteger
- }
- type-bysecond = element bysecond {
- xsd:nonNegativeInteger
- }
- type-byminute = element byminute {
- xsd:nonNegativeInteger
- }
- type-byhour = element byhour {
- xsd:nonNegativeInteger
- }
- type-weekday = (
- "SU" |
- "MO" |
- "TU" |
- "WE" |
- "TH" |
- "FR" |
- "SA"
- )
- type-byday = element byday {
- xsd:integer?,
- type-weekday
- }
- type-bymonthday = element bymonthday {
- xsd:integer
- }
- type-byyearday = element byyearday {
- xsd:integer
- }
- type-byweekno = element byweekno {
- xsd:integer
- }
- type-bymonth = element bymonth {
- xsd:positiveInteger
- }
- type-bysetpos = element bysetpos {
- xsd:integer
- }
- # 3.3.11 TEXT
- value-text = element text {
- xsd:string
- }
- # 3.3.12 TIME
- pattern-time = xsd:string {
- pattern = "\d\d:\d\d:\d\dZ?"
- }
- value-time = element time {
- pattern-time
- }
- # 3.3.13 URI
- value-uri = element uri {
- xsd:anyURI
- }
- # 3.3.14 UTC-OFFSET
- value-utc-offset = element utc-offset {
- xsd:string { pattern = "(+|-)\d\d:\d\d(:\d\d)?" }
- }
- # UNKNOWN
- value-unknown = element unknown {
- xsd:string
- }
- # 3.4 iCalendar Stream
- start = element icalendar {
- vcalendar+
- }
- # 3.6 Calendar Components
- vcalendar = element vcalendar {
- type-calprops,
- type-component
- }
- type-calprops = element properties {
- property-prodid &
- property-version &
- property-calscale? &
- property-method?
- }
- type-component = element components {
- (
- component-vevent |
- component-vtodo |
- component-vjournal |
- component-vfreebusy |
- component-vtimezone
- )*
- }
- # 3.6.1 Event Component
- component-vevent = element vevent {
- type-eventprop,
- element components {
- component-valarm+
- }?
- }
- type-eventprop = element properties {
- property-dtstamp &
- property-dtstart &
- property-uid &
- property-class? &
- property-created? &
- property-description? &
- property-geo? &
- property-last-mod? &
- property-location? &
- property-organizer? &
- property-priority? &
- property-seq? &
- property-status-event? &
- property-summary? &
- property-transp? &
- property-url? &
- property-recurid? &
- property-rrule? &
- (property-dtend | property-duration)? &
- property-attach* &
- property-attendee* &
- property-categories* &
- property-comment* &
- property-contact* &
- property-exdate* &
- property-rstatus* &
- property-related* &
- property-resources* &
- property-rdate*
- }
- # 3.6.2 To-do Component
- component-vtodo = element vtodo {
- type-todoprop,
- element components {
- component-valarm+
- }?
- }
- type-todoprop = element properties {
- property-dtstamp &
- property-uid &
- property-class? &
- property-completed? &
- property-created? &
- property-description? &
- property-geo? &
- property-last-mod? &
- property-location? &
- property-organizer? &
- property-percent? &
- property-priority? &
- property-recurid? &
- property-seq? &
- property-status-todo? &
- property-summary? &
- property-url? &
- property-rrule? &
- (
- (property-dtstart?, property-dtend? ) |
- (property-dtstart, property-duration)?
- ) &
- property-attach* &
- property-attendee* &
- property-categories* &
- property-comment* &
- property-contact* &
- property-exdate* &
- property-rstatus* &
- property-related* &
- property-resources* &
- property-rdate*
- }
- # 3.6.3 Journal Component
- component-vjournal = element vjournal {
- type-jourprop
- }
- type-jourprop = element properties {
- property-dtstamp &
- property-uid &
- property-class? &
- property-created? &
- property-dtstart? &
- property-last-mod? &
- property-organizer? &
- property-recurid? &
- property-seq? &
- property-status-jour? &
- property-summary? &
- property-url? &
- property-rrule? &
- property-attach* &
- property-attendee* &
- property-categories* &
- property-comment* &
- property-contact* &
- property-description? &
- property-exdate* &
- property-related* &
- property-rdate* &
- property-rstatus*
- }
- # 3.6.4 Free/Busy Component
- component-vfreebusy = element vfreebusy {
- type-fbprop
- }
- type-fbprop = element properties {
- property-dtstamp &
- property-uid &
- property-contact? &
- property-dtstart? &
- property-dtend? &
- property-duration? &
- property-organizer? &
- property-url? &
- property-attendee* &
- property-comment* &
- property-freebusy* &
- property-rstatus*
- }
- # 3.6.5 Time Zone Component
- component-vtimezone = element vtimezone {
- element properties {
- property-tzid &
- property-last-mod? &
- property-tzurl?
- },
- element components {
- (component-standard | component-daylight) &
- component-standard* &
- component-daylight*
- }
- }
- component-standard = element standard {
- type-tzprop
- }
- component-daylight = element daylight {
- type-tzprop
- }
- type-tzprop = element properties {
- property-dtstart &
- property-tzoffsetto &
- property-tzoffsetfrom &
- property-rrule? &
- property-comment* &
- property-rdate* &
- property-tzname*
- }
- # 3.6.6 Alarm Component
- component-valarm = element valarm {
- type-audioprop | type-dispprop | type-emailprop
- }
- type-audioprop = element properties {
- property-action &
- property-trigger &
- (property-duration, property-repeat)? &
- property-attach?
- }
- type-emailprop = element properties {
- property-action &
- property-description &
- property-trigger &
- property-summary &
- property-attendee+ &
- (property-duration, property-repeat)? &
- property-attach*
- }
- type-dispprop = element properties {
- property-action &
- property-description &
- property-trigger &
- (property-duration, property-repeat)?
- }
- # 3.7 Calendar Properties
- # 3.7.1 Calendar Scale
- property-calscale = element calscale {
- element parameters { empty }?,
- element text { "GREGORIAN" }
- }
- # 3.7.2 Method
- property-method = element method {
- element parameters { empty }?,
- value-text
- }
- # 3.7.3 Product Identifier
- property-prodid = element prodid {
- element parameters { empty }?,
- value-text
- }
- # 3.7.4 Version
- property-version = element version {
- element parameters { empty }?,
- element text { "2.0" }
- }
- # 3.8 Component Properties
- # 3.8.1 Descriptive Component Properties
- # 3.8.1.1 Attachment
- property-attach = element attach {
- element parameters {
- fmttypeparam? &
- encodingparam?
- }?,
- value-uri | value-binary
- }
- # 3.8.1.2 Categories
- property-categories = element categories {
- element parameters {
- languageparam? &
- }?,
- value-text+
- }
- # 3.8.1.3 Classification
- property-class = element class {
- element parameters { empty }?,
- element text {
- "PUBLIC" |
- "PRIVATE" |
- "CONFIDENTIAL"
- }
- }
- # 3.8.1.4 Comment
- property-comment = element comment {
- element parameters {
- altrepparam? &
- languageparam?
- }?,
- value-text
- }
- # 3.8.1.5 Description
- property-description = element description {
- element parameters {
- altrepparam? &
- languageparam?
- }?,
- value-text
- }
- # 3.8.1.6 Geographic Position
- property-geo = element geo {
- element parameters { empty }?,
- element latitude { xsd:float },
- element longitude { xsd:float }
- }
- # 3.8.1.7 Location
- property-location = element location {
- element parameters {
- altrepparam? &
- languageparam?
- }?,
- value-text
- }
- # 3.8.1.8 Percent Complete
- property-percent = element percent-complete {
- element parameters { empty }?,
- value-integer
- }
- # 3.8.1.9 Priority
- property-priority = element priority {
- element parameters { empty }?,
- value-integer
- }
- # 3.8.1.10 Resources
- property-resources = element resources {
- element parameters {
- altrepparam? &
- languageparam?
- }?,
- value-text+
- }
- # 3.8.1.11 Status
- property-status-event = element status {
- element parameters { empty }?,
- element text {
- "TENTATIVE" |
- "CONFIRMED" |
- "CANCELLED"
- }
- }
- property-status-todo = element status {
- element parameters { empty }?,
- element text {
- "NEEDS-ACTION" |
- "COMPLETED" |
- "IN-PROCESS" |
- "CANCELLED"
- }
- }
- property-status-jour = element status {
- element parameters { empty }?,
- element text {
- "DRAFT" |
- "FINAL" |
- "CANCELLED"
- }
- }
- # 3.8.1.12 Summary
- property-summary = element summary {
- element parameters {
- altrepparam? &
- languageparam?
- }?,
- value-text
- }
- # 3.8.2 Date and Time Component Properties
- # 3.8.2.1 Date/Time Completed
- property-completed = element completed {
- element parameters { empty }?,
- value-date-time
- }
- # 3.8.2.2 Date/Time End
- property-dtend = element dtend {
- element parameters {
- tzidparam?
- }?,
- value-date-time |
- value-date
- }
- # 3.8.2.3 Date/Time Due
- property-due = element due {
- element parameters {
- tzidparam?
- }?,
- value-date-time |
- value-date
- }
- # 3.8.2.4 Date/Time Start
- property-dtstart = element dtstart {
- element parameters {
- tzidparam?
- }?,
- value-date-time |
- value-date
- }
- # 3.8.2.5 Duration
- property-duration = element duration {
- element parameters { empty }?,
- value-duration
- }
- # 3.8.2.6 Free/Busy Time
- property-freebusy = element freebusy {
- element parameters {
- fbtypeparam?
- }?,
- value-period+
- }
- # 3.8.2.7 Time Transparency
- property-transp = element transp {
- element parameters { empty }?,
- element text {
- "OPAQUE" |
- "TRANSPARENT"
- }
- }
- # 3.8.3 Time Zone Component Properties
- # 3.8.3.1 Time Zone Identifier
- property-tzid = element tzid {
- element parameters { empty }?,
- value-text
- }
- # 3.8.3.2 Time Zone Name
- property-tzname = element tzname {
- element parameters {
- languageparam?
- }?,
- value-text
- }
- # 3.8.3.3 Time Zone Offset From
- property-tzoffsetfrom = element tzoffsetfrom {
- element parameters { empty }?,
- value-utc-offset
- }
- # 3.8.3.4 Time Zone Offset To
- property-tzoffsetto = element tzoffsetto {
- element parameters { empty }?,
- value-utc-offset
- }
- # 3.8.3.5 Time Zone URL
- property-tzurl = element tzurl {
- element parameters { empty }?,
- value-uri
- }
- # 3.8.4 Relationship Component Properties
- # 3.8.4.1 Attendee
- property-attendee = element attendee {
- element parameters {
- cutypeparam? &
- memberparam? &
- roleparam? &
- partstatparam? &
- rsvpparam? &
- deltoparam? &
- delfromparam? &
- sentbyparam? &
- cnparam? &
- dirparam? &
- languageparam?
- }?,
- value-cal-address
- }
- # 3.8.4.2 Contact
- property-contact = element contact {
- element parameters {
- altrepparam? &
- languageparam?
- }?,
- value-text
- }
- # 3.8.4.3 Organizer
- property-organizer = element organizer {
- element parameters {
- cnparam? &
- dirparam? &
- sentbyparam? &
- languageparam?
- }?,
- value-cal-address
- }
- # 3.8.4.4 Recurrence ID
- property-recurid = element recurrence-id {
- element parameters {
- tzidparam? &
- rangeparam?
- }?,
- value-date-time |
- value-date
- }
- # 3.8.4.5 Related-To
- property-related = element related-to {
- element parameters {
- reltypeparam?
- }?,
- value-text
- }
- # 3.8.4.6 Uniform Resource Locator
- property-url = element url {
- element parameters { empty }?,
- value-uri
- }
- # 3.8.4.7 Unique Identifier
- property-uid = element uid {
- element parameters { empty }?,
- value-text
- }
- # 3.8.5 Recurrence Component Properties
- # 3.8.5.1 Exception Date/Times
- property-exdate = element exdate {
- element parameters {
- tzidparam?
- }?,
- value-date-time+ |
- value-date+
- }
- # 3.8.5.2 Recurrence Date/Times
- property-rdate = element rdate {
- element parameters {
- tzidparam?
- }?,
- value-date-time+ |
- value-date+ |
- value-period+
- }
- # 3.8.5.3 Recurrence Rule
- property-rrule = element rrule {
- element parameters { empty }?,
- value-recur
- }
- # 3.8.6 Alarm Component Properties
- # 3.8.6.1 Action
- property-action = element action {
- element parameters { empty }?,
- element text {
- "AUDIO" |
- "DISPLAY" |
- "EMAIL"
- }
- }
- # 3.8.6.2 Repeat Count
- property-repeat = element repeat {
- element parameters { empty }?,
- value-integer
- }
- # 3.8.6.3 Trigger
- property-trigger = element trigger {
- (
- element parameters {
- trigrelparam?
- }?,
- value-duration
- ) |
- (
- element parameters { empty }?,
- value-date-time
- )
- }
- # 3.8.7 Change Management Component Properties
- # 3.8.7.1 Date/Time Created
- property-created = element created {
- element parameters { empty }?,
- value-date-time
- }
- # 3.8.7.2 Date/Time Stamp
- property-dtstamp = element dtstamp {
- element parameters { empty }?,
- value-date-time
- }
- # 3.8.7.3 Last Modified
- property-last-mod = element last-modified {
- element parameters { empty }?,
- value-date-time
- }
- # 3.8.7.4 Sequence Number
- property-seq = element sequence {
- element parameters { empty }?,
- value-integer
- }
- # 3.8.8 Miscellaneous Component Properties
- # 3.8.8.3 Request Status
- property-rstatus = element request-status {
- element parameters {
- languageparam?
- }?,
- element code { xsd:string },
- element description { xsd:string },
- element data { xsd:string }?
- }
|