xcal.rng 18 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192
  1. # RELAX NG Schema for iCalendar in XML
  2. # Extract from RFC6321.
  3. # Erratum 3042 applied.
  4. # Erratum 3050 applied.
  5. # Erratum 3314 applied.
  6. default namespace = "urn:ietf:params:xml:ns:icalendar-2.0"
  7. # 3.2 Property Parameters
  8. # 3.2.1 Alternate Text Representation
  9. altrepparam = element altrep {
  10. value-uri
  11. }
  12. # 3.2.2 Common Name
  13. cnparam = element cn {
  14. value-text
  15. }
  16. # 3.2.3 Calendar User Type
  17. cutypeparam = element cutype {
  18. element text {
  19. "INDIVIDUAL" |
  20. "GROUP" |
  21. "RESOURCE" |
  22. "ROOM" |
  23. "UNKNOWN"
  24. }
  25. }
  26. # 3.2.4 Delegators
  27. delfromparam = element delegated-from {
  28. value-cal-address+
  29. }
  30. # 3.2.5 Delegatees
  31. deltoparam = element delegated-to {
  32. value-cal-address+
  33. }
  34. # 3.2.6 Directory Entry Reference
  35. dirparam = element dir {
  36. value-uri
  37. }
  38. # 3.2.7 Inline Encoding
  39. encodingparam = element encoding {
  40. element text {
  41. "8BIT" |
  42. "BASE64"
  43. }
  44. }
  45. # 3.2.8 Format Type
  46. fmttypeparam = element fmttype {
  47. value-text
  48. }
  49. # 3.2.9 Free/Busy Time Type
  50. fbtypeparam = element fbtype {
  51. element text {
  52. "FREE" |
  53. "BUSY" |
  54. "BUSY-UNAVAILABLE" |
  55. "BUSY-TENTATIVE"
  56. }
  57. }
  58. # 3.2.10 Language
  59. languageparam = element language {
  60. value-text
  61. }
  62. # 3.2.11 Group or List Membership
  63. memberparam = element member {
  64. value-cal-address+
  65. }
  66. # 3.2.12 Participation Status
  67. partstatparam = element partstat {
  68. type-partstat-event |
  69. type-partstat-todo |
  70. type-partstat-jour
  71. }
  72. type-partstat-event = (
  73. element text {
  74. "NEEDS-ACTION" |
  75. "ACCEPTED" |
  76. "DECLINED" |
  77. "TENTATIVE" |
  78. "DELEGATED"
  79. }
  80. )
  81. type-partstat-todo = (
  82. element text {
  83. "NEEDS-ACTION" |
  84. "ACCEPTED" |
  85. "DECLINED" |
  86. "TENTATIVE" |
  87. "DELEGATED" |
  88. "COMPLETED" |
  89. "IN-PROCESS"
  90. }
  91. )
  92. type-partstat-jour = (
  93. element text {
  94. "NEEDS-ACTION" |
  95. "ACCEPTED" |
  96. "DECLINED"
  97. }
  98. )
  99. # 3.2.13 Recurrence Identifier Range
  100. rangeparam = element range {
  101. element text {
  102. "THISANDFUTURE"
  103. }
  104. }
  105. # 3.2.14 Alarm Trigger Relationship
  106. trigrelparam = element related {
  107. element text {
  108. "START" |
  109. "END"
  110. }
  111. }
  112. # 3.2.15 Relationship Type
  113. reltypeparam = element reltype {
  114. element text {
  115. "PARENT" |
  116. "CHILD" |
  117. "SIBLING"
  118. }
  119. }
  120. # 3.2.16 Participation Role
  121. roleparam = element role {
  122. element text {
  123. "CHAIR" |
  124. "REQ-PARTICIPANT" |
  125. "OPT-PARTICIPANT" |
  126. "NON-PARTICIPANT"
  127. }
  128. }
  129. # 3.2.17 RSVP Expectation
  130. rsvpparam = element rsvp {
  131. value-boolean
  132. }
  133. # 3.2.18 Sent By
  134. sentbyparam = element sent-by {
  135. value-cal-address
  136. }
  137. # 3.2.19 Time Zone Identifier
  138. tzidparam = element tzid {
  139. value-text
  140. }
  141. # 3.3 Property Value Data Types
  142. # 3.3.1 BINARY
  143. value-binary = element binary {
  144. xsd:string
  145. }
  146. # 3.3.2 BOOLEAN
  147. value-boolean = element boolean {
  148. xsd:boolean
  149. }
  150. # 3.3.3 CAL-ADDRESS
  151. value-cal-address = element cal-address {
  152. xsd:anyURI
  153. }
  154. # 3.3.4 DATE
  155. pattern-date = xsd:string {
  156. pattern = "\d\d\d\d-\d\d-\d\d"
  157. }
  158. value-date = element date {
  159. pattern-date
  160. }
  161. # 3.3.5 DATE-TIME
  162. pattern-date-time = xsd:string {
  163. pattern = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ?"
  164. }
  165. value-date-time = element date-time {
  166. pattern-date-time
  167. }
  168. # 3.3.6 DURATION
  169. pattern-duration = xsd:string {
  170. pattern = "(+|-)?P(\d+W)|(\d+D)?"
  171. ~ "(T(\d+H(\d+M)?(\d+S)?)|"
  172. ~ "(\d+M(\d+S)?)|"
  173. ~ "(\d+S))?"
  174. }
  175. value-duration = element duration {
  176. pattern-duration
  177. }
  178. # 3.3.7 FLOAT
  179. value-float = element float {
  180. xsd:float
  181. }
  182. # 3.3.8 INTEGER
  183. value-integer = element integer {
  184. xsd:integer
  185. }
  186. # 3.3.9 PERIOD
  187. value-period = element period {
  188. element start {
  189. pattern-date-time
  190. },
  191. (
  192. element end {
  193. pattern-date-time
  194. } |
  195. element duration {
  196. pattern-duration
  197. }
  198. )
  199. }
  200. # 3.3.10 RECUR
  201. value-recur = element recur {
  202. type-freq,
  203. (type-until | type-count)?,
  204. element interval {
  205. xsd:positiveInteger
  206. }?,
  207. type-bysecond*,
  208. type-byminute*,
  209. type-byhour*,
  210. type-byday*,
  211. type-bymonthday*,
  212. type-byyearday*,
  213. type-byweekno*,
  214. type-bymonth*,
  215. type-bysetpos*,
  216. element wkst { type-weekday }?
  217. }
  218. type-freq = element freq {
  219. "SECONDLY" |
  220. "MINUTELY" |
  221. "HOURLY" |
  222. "DAILY" |
  223. "WEEKLY" |
  224. "MONTHLY" |
  225. "YEARLY"
  226. }
  227. type-until = element until {
  228. type-date |
  229. type-date-time
  230. }
  231. type-count = element count {
  232. xsd:positiveInteger
  233. }
  234. type-bysecond = element bysecond {
  235. xsd:nonNegativeInteger
  236. }
  237. type-byminute = element byminute {
  238. xsd:nonNegativeInteger
  239. }
  240. type-byhour = element byhour {
  241. xsd:nonNegativeInteger
  242. }
  243. type-weekday = (
  244. "SU" |
  245. "MO" |
  246. "TU" |
  247. "WE" |
  248. "TH" |
  249. "FR" |
  250. "SA"
  251. )
  252. type-byday = element byday {
  253. xsd:integer?,
  254. type-weekday
  255. }
  256. type-bymonthday = element bymonthday {
  257. xsd:integer
  258. }
  259. type-byyearday = element byyearday {
  260. xsd:integer
  261. }
  262. type-byweekno = element byweekno {
  263. xsd:integer
  264. }
  265. type-bymonth = element bymonth {
  266. xsd:positiveInteger
  267. }
  268. type-bysetpos = element bysetpos {
  269. xsd:integer
  270. }
  271. # 3.3.11 TEXT
  272. value-text = element text {
  273. xsd:string
  274. }
  275. # 3.3.12 TIME
  276. pattern-time = xsd:string {
  277. pattern = "\d\d:\d\d:\d\dZ?"
  278. }
  279. value-time = element time {
  280. pattern-time
  281. }
  282. # 3.3.13 URI
  283. value-uri = element uri {
  284. xsd:anyURI
  285. }
  286. # 3.3.14 UTC-OFFSET
  287. value-utc-offset = element utc-offset {
  288. xsd:string { pattern = "(+|-)\d\d:\d\d(:\d\d)?" }
  289. }
  290. # UNKNOWN
  291. value-unknown = element unknown {
  292. xsd:string
  293. }
  294. # 3.4 iCalendar Stream
  295. start = element icalendar {
  296. vcalendar+
  297. }
  298. # 3.6 Calendar Components
  299. vcalendar = element vcalendar {
  300. type-calprops,
  301. type-component
  302. }
  303. type-calprops = element properties {
  304. property-prodid &
  305. property-version &
  306. property-calscale? &
  307. property-method?
  308. }
  309. type-component = element components {
  310. (
  311. component-vevent |
  312. component-vtodo |
  313. component-vjournal |
  314. component-vfreebusy |
  315. component-vtimezone
  316. )*
  317. }
  318. # 3.6.1 Event Component
  319. component-vevent = element vevent {
  320. type-eventprop,
  321. element components {
  322. component-valarm+
  323. }?
  324. }
  325. type-eventprop = element properties {
  326. property-dtstamp &
  327. property-dtstart &
  328. property-uid &
  329. property-class? &
  330. property-created? &
  331. property-description? &
  332. property-geo? &
  333. property-last-mod? &
  334. property-location? &
  335. property-organizer? &
  336. property-priority? &
  337. property-seq? &
  338. property-status-event? &
  339. property-summary? &
  340. property-transp? &
  341. property-url? &
  342. property-recurid? &
  343. property-rrule? &
  344. (property-dtend | property-duration)? &
  345. property-attach* &
  346. property-attendee* &
  347. property-categories* &
  348. property-comment* &
  349. property-contact* &
  350. property-exdate* &
  351. property-rstatus* &
  352. property-related* &
  353. property-resources* &
  354. property-rdate*
  355. }
  356. # 3.6.2 To-do Component
  357. component-vtodo = element vtodo {
  358. type-todoprop,
  359. element components {
  360. component-valarm+
  361. }?
  362. }
  363. type-todoprop = element properties {
  364. property-dtstamp &
  365. property-uid &
  366. property-class? &
  367. property-completed? &
  368. property-created? &
  369. property-description? &
  370. property-geo? &
  371. property-last-mod? &
  372. property-location? &
  373. property-organizer? &
  374. property-percent? &
  375. property-priority? &
  376. property-recurid? &
  377. property-seq? &
  378. property-status-todo? &
  379. property-summary? &
  380. property-url? &
  381. property-rrule? &
  382. (
  383. (property-dtstart?, property-dtend? ) |
  384. (property-dtstart, property-duration)?
  385. ) &
  386. property-attach* &
  387. property-attendee* &
  388. property-categories* &
  389. property-comment* &
  390. property-contact* &
  391. property-exdate* &
  392. property-rstatus* &
  393. property-related* &
  394. property-resources* &
  395. property-rdate*
  396. }
  397. # 3.6.3 Journal Component
  398. component-vjournal = element vjournal {
  399. type-jourprop
  400. }
  401. type-jourprop = element properties {
  402. property-dtstamp &
  403. property-uid &
  404. property-class? &
  405. property-created? &
  406. property-dtstart? &
  407. property-last-mod? &
  408. property-organizer? &
  409. property-recurid? &
  410. property-seq? &
  411. property-status-jour? &
  412. property-summary? &
  413. property-url? &
  414. property-rrule? &
  415. property-attach* &
  416. property-attendee* &
  417. property-categories* &
  418. property-comment* &
  419. property-contact* &
  420. property-description? &
  421. property-exdate* &
  422. property-related* &
  423. property-rdate* &
  424. property-rstatus*
  425. }
  426. # 3.6.4 Free/Busy Component
  427. component-vfreebusy = element vfreebusy {
  428. type-fbprop
  429. }
  430. type-fbprop = element properties {
  431. property-dtstamp &
  432. property-uid &
  433. property-contact? &
  434. property-dtstart? &
  435. property-dtend? &
  436. property-duration? &
  437. property-organizer? &
  438. property-url? &
  439. property-attendee* &
  440. property-comment* &
  441. property-freebusy* &
  442. property-rstatus*
  443. }
  444. # 3.6.5 Time Zone Component
  445. component-vtimezone = element vtimezone {
  446. element properties {
  447. property-tzid &
  448. property-last-mod? &
  449. property-tzurl?
  450. },
  451. element components {
  452. (component-standard | component-daylight) &
  453. component-standard* &
  454. component-daylight*
  455. }
  456. }
  457. component-standard = element standard {
  458. type-tzprop
  459. }
  460. component-daylight = element daylight {
  461. type-tzprop
  462. }
  463. type-tzprop = element properties {
  464. property-dtstart &
  465. property-tzoffsetto &
  466. property-tzoffsetfrom &
  467. property-rrule? &
  468. property-comment* &
  469. property-rdate* &
  470. property-tzname*
  471. }
  472. # 3.6.6 Alarm Component
  473. component-valarm = element valarm {
  474. type-audioprop | type-dispprop | type-emailprop
  475. }
  476. type-audioprop = element properties {
  477. property-action &
  478. property-trigger &
  479. (property-duration, property-repeat)? &
  480. property-attach?
  481. }
  482. type-emailprop = element properties {
  483. property-action &
  484. property-description &
  485. property-trigger &
  486. property-summary &
  487. property-attendee+ &
  488. (property-duration, property-repeat)? &
  489. property-attach*
  490. }
  491. type-dispprop = element properties {
  492. property-action &
  493. property-description &
  494. property-trigger &
  495. (property-duration, property-repeat)?
  496. }
  497. # 3.7 Calendar Properties
  498. # 3.7.1 Calendar Scale
  499. property-calscale = element calscale {
  500. element parameters { empty }?,
  501. element text { "GREGORIAN" }
  502. }
  503. # 3.7.2 Method
  504. property-method = element method {
  505. element parameters { empty }?,
  506. value-text
  507. }
  508. # 3.7.3 Product Identifier
  509. property-prodid = element prodid {
  510. element parameters { empty }?,
  511. value-text
  512. }
  513. # 3.7.4 Version
  514. property-version = element version {
  515. element parameters { empty }?,
  516. element text { "2.0" }
  517. }
  518. # 3.8 Component Properties
  519. # 3.8.1 Descriptive Component Properties
  520. # 3.8.1.1 Attachment
  521. property-attach = element attach {
  522. element parameters {
  523. fmttypeparam? &
  524. encodingparam?
  525. }?,
  526. value-uri | value-binary
  527. }
  528. # 3.8.1.2 Categories
  529. property-categories = element categories {
  530. element parameters {
  531. languageparam? &
  532. }?,
  533. value-text+
  534. }
  535. # 3.8.1.3 Classification
  536. property-class = element class {
  537. element parameters { empty }?,
  538. element text {
  539. "PUBLIC" |
  540. "PRIVATE" |
  541. "CONFIDENTIAL"
  542. }
  543. }
  544. # 3.8.1.4 Comment
  545. property-comment = element comment {
  546. element parameters {
  547. altrepparam? &
  548. languageparam?
  549. }?,
  550. value-text
  551. }
  552. # 3.8.1.5 Description
  553. property-description = element description {
  554. element parameters {
  555. altrepparam? &
  556. languageparam?
  557. }?,
  558. value-text
  559. }
  560. # 3.8.1.6 Geographic Position
  561. property-geo = element geo {
  562. element parameters { empty }?,
  563. element latitude { xsd:float },
  564. element longitude { xsd:float }
  565. }
  566. # 3.8.1.7 Location
  567. property-location = element location {
  568. element parameters {
  569. altrepparam? &
  570. languageparam?
  571. }?,
  572. value-text
  573. }
  574. # 3.8.1.8 Percent Complete
  575. property-percent = element percent-complete {
  576. element parameters { empty }?,
  577. value-integer
  578. }
  579. # 3.8.1.9 Priority
  580. property-priority = element priority {
  581. element parameters { empty }?,
  582. value-integer
  583. }
  584. # 3.8.1.10 Resources
  585. property-resources = element resources {
  586. element parameters {
  587. altrepparam? &
  588. languageparam?
  589. }?,
  590. value-text+
  591. }
  592. # 3.8.1.11 Status
  593. property-status-event = element status {
  594. element parameters { empty }?,
  595. element text {
  596. "TENTATIVE" |
  597. "CONFIRMED" |
  598. "CANCELLED"
  599. }
  600. }
  601. property-status-todo = element status {
  602. element parameters { empty }?,
  603. element text {
  604. "NEEDS-ACTION" |
  605. "COMPLETED" |
  606. "IN-PROCESS" |
  607. "CANCELLED"
  608. }
  609. }
  610. property-status-jour = element status {
  611. element parameters { empty }?,
  612. element text {
  613. "DRAFT" |
  614. "FINAL" |
  615. "CANCELLED"
  616. }
  617. }
  618. # 3.8.1.12 Summary
  619. property-summary = element summary {
  620. element parameters {
  621. altrepparam? &
  622. languageparam?
  623. }?,
  624. value-text
  625. }
  626. # 3.8.2 Date and Time Component Properties
  627. # 3.8.2.1 Date/Time Completed
  628. property-completed = element completed {
  629. element parameters { empty }?,
  630. value-date-time
  631. }
  632. # 3.8.2.2 Date/Time End
  633. property-dtend = element dtend {
  634. element parameters {
  635. tzidparam?
  636. }?,
  637. value-date-time |
  638. value-date
  639. }
  640. # 3.8.2.3 Date/Time Due
  641. property-due = element due {
  642. element parameters {
  643. tzidparam?
  644. }?,
  645. value-date-time |
  646. value-date
  647. }
  648. # 3.8.2.4 Date/Time Start
  649. property-dtstart = element dtstart {
  650. element parameters {
  651. tzidparam?
  652. }?,
  653. value-date-time |
  654. value-date
  655. }
  656. # 3.8.2.5 Duration
  657. property-duration = element duration {
  658. element parameters { empty }?,
  659. value-duration
  660. }
  661. # 3.8.2.6 Free/Busy Time
  662. property-freebusy = element freebusy {
  663. element parameters {
  664. fbtypeparam?
  665. }?,
  666. value-period+
  667. }
  668. # 3.8.2.7 Time Transparency
  669. property-transp = element transp {
  670. element parameters { empty }?,
  671. element text {
  672. "OPAQUE" |
  673. "TRANSPARENT"
  674. }
  675. }
  676. # 3.8.3 Time Zone Component Properties
  677. # 3.8.3.1 Time Zone Identifier
  678. property-tzid = element tzid {
  679. element parameters { empty }?,
  680. value-text
  681. }
  682. # 3.8.3.2 Time Zone Name
  683. property-tzname = element tzname {
  684. element parameters {
  685. languageparam?
  686. }?,
  687. value-text
  688. }
  689. # 3.8.3.3 Time Zone Offset From
  690. property-tzoffsetfrom = element tzoffsetfrom {
  691. element parameters { empty }?,
  692. value-utc-offset
  693. }
  694. # 3.8.3.4 Time Zone Offset To
  695. property-tzoffsetto = element tzoffsetto {
  696. element parameters { empty }?,
  697. value-utc-offset
  698. }
  699. # 3.8.3.5 Time Zone URL
  700. property-tzurl = element tzurl {
  701. element parameters { empty }?,
  702. value-uri
  703. }
  704. # 3.8.4 Relationship Component Properties
  705. # 3.8.4.1 Attendee
  706. property-attendee = element attendee {
  707. element parameters {
  708. cutypeparam? &
  709. memberparam? &
  710. roleparam? &
  711. partstatparam? &
  712. rsvpparam? &
  713. deltoparam? &
  714. delfromparam? &
  715. sentbyparam? &
  716. cnparam? &
  717. dirparam? &
  718. languageparam?
  719. }?,
  720. value-cal-address
  721. }
  722. # 3.8.4.2 Contact
  723. property-contact = element contact {
  724. element parameters {
  725. altrepparam? &
  726. languageparam?
  727. }?,
  728. value-text
  729. }
  730. # 3.8.4.3 Organizer
  731. property-organizer = element organizer {
  732. element parameters {
  733. cnparam? &
  734. dirparam? &
  735. sentbyparam? &
  736. languageparam?
  737. }?,
  738. value-cal-address
  739. }
  740. # 3.8.4.4 Recurrence ID
  741. property-recurid = element recurrence-id {
  742. element parameters {
  743. tzidparam? &
  744. rangeparam?
  745. }?,
  746. value-date-time |
  747. value-date
  748. }
  749. # 3.8.4.5 Related-To
  750. property-related = element related-to {
  751. element parameters {
  752. reltypeparam?
  753. }?,
  754. value-text
  755. }
  756. # 3.8.4.6 Uniform Resource Locator
  757. property-url = element url {
  758. element parameters { empty }?,
  759. value-uri
  760. }
  761. # 3.8.4.7 Unique Identifier
  762. property-uid = element uid {
  763. element parameters { empty }?,
  764. value-text
  765. }
  766. # 3.8.5 Recurrence Component Properties
  767. # 3.8.5.1 Exception Date/Times
  768. property-exdate = element exdate {
  769. element parameters {
  770. tzidparam?
  771. }?,
  772. value-date-time+ |
  773. value-date+
  774. }
  775. # 3.8.5.2 Recurrence Date/Times
  776. property-rdate = element rdate {
  777. element parameters {
  778. tzidparam?
  779. }?,
  780. value-date-time+ |
  781. value-date+ |
  782. value-period+
  783. }
  784. # 3.8.5.3 Recurrence Rule
  785. property-rrule = element rrule {
  786. element parameters { empty }?,
  787. value-recur
  788. }
  789. # 3.8.6 Alarm Component Properties
  790. # 3.8.6.1 Action
  791. property-action = element action {
  792. element parameters { empty }?,
  793. element text {
  794. "AUDIO" |
  795. "DISPLAY" |
  796. "EMAIL"
  797. }
  798. }
  799. # 3.8.6.2 Repeat Count
  800. property-repeat = element repeat {
  801. element parameters { empty }?,
  802. value-integer
  803. }
  804. # 3.8.6.3 Trigger
  805. property-trigger = element trigger {
  806. (
  807. element parameters {
  808. trigrelparam?
  809. }?,
  810. value-duration
  811. ) |
  812. (
  813. element parameters { empty }?,
  814. value-date-time
  815. )
  816. }
  817. # 3.8.7 Change Management Component Properties
  818. # 3.8.7.1 Date/Time Created
  819. property-created = element created {
  820. element parameters { empty }?,
  821. value-date-time
  822. }
  823. # 3.8.7.2 Date/Time Stamp
  824. property-dtstamp = element dtstamp {
  825. element parameters { empty }?,
  826. value-date-time
  827. }
  828. # 3.8.7.3 Last Modified
  829. property-last-mod = element last-modified {
  830. element parameters { empty }?,
  831. value-date-time
  832. }
  833. # 3.8.7.4 Sequence Number
  834. property-seq = element sequence {
  835. element parameters { empty }?,
  836. value-integer
  837. }
  838. # 3.8.8 Miscellaneous Component Properties
  839. # 3.8.8.3 Request Status
  840. property-rstatus = element request-status {
  841. element parameters {
  842. languageparam?
  843. }?,
  844. element code { xsd:string },
  845. element description { xsd:string },
  846. element data { xsd:string }?
  847. }