|
1 | 1 | <?xml version="1.0"?> |
| 2 | +<!-- |
| 3 | +
|
| 4 | +Schema for an XML representation of a conference schedule with speakers, talks and URLs to external content like images, videos or PDFs which are not included in the schedule itself. |
| 5 | +
|
| 6 | +https://c3voc.de/wiki/schedule |
| 7 | +
|
| 8 | +
|
| 9 | +Publicly first automatically produced by [pentabarf](https://github.com/nevs/pentabarf), extended by [frab](https://frab.github.io/frab/] and continuously supported by [pretalx](https://pretalx.com/p/about/) and [osem](https://osem.io/). |
| 10 | +
|
| 11 | +Media Type registration: |
| 12 | +https://www.iana.org/assignments/media-types/application/vnd.c3voc.schedule+xml |
| 13 | +
|
| 14 | +
|
| 15 | +The current version of this XSD is available at https://c3voc.de/schedule/schema.xsd – previous versions can be found at https://forgejo.c3voc.de/voc/schedule/src/branch/master/validator/xsd/schedule.xml.xsd and https://github.com/voc/schedule/blob/master/validator/xsd/schedule.xml.xsd |
| 16 | +
|
| 17 | +
|
| 18 | +This is format supported by several software packages used at European conferences over the last 20 years, e.g. Chaos Communication Congress/Camp, and other events by CCC; FOSDEM; FrOSCon; FOSSGIS; etc. – c.f. https://c3voc.de/wiki/events for a more complete list. |
| 19 | +
|
| 20 | +Clients consuming this format include |
| 21 | + - https://github.com/Wilm0r/giggity (Android, Java) |
| 22 | + - https://github.com/EventFahrplan/EventFahrplan (Android, Kotlin/Java) |
| 23 | + - https://github.com/saschalalala/pyfahrplan (CLI, Python) |
| 24 | + - https://congress.conference.systems (iOS) |
| 25 | + - https://github.com/crs-tools/tracker (Video processing system) |
| 26 | + - https://github.com/engelsystem/engelsystem (Volunteer planning system) ([[https://github.com/engelsystem/engelsystem/tree/main/src/Helpers/Schedule|PHP]]) |
| 27 | + - https://info-beamer.com/raspberry-pi-digital-signage-scheduled-player-4765.html (digital signage) |
| 28 | +
|
| 29 | +
|
| 30 | +--> |
2 | 31 | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> |
3 | 32 | <xs:element name="schedule"> |
4 | 33 | <xs:complexType> |
|
93 | 122 | <xs:element type="start" name="start"/> |
94 | 123 | <xs:element type="duration" name="duration"/> |
95 | 124 | <xs:element type="xs:string" name="abstract"/> |
96 | | - <!-- oly expose slug if is not generated 1:1 via title slugify, otherwise we will generated it ourselves--> |
| 125 | + <!-- only expose slug if is not generated 1:1 via title slugify, otherwise we will generate it ourselves --> |
97 | 126 | <xs:element type="voc-slug-new" name="slug" minOccurs="0"/> |
98 | 127 | <xs:element type="xs:string" name="track"/> |
99 | 128 | <!-- logo is the path or URL to an image, we use httpURI as type here as apps prefer full URLs now --> |
|
104 | 133 | <xs:element type="recording" name="recording" minOccurs="0"/> |
105 | 134 | <xs:element type="links" name="links" minOccurs="0"/> |
106 | 135 | <xs:element type="attachments" name="attachments" minOccurs="0"/> |
| 136 | + <!-- deprecated --> |
107 | 137 | <xs:element type="httpURI" name="video_download_url" minOccurs="0"/> |
108 | 138 | <xs:element type="httpURI" name="url" minOccurs="0"/> |
109 | 139 | <xs:element type="httpURI" name="feedback_url" minOccurs="0"/> |
110 | 140 | <xs:element type="httpURI" name="origin_url" minOccurs="0"/> |
111 | 141 | </xs:all> |
| 142 | + <!-- short identifier of the submission, replacing the old "id" attribute --> |
112 | 143 | <xs:attribute name="code" type="pretalx-random-code" use="optional"/> |
| 144 | + <!-- legacy numeric identifier from pretalx, might be non unique when submission has multiple time slots, c.f. https://docs.pretalx.org/developer/concepts/#schedules-and-slots --> |
113 | 145 | <xs:attribute name="id" type="xs:positiveInteger" use="required"/> |
| 146 | + <!-- unique identifier for this event/instance introduced by frab, guaranteed to be unique across all systems --> |
114 | 147 | <xs:attribute name="guid" type="uuid" use="required"/> |
115 | 148 | </xs:complexType> |
116 | 149 |
|
|
168 | 201 |
|
169 | 202 | <xs:simpleType name="slug"> |
170 | 203 | <xs:restriction base="xs:string"> |
171 | | - <xs:pattern value="[a-z0-9-]{2,}"/> |
| 204 | + <!-- lowercase letters, numbers and hyphens, must start with a letter and be at least two characters long --> |
| 205 | + <xs:pattern value="[a-z][a-z0-9-]+"/> |
172 | 206 | </xs:restriction> |
173 | 207 | </xs:simpleType> |
174 | 208 |
|
|
0 commit comments