Skip to content

Commit b45ae10

Browse files
committed
feat(xsd): add more documentation + clarify slug spec
1 parent 7a802cf commit b45ae10

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

validator/xsd/schedule.xml.xsd

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
<?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+
-->
231
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
332
<xs:element name="schedule">
433
<xs:complexType>
@@ -93,7 +122,7 @@
93122
<xs:element type="start" name="start"/>
94123
<xs:element type="duration" name="duration"/>
95124
<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 -->
97126
<xs:element type="voc-slug-new" name="slug" minOccurs="0"/>
98127
<xs:element type="xs:string" name="track"/>
99128
<!-- logo is the path or URL to an image, we use httpURI as type here as apps prefer full URLs now -->
@@ -104,13 +133,17 @@
104133
<xs:element type="recording" name="recording" minOccurs="0"/>
105134
<xs:element type="links" name="links" minOccurs="0"/>
106135
<xs:element type="attachments" name="attachments" minOccurs="0"/>
136+
<!-- deprecated -->
107137
<xs:element type="httpURI" name="video_download_url" minOccurs="0"/>
108138
<xs:element type="httpURI" name="url" minOccurs="0"/>
109139
<xs:element type="httpURI" name="feedback_url" minOccurs="0"/>
110140
<xs:element type="httpURI" name="origin_url" minOccurs="0"/>
111141
</xs:all>
142+
<!-- short identifier of the submission, replacing the old "id" attribute -->
112143
<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 -->
113145
<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 -->
114147
<xs:attribute name="guid" type="uuid" use="required"/>
115148
</xs:complexType>
116149

@@ -168,7 +201,8 @@
168201

169202
<xs:simpleType name="slug">
170203
<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-]+"/>
172206
</xs:restriction>
173207
</xs:simpleType>
174208

0 commit comments

Comments
 (0)