1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3    <xs:annotation>
4        <xs:documentation xml:lang="en">
5        xmltv-lineups schema for XMLTV Project
6        Copyright Nick Morrott, 2011,2012
7        </xs:documentation>
8    </xs:annotation>
9
10    <xs:element name="xmltv-lineups" type="xmltvLineupsType" />
11
12    <xs:complexType name="xmltvLineupsType">
13        <xs:sequence>
14            <xs:element name="xmltv-lineup" type="xmltvLineupType" maxOccurs="unbounded" />
15        </xs:sequence>
16        <xs:attributeGroup ref="sourceGeneratorAttrs" />
17    </xs:complexType>
18
19    <xs:complexType name="xmltvLineupType">
20        <xs:sequence>
21            <xs:element name="type"         type="lineupTypeEnum" />
22            <xs:element name="display-name" type="strWithLangAttrType" maxOccurs="unbounded" />
23            <xs:element name="logo"         type="logoType"            minOccurs="0" maxOccurs="unbounded" />
24            <xs:element name="availability" type="availabilityType"    minOccurs="0" maxOccurs="unbounded" />
25            <xs:element name="lineup-entry" type="lineupEntryType"     minOccurs="0" maxOccurs="unbounded" />
26        </xs:sequence>
27        <xs:attribute name="id" type="xs:string" />
28        <xs:attributeGroup ref="sourceGeneratorAttrs" />
29    </xs:complexType>
30
31    <xs:complexType name="lineupEntryType">
32        <xs:sequence>
33            <xs:element name="preset"       type="xs:string"           minOccurs="0" />
34            <xs:element name="section"      type="xs:string"           minOccurs="0" />
35            <xs:element name="package"      type="strWithTypeAttrType" minOccurs="0" maxOccurs="unbounded" />
36            <xs:element name="availability" type="availabilityType"    minOccurs="0" maxOccurs="unbounded" />
37            <xs:element name="station"      type="stationType" />
38
39            <xs:choice>
40                <xs:element name="dvb-channel"    type="dvbChanType"    minOccurs="0" maxOccurs="unbounded" />
41                <xs:element name="stb-channel"    type="stbChanType"    minOccurs="0" maxOccurs="unbounded" />
42                <xs:element name="iptv-channel"   type="iptvChanType"   minOccurs="0" maxOccurs="unbounded" />
43                <xs:element name="analog-channel" type="analogChanType" minOccurs="0" maxOccurs="unbounded" />
44            </xs:choice>
45        </xs:sequence>
46    </xs:complexType>
47
48    <xs:complexType name="stationType">
49        <xs:sequence>
50            <xs:element name="name"            type="strWithLangAttrType" />
51            <xs:element name="short-name"      type="strWithLangAttrType" minOccurs="0" />
52            <xs:element name="logo"            type="logoType"            minOccurs="0" maxOccurs="unbounded" />
53            <xs:element name="commercial-free" type="xs:boolean"          minOccurs="0" />
54            <xs:element name="video"           type="videoType"           minOccurs="0" />
55            <xs:element name="audio"           type="audioType"           minOccurs="0" />
56        </xs:sequence>
57        <xs:attributeGroup ref="rfc2838" />
58        <xs:attribute name="type" type="stationTypeEnum" />
59    </xs:complexType>
60
61    <xs:complexType name="videoType">
62        <xs:sequence>
63            <xs:element name="format"       type="xs:string" minOccurs="0" />
64            <xs:element name="aspect-ratio" type="xs:string" minOccurs="0" />
65        </xs:sequence>
66    </xs:complexType>
67
68    <xs:complexType name="audioType">
69        <xs:sequence>
70            <xs:element name="format"       type="xs:string" minOccurs="0" />
71        </xs:sequence>
72    </xs:complexType>
73
74    <xs:complexType name="dvbChanType">
75        <xs:sequence>
76            <xs:element name="original-network-id" type="xs:integer" />
77            <xs:element name="transport-id"        type="xs:integer" minOccurs="0" />
78            <xs:element name="service-id"          type="xs:integer" />
79            <xs:element name="lcn"                 type="xs:string"  minOccurs="0" />
80            <xs:element name="service-name"        type="xs:string"  minOccurs="0" />
81            <xs:element name="provider-name"       type="xs:string"  minOccurs="0" />
82            <xs:element name="encrypted"           type="xs:boolean" minOccurs="0" />
83        </xs:sequence>
84        <xs:attributeGroup ref="rfc2838" />
85    </xs:complexType>
86
87    <xs:complexType name="stbChanType">
88        <xs:sequence>
89            <xs:element name="stb-preset" type="xs:string" />
90        </xs:sequence>
91        <xs:attributeGroup ref="rfc2838" />
92    </xs:complexType>
93
94    <xs:complexType name="iptvChanType">
95        <xs:sequence>
96            <xs:element name="iptv-url" type="xs:string" />
97            <xs:element name="port"     type="xs:integer" />
98        </xs:sequence>
99        <xs:attributeGroup ref="rfc2838" />
100    </xs:complexType>
101
102    <xs:complexType name="analogChanType">
103        <xs:sequence>
104            <xs:element name="system"       type="xs:string" />
105            <xs:element name="number"       type="xs:string" />
106            <xs:element name="frequency"    type="xs:integer" minOccurs="0" />
107            <xs:element name="fcc-callsign" type="xs:string"  minOccurs="0" />
108            <xs:element name="cni">
109                <xs:complexType>
110                    <xs:attribute name="tt-8-30-1" type="xs:string" />
111                </xs:complexType>
112            </xs:element>
113        </xs:sequence>
114        <xs:attributeGroup ref="rfc2838" />
115    </xs:complexType>
116
117    <xs:simpleType name="lineupTypeEnum">
118        <xs:restriction base="xs:string">
119            <xs:enumeration value="DTV"/>
120            <xs:enumeration value="STB"/>
121            <xs:enumeration value="IPTV"/>
122            <xs:enumeration value="Analog"/>
123            <xs:enumeration value="List"/>
124        </xs:restriction>
125    </xs:simpleType>
126
127    <xs:simpleType name="stationTypeEnum">
128        <xs:restriction base="xs:string">
129            <xs:enumeration value="TV"/>
130            <xs:enumeration value="Radio"/>
131            <xs:enumeration value="Data"/>
132            <xs:enumeration value="Text service"/>
133        </xs:restriction>
134    </xs:simpleType>
135
136    <xs:complexType name="strWithLangAttrType">
137        <xs:simpleContent>
138            <xs:extension base="xs:string">
139                <xs:attribute name="lang" type="xs:language" />
140            </xs:extension>
141        </xs:simpleContent>
142    </xs:complexType>
143
144    <xs:complexType name="strWithTypeAttrType">
145        <xs:simpleContent>
146            <xs:extension base="xs:string">
147                <xs:attribute name="type" type="xs:string" />
148            </xs:extension>
149        </xs:simpleContent>
150    </xs:complexType>
151
152    <xs:complexType name="availabilityType">
153        <xs:simpleContent>
154            <xs:extension base="xs:string">
155                <xs:attribute name="area" type="availabilityAreaEnum" />
156            </xs:extension>
157        </xs:simpleContent>
158    </xs:complexType>
159
160    <xs:simpleType name="availabilityAreaEnum">
161        <xs:restriction base="xs:string">
162            <xs:enumeration value="country"/>
163            <xs:enumeration value="region"/>
164            <xs:enumeration value="city"/>
165            <xs:enumeration value="postcode"/>
166            <xs:enumeration value="transmitter"/>
167        </xs:restriction>
168    </xs:simpleType>
169
170    <xs:complexType name="logoType">
171        <xs:attribute name="url"    type="xs:string" />
172        <xs:attribute name="height" type="xs:integer" />
173        <xs:attribute name="width"  type="xs:integer" />
174    </xs:complexType>
175
176    <xs:attributeGroup name="sourceGeneratorAttrs">
177        <xs:attribute name="modified"            type="xs:string" />
178        <xs:attribute name="source-info-name"    type="xs:string" />
179        <xs:attribute name="source-info-url"     type="xs:string" />
180        <xs:attribute name="source-data-url"     type="xs:string" />
181        <xs:attribute name="generator-info-name" type="xs:string" />
182        <xs:attribute name="generator-info-url"  type="xs:string" />
183    </xs:attributeGroup>
184
185    <xs:attributeGroup name="rfc2838">
186        <xs:attribute name="rfc2838" type="xs:string" />
187    </xs:attributeGroup>
188
189</xs:schema>
190