Add operator!= and operator< for LanguageTag
[libdcp.git] / xsd / DCDMSubtitle-2010.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 \r
3 <!--\r
4 Copyright (c), Society of Motion Pictures and Television Engineers. All rights reserved.\r
5 Redistribution and use in source and binary forms, with or without modification, are permitted\r
6 provided that the following conditions are met: 1. Redistributions of source code must retain \r
7 the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions\r
8 in binary form must reproduce the above copyright notice, this list of conditions and the following\r
9 disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the\r
10 name of the copyright holder nor the names of its contributors may be used to endorse or promote \r
11 products derived from this software without specific prior written permission. \r
12 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED \r
13 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR \r
14 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE \r
15 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r
16 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \r
17 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR \r
18 TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF \r
19 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
20 -->\r
21 \r
22 <!--\r
23 This document is an element of SMPTE ST 2067-100:2014, which is available at http://standards.smpte.org.\r
24 To ensure interoperability, users are encouraged to: (a) retain this notice; (b) retrieve the recent versions \r
25 of this document and its companion defining engineering document. In particular, this document alone might not \r
26 be sufficient to ensure interoperability; (c) highlight and explain any modification they make to this document;\r
27 and (d) report issues to the Director of Standards at https://www.smpte.org/about/staff.\r
28 -->\r
29 \r
30 <xs:schema\r
31     targetNamespace="http://www.smpte-ra.org/schemas/428-7/2010/DCST"\r
32     xmlns:dcst="http://www.smpte-ra.org/schemas/428-7/2010/DCST"\r
33     xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
34     elementFormDefault="qualified" attributeFormDefault="unqualified">\r
35 \r
36 <!-- This version of the schema was produced for publication with ST 428-7:2014. It has been corrected from its original 2010 published version. Refer to ST 428-7:2014 Section 8 for additional details. -->\r
37 \r
38 \r
39   <!-- SubtitleReel -->\r
40   <xs:element name="SubtitleReel" type="dcst:SubtitleReelType"/>\r
41   <xs:complexType name="SubtitleReelType">\r
42     <xs:sequence>\r
43       <xs:element name="Id" type="dcst:UUID"/>\r
44       <xs:element name="ContentTitleText" type="dcst:UserText"/>\r
45       <xs:element name="AnnotationText" type="dcst:UserText" minOccurs="0"/>\r
46       <xs:element name="IssueDate" type="xs:dateTime"/>\r
47       <xs:element name="ReelNumber" type="xs:positiveInteger" minOccurs="0"/>\r
48       <xs:element name="Language" type="xs:language" minOccurs="0" default="en"/>\r
49       <xs:element name="EditRate" type="dcst:RationalType"/>\r
50       <xs:element name="TimeCodeRate" type="xs:positiveInteger"/>\r
51       <xs:element name="StartTime" type="dcst:TimeCodeType" minOccurs="0"/>\r
52       <xs:element name="DisplayType" type="dcst:scopedTokenType" minOccurs="0"/>\r
53       <xs:element name="LoadFont" minOccurs="0" maxOccurs="unbounded">\r
54         <xs:complexType>\r
55           <xs:simpleContent>\r
56             <xs:extension base="xs:anyURI">\r
57               <xs:attribute name="ID" type="xs:string" use="optional"/>\r
58             </xs:extension>\r
59           </xs:simpleContent>\r
60         </xs:complexType>\r
61       </xs:element>\r
62       <xs:element name="SubtitleList">\r
63         <xs:complexType>\r
64           <xs:choice maxOccurs="unbounded">\r
65             <xs:element name="Subtitle" type="dcst:SubtitleType"/>\r
66             <xs:element name="Font">\r
67               <xs:complexType mixed="true">\r
68                 <xs:complexContent mixed="true">\r
69                   <xs:extension base="dcst:FontType">\r
70                     <xs:sequence>\r
71                       <xs:element name="Subtitle" type="dcst:SubtitleType" maxOccurs="unbounded"/>\r
72                     </xs:sequence>\r
73                   </xs:extension>\r
74                 </xs:complexContent>\r
75               </xs:complexType>\r
76             </xs:element>\r
77           </xs:choice>\r
78         </xs:complexType>\r
79       </xs:element>\r
80     </xs:sequence>\r
81   </xs:complexType>\r
82 \r
83   <!-- Subtitle -->\r
84   <xs:complexType name="SubtitleType">\r
85     <xs:choice maxOccurs="unbounded">\r
86       <xs:element name="Text" type="dcst:TextType"/>\r
87       <xs:element name="Image" type="dcst:ImageType"/>\r
88       <xs:element name="Font">\r
89         <xs:complexType mixed="true">\r
90           <xs:complexContent mixed="true">\r
91             <xs:extension base="dcst:FontType">\r
92               <xs:sequence>\r
93                 <xs:element name="Text" type="dcst:TextType" maxOccurs="unbounded"/>\r
94               </xs:sequence>\r
95             </xs:extension>\r
96           </xs:complexContent>\r
97         </xs:complexType>\r
98       </xs:element>\r
99     </xs:choice>\r
100     <xs:attribute name="SpotNumber" type="xs:string" use="optional"/>\r
101     <xs:attribute name="TimeIn" type="dcst:TimeCodeType" use="required"/>\r
102     <xs:attribute name="TimeOut" type="dcst:TimeCodeType" use="required"/>\r
103     <xs:attribute name="FadeUpTime" type="dcst:TimeCodeType" use="optional"/>\r
104     <xs:attribute name="FadeDownTime" type="dcst:TimeCodeType" use="optional"/>\r
105   </xs:complexType>\r
106 \r
107   <!-- Image -->\r
108   <xs:complexType name="ImageType" mixed="false">\r
109     <xs:simpleContent>\r
110       <xs:extension base="xs:anyURI">\r
111         <xs:attribute name="Halign" use="optional" default="center">\r
112           <xs:simpleType>\r
113             <xs:restriction base="xs:string">\r
114               <xs:enumeration value="center"/>\r
115               <xs:enumeration value="left"/>\r
116               <xs:enumeration value="right"/>\r
117             </xs:restriction>\r
118           </xs:simpleType>\r
119         </xs:attribute>\r
120         <xs:attribute name="Hposition" use="optional" default="0">\r
121           <xs:simpleType>\r
122             <xs:restriction base="xs:decimal">\r
123               <xs:minInclusive value="-100"/>\r
124               <xs:maxInclusive value="100"/>\r
125             </xs:restriction>\r
126           </xs:simpleType>\r
127         </xs:attribute>\r
128         <xs:attribute name="Valign" use="optional" default="center">\r
129           <xs:simpleType>\r
130             <xs:restriction base="xs:string">\r
131               <xs:enumeration value="center"/>\r
132               <xs:enumeration value="bottom"/>\r
133               <xs:enumeration value="top"/>\r
134             </xs:restriction>\r
135           </xs:simpleType>\r
136         </xs:attribute>\r
137         <xs:attribute name="Vposition" use="optional" default="0">\r
138           <xs:simpleType>\r
139             <xs:restriction base="xs:decimal">\r
140               <xs:minInclusive value="-100"/>\r
141               <xs:maxInclusive value="100"/>\r
142             </xs:restriction>\r
143           </xs:simpleType>\r
144         </xs:attribute>\r
145       </xs:extension>\r
146     </xs:simpleContent>\r
147   </xs:complexType>\r
148 \r
149   <!-- Font -->\r
150   <xs:complexType name="FontType" mixed="true">\r
151     <xs:attribute name="Script" use="optional" default="normal">\r
152       <xs:simpleType>\r
153         <xs:restriction base="xs:string">\r
154           <xs:enumeration value="normal"/>\r
155           <xs:enumeration value="super"/>\r
156           <xs:enumeration value="sub"/>\r
157         </xs:restriction>\r
158       </xs:simpleType>\r
159     </xs:attribute>\r
160     <xs:attribute name="Effect" use="optional" default="shadow">\r
161       <xs:simpleType>\r
162         <xs:restriction base="xs:string">\r
163           <xs:enumeration value="none"/>\r
164           <xs:enumeration value="border"/>\r
165           <xs:enumeration value="shadow"/>\r
166         </xs:restriction>\r
167       </xs:simpleType>\r
168     </xs:attribute>\r
169     <xs:attribute name="Italic" use="optional" default="no">\r
170       <xs:simpleType>\r
171         <xs:restriction base="xs:string">\r
172           <xs:enumeration value="yes"/>\r
173           <xs:enumeration value="no"/>\r
174         </xs:restriction>\r
175       </xs:simpleType>\r
176     </xs:attribute>\r
177     <xs:attribute name="Underline" use="optional" default="no">\r
178       <xs:simpleType>\r
179         <xs:restriction base="xs:string">\r
180           <xs:enumeration value="yes"/>\r
181           <xs:enumeration value="no"/>\r
182         </xs:restriction>\r
183       </xs:simpleType>\r
184     </xs:attribute>\r
185     <xs:attribute name="Weight" use="optional" default="normal">\r
186       <xs:simpleType>\r
187         <xs:restriction base="xs:string">\r
188           <xs:enumeration value="bold"/>\r
189           <xs:enumeration value="normal"/>\r
190         </xs:restriction>\r
191       </xs:simpleType>\r
192     </xs:attribute>\r
193     <xs:attribute name="ID" type="xs:string" use="optional"/>\r
194     <xs:attribute name="Color" use="optional" default="FFFFFFFF">\r
195       <xs:simpleType>\r
196         <xs:restriction base="xs:hexBinary">\r
197           <xs:length value="4"/>\r
198         </xs:restriction>\r
199       </xs:simpleType>\r
200     </xs:attribute>\r
201     <xs:attribute name="EffectColor" use="optional" default="FF000000">\r
202       <xs:simpleType>\r
203         <xs:restriction base="xs:hexBinary">\r
204           <xs:length value="4"/>\r
205         </xs:restriction>\r
206       </xs:simpleType>\r
207     </xs:attribute>\r
208     <xs:attribute name="Size" use="optional" default="42">\r
209       <xs:simpleType>\r
210         <xs:restriction base="xs:positiveInteger"/>\r
211       </xs:simpleType>\r
212     </xs:attribute>\r
213     <xs:attribute name="AspectAdjust" use="optional" default="1.0">\r
214       <xs:simpleType>\r
215         <xs:restriction base="xs:decimal">\r
216           <xs:minInclusive value="0.25"/>\r
217           <xs:maxInclusive value="4.0"/>\r
218         </xs:restriction> \r
219       </xs:simpleType>\r
220     </xs:attribute>\r
221     <xs:attribute name="Spacing" use="optional" default="0.0">\r
222       <xs:simpleType>\r
223         <xs:restriction base="xs:decimal">\r
224           <xs:minInclusive value="-1.0"/>\r
225         </xs:restriction>\r
226       </xs:simpleType>\r
227     </xs:attribute>\r
228   </xs:complexType>\r
229 \r
230   <!-- Text -->\r
231   <xs:complexType name="TextType" mixed="true">\r
232     <xs:choice minOccurs="0" maxOccurs="unbounded">\r
233       <xs:element name="Font" type="dcst:FontType"/>\r
234       <xs:element name="Ruby" type="dcst:RubyType"/>\r
235       <xs:element name="Space" type="dcst:SpaceType"/>\r
236       <xs:element name="HGroup" type="xs:string"/>\r
237       <xs:element name="Rotate" type="dcst:RotateType"/>\r
238     </xs:choice>\r
239     <xs:attribute name="Halign" use="optional" default="center">\r
240       <xs:simpleType>\r
241         <xs:restriction base="xs:string">\r
242           <xs:enumeration value="center"/>\r
243           <xs:enumeration value="left"/>\r
244           <xs:enumeration value="right"/>\r
245         </xs:restriction>\r
246       </xs:simpleType>\r
247     </xs:attribute>\r
248     <xs:attribute name="Hposition" use="optional" default="0">\r
249       <xs:simpleType>\r
250         <xs:restriction base="xs:decimal">\r
251           <xs:minInclusive value="-100"/>\r
252           <xs:maxInclusive value="100"/>\r
253         </xs:restriction>\r
254       </xs:simpleType>\r
255     </xs:attribute>\r
256     <xs:attribute name="Valign" use="optional" default="center">\r
257       <xs:simpleType>\r
258         <xs:restriction base="xs:string">\r
259           <xs:enumeration value="center"/>\r
260           <xs:enumeration value="bottom"/>\r
261           <xs:enumeration value="top"/>\r
262         </xs:restriction>\r
263       </xs:simpleType>\r
264     </xs:attribute>\r
265     <xs:attribute name="Vposition" use="optional" default="0">\r
266       <xs:simpleType>\r
267         <xs:restriction base="xs:decimal">\r
268           <xs:minInclusive value="-100"/>\r
269           <xs:maxInclusive value="100"/>\r
270         </xs:restriction>\r
271       </xs:simpleType>\r
272     </xs:attribute>\r
273     <xs:attribute name="Direction" use="optional" default="ltr">\r
274       <xs:simpleType>\r
275         <xs:restriction base="xs:string">\r
276           <xs:enumeration value="ltr"/>\r
277           <xs:enumeration value="rtl"/>\r
278           <xs:enumeration value="ttb"/>\r
279           <xs:enumeration value="btt"/>\r
280         </xs:restriction>\r
281       </xs:simpleType>\r
282     </xs:attribute>\r
283   </xs:complexType>\r
284 \r
285   <!-- Rational Type -->\r
286   <xs:simpleType name="RationalType">\r
287     <xs:restriction>\r
288       <xs:simpleType>\r
289         <xs:list itemType="xs:long"/>\r
290       </xs:simpleType>\r
291       <xs:length value="2"/>\r
292     </xs:restriction>\r
293   </xs:simpleType>\r
294 \r
295   <!-- TimeCode Type -->\r
296   <xs:simpleType name="TimeCodeType">\r
297     <xs:restriction base="xs:string">\r
298       <xs:pattern value="[0-2][0-9]:[0-5][0-9]:[0-5][0-9]:[0-9]+"/>\r
299     </xs:restriction>\r
300   </xs:simpleType>\r
301 \r
302   <!-- Ruby Type -->\r
303   <xs:complexType name="RubyType">\r
304     <xs:sequence>\r
305       <xs:element name="Rb" type="xs:string"/>\r
306       <xs:element name="Rt">\r
307         <xs:complexType>\r
308           <xs:simpleContent>\r
309             <xs:extension base="xs:string">\r
310               <xs:attribute name="Size" use="optional" default="0.5">\r
311                 <xs:simpleType>\r
312                    <xs:restriction base="xs:decimal">\r
313                      <xs:minExclusive value="0"/>\r
314                    </xs:restriction>\r
315                 </xs:simpleType>\r
316               </xs:attribute>\r
317               <xs:attribute name="Position" use="optional" default="before">\r
318                 <xs:simpleType>\r
319                   <xs:restriction base="xs:string">\r
320                     <xs:enumeration value="before"/>\r
321                     <xs:enumeration value="after"/>\r
322                   </xs:restriction>\r
323                 </xs:simpleType>\r
324               </xs:attribute>\r
325               <xs:attribute name="Offset" use="optional" default="0.0">\r
326                 <xs:simpleType>\r
327                   <xs:restriction base="xs:decimal">\r
328                     <xs:minInclusive value="-1.0"/>\r
329                   </xs:restriction>\r
330                 </xs:simpleType>\r
331               </xs:attribute>\r
332               <xs:attribute name="Spacing" use="optional" default="0.0">\r
333                 <xs:simpleType>\r
334                   <xs:restriction base="xs:decimal">\r
335                     <xs:minInclusive value="-1.0"/>\r
336                   </xs:restriction>\r
337                 </xs:simpleType>\r
338               </xs:attribute>\r
339               <xs:attribute name="AspectAdjust" use="optional" default="1.0">\r
340                 <xs:simpleType>\r
341                   <xs:restriction base="xs:decimal">\r
342                     <xs:minInclusive value="0.25"/>\r
343                     <xs:maxInclusive value="4.0"/>\r
344                   </xs:restriction>\r
345                 </xs:simpleType>\r
346               </xs:attribute>\r
347             </xs:extension>\r
348           </xs:simpleContent>\r
349         </xs:complexType>\r
350       </xs:element>\r
351     </xs:sequence>\r
352   </xs:complexType>\r
353 \r
354   <!-- Rotate Type -->\r
355   <xs:complexType name="RotateType">\r
356     <xs:simpleContent>\r
357       <xs:extension base="xs:string">\r
358         <xs:attribute name="Direction" use="optional" default="none">\r
359           <xs:simpleType>\r
360             <xs:restriction base="xs:string">\r
361               <xs:enumeration value="none"/>\r
362               <xs:enumeration value="left"/>\r
363               <xs:enumeration value="right"/>\r
364             </xs:restriction>\r
365           </xs:simpleType>\r
366         </xs:attribute>\r
367       </xs:extension>\r
368     </xs:simpleContent>\r
369   </xs:complexType>\r
370 \r
371   <!-- Space Type -->\r
372   <xs:complexType name="SpaceType">\r
373     <xs:simpleContent>\r
374       <xs:extension base="dcst:EmptyElement">\r
375         <xs:attribute name="Size" use="optional" default="0.5">\r
376           <xs:simpleType>\r
377             <xs:restriction base="xs:decimal">\r
378               <xs:minInclusive value="-1.0"/>\r
379             </xs:restriction>\r
380           </xs:simpleType>\r
381         </xs:attribute>\r
382       </xs:extension>\r
383     </xs:simpleContent>\r
384   </xs:complexType>\r
385 \r
386   <!-- UUID Type -->\r
387   <xs:simpleType name="UUID">\r
388     <xs:restriction base="xs:anyURI">\r
389       <xs:pattern value="urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>\r
390     </xs:restriction>\r
391   </xs:simpleType>\r
392 \r
393   <!-- UserText Type -->\r
394   <xs:complexType name="UserText">\r
395     <xs:simpleContent>\r
396       <xs:extension base="xs:string">\r
397         <xs:attribute name="language" type="xs:language" use="optional" default="en"/>\r
398       </xs:extension>\r
399     </xs:simpleContent>\r
400   </xs:complexType>\r
401 \r
402   <!-- Scoped Token Type -->\r
403   <xs:complexType name="scopedTokenType">\r
404     <xs:simpleContent>\r
405       <xs:extension base="xs:token">\r
406       <xs:attribute name="scope" type="xs:anyURI" use="optional"/>\r
407       </xs:extension>\r
408     </xs:simpleContent>\r
409   </xs:complexType>\r
410 \r
411   <!-- EmptyElement Type -->\r
412   <xs:simpleType name="EmptyElement">\r
413     <xs:restriction base="xs:string">\r
414       <xs:length value="0"/>\r
415     </xs:restriction>\r
416   </xs:simpleType>\r
417 </xs:schema>\r