Fix interop verification and add some tests for it.
[libdcp.git] / xsd / PROTO-ASDCP-CPL-20040511.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Schema for Interop Composition Play List namespace -->
3 <!-- Assembled from mpeg_ii_cpl_spec.doc 2004-11-23 -->
4
5 <xs:schema
6   targetNamespace="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#"
7   elementFormDefault="qualified" attributeFormDefault="unqualified"
8   xmlns:cpl="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#"
9   xmlns:xs="http://www.w3.org/2001/XMLSchema"
10   xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
11
12 <!--The following xs:import statements should not really be here, but are
13     provided so that XMLSpy will validate the schema itself, independently
14     of an instance of a CPL. The schema xml.xsd is brought in for language identifiers.
15 -->
16 <xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
17   schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
18 <xs:import namespace="http://www.w3.org/XML/1998/namespace"
19   schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
20 <xs:import namespace="http://www.digicine.com/schemas/437-Y/2007/Main-Stereo-Picture-CPL"
21   schemaLocation="http://www.digicine.com/schemas/437-Y/2007/Main-Stereo-Picture-CPL.xsd"/>
22
23 <!-- Composition Playlist -->
24   <xs:element name="CompositionPlaylist" type="cpl:CompositionPlaylistType" />
25   <xs:complexType name="CompositionPlaylistType">
26     <xs:sequence>
27       <xs:element name="Id" type="cpl:UUID"/>
28       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0"/>
29       <xs:element name="IconId" type="cpl:UUID" minOccurs="0"/>
30       <xs:element name="IssueDate" type="xs:dateTime"/>
31       <xs:element name="Issuer" type="cpl:UserText"/>
32       <xs:element name="Creator" type="cpl:UserText"/>
33       <xs:element name="ContentTitleText" type="cpl:UserText"/>
34       <xs:element ref="cpl:ContentKind"/>
35       <xs:element ref="cpl:ContentVersion" minOccurs="0"/>
36       <xs:element name="RatingList">
37         <xs:complexType>
38           <xs:sequence>
39             <xs:element ref="cpl:Rating" minOccurs="0" maxOccurs="unbounded"/>
40           </xs:sequence>
41         </xs:complexType>
42       </xs:element>
43       <xs:element name="ReelList">
44         <xs:complexType>
45           <xs:sequence>
46             <xs:element ref="cpl:Reel" maxOccurs="unbounded"/>
47           </xs:sequence>
48         </xs:complexType>
49       </xs:element>
50       <xs:element name="Signer" type="ds:KeyInfoType" minOccurs="0"/>
51       <xs:element ref="ds:Signature" minOccurs="0"/>
52     </xs:sequence>
53   </xs:complexType>
54
55 <!-- Internally Defined Types -->
56
57   <!-- Marker Type -->
58   <xs:element name="Marker" type="cpl:MarkerType" />
59   <xs:complexType name="MarkerType">
60     <xs:sequence>
61       <xs:element name="Label">
62         <xs:complexType>
63           <xs:simpleContent>
64             <xs:extension base="xs:string">
65               <xs:attribute name="scope" type="xs:anyURI" use="optional" default="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#standard-markers" />
66             </xs:extension>
67           </xs:simpleContent>
68         </xs:complexType>
69       </xs:element>
70       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0" />
71       <xs:element name="Offset">
72         <xs:simpleType>
73           <xs:restriction base="xs:long">
74             <xs:minInclusive value="0" />
75           </xs:restriction>
76         </xs:simpleType>
77       </xs:element>
78     </xs:sequence>
79   </xs:complexType>
80
81   <!-- Rating Type -->
82   <xs:element name="Rating" type="cpl:RatingType"/>
83   <xs:complexType name="RatingType">
84     <xs:sequence>
85       <xs:element name="Agency" type="xs:anyURI" />
86       <xs:element name="Label" type="xs:string" />
87     </xs:sequence>
88   </xs:complexType>
89
90   <!-- ContentKind Type -->
91   <xs:element name="ContentKind" type="cpl:ContentKindType"/>
92   <xs:complexType name="ContentKindType">
93     <xs:simpleContent>
94       <xs:extension base="xs:string">
95         <xs:attribute name="scope" type="xs:anyURI" use="optional" default="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#standard-content"/>
96       </xs:extension>
97     </xs:simpleContent>
98   </xs:complexType>
99
100   <!-- ContentVersion Type -->
101   <xs:element name="ContentVersion" type="cpl:ContentVersionType"/>
102   <xs:complexType name="ContentVersionType">
103     <xs:sequence>
104       <xs:element name="Id" type="xs:anyURI" minOccurs="0"/>
105       <xs:element name="LabelText" type="cpl:UserText"/>
106     </xs:sequence>
107   </xs:complexType>
108
109   <!-- Reel Type -->
110   <xs:element name="Reel" type="cpl:ReelType" />
111   <xs:complexType name="ReelType">
112     <xs:sequence>
113       <xs:element name="Id" type="cpl:UUID" />
114       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0" />
115       <xs:element name="AssetList">
116         <xs:complexType>
117           <xs:sequence>
118             <xs:element name="MainMarkers" type="cpl:MarkerAssetType" minOccurs="0"/>
119             <xs:element name="MainPicture" type="cpl:PictureTrackFileAssetType" minOccurs="0"/>
120             <xs:element name="MainSound" type="cpl:SoundTrackFileAssetType" minOccurs="0"/>
121             <xs:element name="MainSubtitle" type="cpl:SubtitleTrackFileAssetType" minOccurs="0"/>
122             <xs:element name="ProjectorData" type="cpl:ProjectorDataAssetType" minOccurs="0" maxOccurs="unbounded"/> 
123             <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
124           </xs:sequence>
125         </xs:complexType>
126       </xs:element>
127     </xs:sequence>
128   </xs:complexType>
129
130   <!-- GenericAsset Type -->
131   <xs:complexType name="GenericAssetType" abstract="1">
132     <xs:sequence>
133       <xs:element name="Id" type="cpl:UUID" />
134       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0" />
135       <xs:element name="EditRate" type="cpl:Rational" />
136       <xs:element name="IntrinsicDuration" type="xs:long" />
137       <xs:element name="EntryPoint" type="xs:long" minOccurs="0" />
138       <xs:element name="Duration" type="xs:long" minOccurs="0" />
139     </xs:sequence>
140   </xs:complexType>
141
142   <!-- TrackFileAsset Type -->
143   <xs:complexType name="TrackFileAssetType" abstract="1">
144     <xs:complexContent>
145       <xs:extension base="cpl:GenericAssetType">
146         <xs:sequence>
147           <xs:element name="KeyId" type="cpl:UUID" minOccurs="0"/>
148           <xs:element name="Hash" type="xs:base64Binary" minOccurs="0"/>
149         </xs:sequence>
150       </xs:extension>
151     </xs:complexContent>
152   </xs:complexType>
153
154   <!-- SoundTrackFileAsset Type -->
155   <xs:complexType name="SoundTrackFileAssetType">
156     <xs:complexContent>
157       <xs:extension base="cpl:TrackFileAssetType">
158         <xs:sequence>
159           <xs:element name="Language" type="xs:language" minOccurs="0"/>
160         </xs:sequence>
161       </xs:extension>
162     </xs:complexContent>
163   </xs:complexType>
164
165   <!-- SubtitleTrackFileAsset Type -->
166   <xs:complexType name="SubtitleTrackFileAssetType">
167     <xs:complexContent>
168       <xs:extension base="cpl:TrackFileAssetType">
169         <xs:sequence>
170           <xs:element name="Language" type="xs:language" minOccurs="0"/>
171         </xs:sequence>
172       </xs:extension>
173     </xs:complexContent>
174   </xs:complexType>
175
176   <!-- PictureTrackFileAsset Type -->
177   <xs:complexType name="PictureTrackFileAssetType">
178     <xs:complexContent>
179       <xs:extension base="cpl:TrackFileAssetType">
180         <xs:sequence>
181           <xs:element name="FrameRate" type="cpl:Rational"/>
182           <xs:element name="ScreenAspectRatio">
183             <xs:complexType>
184               <xs:simpleContent>
185                 <xs:extension base="xs:decimal">
186                   <xs:attribute name="scope" type="xs:anyURI" use="optional" default="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#standard-aspectratio"/>
187                 </xs:extension>
188               </xs:simpleContent>
189             </xs:complexType>
190           </xs:element>
191         </xs:sequence>
192       </xs:extension>
193     </xs:complexContent>
194   </xs:complexType>
195
196   <!-- MarkerAsset Type -->
197   <xs:complexType name="MarkerAssetType">
198     <xs:complexContent>
199       <xs:extension base="cpl:GenericAssetType">
200         <xs:sequence>
201           <xs:element name="MarkerList">
202             <xs:complexType>
203               <xs:sequence>
204                 <xs:element name="Marker" type="cpl:MarkerType" minOccurs="0" maxOccurs="unbounded"/>
205               </xs:sequence>
206             </xs:complexType>
207           </xs:element>
208         </xs:sequence>
209       </xs:extension>
210     </xs:complexContent>
211   </xs:complexType>
212
213   <!-- ProjectorDataAsset Type -->
214   <xs:complexType name="ProjectorDataAssetType">
215     <xs:complexContent>
216       <xs:extension base="cpl:GenericAssetType">
217         <xs:sequence>
218           <xs:element name="DataInfo" type="xs:string" minOccurs="0"/>
219         </xs:sequence>
220       </xs:extension>
221     </xs:complexContent>
222   </xs:complexType>
223
224   <!-- Rational Type -->
225   <xs:simpleType name="Rational">
226     <xs:restriction>
227       <xs:simpleType>
228         <xs:list itemType="xs:long"/>
229       </xs:simpleType>
230       <xs:length value="2"/>
231     </xs:restriction>
232   </xs:simpleType>
233
234   <!-- UUID Type -->
235   <xs:simpleType name="UUID">
236     <xs:restriction base="xs:anyURI">
237       <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}" />
238     </xs:restriction>
239   </xs:simpleType>
240
241   <!-- UserText Type -->
242   <xs:complexType name="UserText">
243     <xs:simpleContent>
244       <xs:extension base="xs:string">
245         <xs:attribute ref="xml:lang" use="optional" default="en"/>
246       </xs:extension>
247     </xs:simpleContent>
248   </xs:complexType>
249
250 </xs:schema>
251