In-line run of subs_in_out so that it gets the environment more easily.
[libdcp.git] / xsd / SMPTE-429-7-2006-CPL.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema targetNamespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
4   <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
5   <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
6
7   <!-- CompositionPlaylist -->
8   <xs:element name="CompositionPlaylist" type="cpl:CompositionPlaylistType"/>
9   <xs:complexType name="CompositionPlaylistType">
10     <xs:sequence>
11       <xs:element name="Id" type="cpl:UUID"/>
12       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0"/>
13       <xs:element name="IconId" type="cpl:UUID" minOccurs="0"/>
14       <xs:element name="IssueDate" type="xs:dateTime"/>
15       <xs:element name="Issuer" type="cpl:UserText" minOccurs="0"/>
16       <xs:element name="Creator" type="cpl:UserText" minOccurs="0"/>
17       <xs:element name="ContentTitleText" type="cpl:UserText"/>
18       <xs:element name="ContentKind" type="cpl:ContentKindType"/>
19       <xs:element name="ContentVersion" type="cpl:ContentVersionType"/>
20       <xs:element name="RatingList">
21         <xs:complexType>
22           <xs:sequence>
23             <xs:element name="Rating" type="cpl:RatingType" minOccurs="0" maxOccurs="unbounded"/>
24           </xs:sequence>
25         </xs:complexType>
26       </xs:element>
27       <xs:element name="ReelList">
28         <xs:complexType>
29           <xs:sequence>
30             <xs:element name="Reel" type="cpl:ReelType" maxOccurs="unbounded"/>
31           </xs:sequence>
32         </xs:complexType>
33       </xs:element>
34       <xs:element name="Signer" type="ds:KeyInfoType" minOccurs="0"/>
35       <xs:element ref="ds:Signature" minOccurs="0"/>
36     </xs:sequence>
37   </xs:complexType>
38
39   <!-- Marker -->
40   <xs:complexType name="MarkerType">
41     <xs:sequence>
42       <xs:element name="Label">
43         <xs:complexType>
44           <xs:simpleContent>
45             <xs:extension base="xs:string">
46               <xs:attribute name="scope" type="xs:anyURI" use="optional" default="http://www.smpte-ra.org/schemas/429-7/2006/CPL#standard-markers"/>
47             </xs:extension>
48           </xs:simpleContent>
49         </xs:complexType>
50       </xs:element>
51       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0"/>
52       <xs:element name="Offset">
53         <xs:simpleType>
54           <xs:restriction base="xs:long">
55             <xs:minInclusive value="0"/>
56           </xs:restriction>
57         </xs:simpleType>
58       </xs:element>
59     </xs:sequence>
60   </xs:complexType>
61
62   <!-- Rating -->
63   <xs:complexType name="RatingType">
64     <xs:sequence>
65       <xs:element name="Agency" type="xs:anyURI"/>
66       <xs:element name="Label" type="xs:string"/>
67     </xs:sequence>
68   </xs:complexType>
69
70   <!-- ContentKind -->
71   <xs:complexType name="ContentKindType">
72     <xs:simpleContent>
73       <xs:extension base="xs:string">
74         <xs:attribute name="scope" type="xs:anyURI" use="optional" default="http://www.smpte-ra.org/schemas/429-7/2006/CPL#standard-content"/>
75       </xs:extension>
76     </xs:simpleContent>
77   </xs:complexType>
78
79   <!-- ContentVersion -->
80   <xs:complexType name="ContentVersionType">
81     <xs:sequence>
82       <xs:element name="Id" type="xs:anyURI"/>
83       <xs:element name="LabelText" type="cpl:UserText"/>
84     </xs:sequence>
85   </xs:complexType>
86
87   <!-- Reel -->
88   <xs:complexType name="ReelType">
89     <xs:sequence>
90       <xs:element name="Id" type="cpl:UUID"/>
91       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0"/>
92       <xs:element name="AssetList">
93         <xs:complexType>
94           <xs:sequence>
95             <xs:element name="MainMarkers" type="cpl:MarkerAssetType" minOccurs="0"/>
96             <xs:element name="MainPicture" type="cpl:PictureTrackFileAssetType" minOccurs="0"/>
97             <xs:element name="MainSound" type="cpl:SoundTrackFileAssetType" minOccurs="0"/>
98             <xs:element name="MainSubtitle" type="cpl:SubtitleTrackFileAssetType" minOccurs="0"/>
99             <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict" />
100           </xs:sequence>
101         </xs:complexType>
102       </xs:element>
103     </xs:sequence>
104   </xs:complexType>
105
106   <!-- GenericAssetType -->
107   <xs:complexType name="GenericAssetType" abstract="1">
108     <xs:sequence>
109       <xs:element name="Id" type="cpl:UUID"/>
110       <xs:element name="AnnotationText" type="cpl:UserText" minOccurs="0"/>
111       <xs:element name="EditRate" type="cpl:Rational"/>
112       <xs:element name="IntrinsicDuration" type="xs:long"/>
113       <xs:element name="EntryPoint" type="xs:long" minOccurs="0"/>
114       <xs:element name="Duration" type="xs:long" minOccurs="0"/>
115     </xs:sequence>
116   </xs:complexType>
117
118   <!-- TrackFileAssetType -->
119   <xs:complexType name="TrackFileAssetType" abstract="1">
120     <xs:complexContent>
121       <xs:extension base="cpl:GenericAssetType">
122         <xs:sequence>
123           <xs:element name="KeyId" type="cpl:UUID" minOccurs="0"/>
124           <xs:element name="Hash" type="xs:base64Binary" minOccurs="0"/>
125         </xs:sequence>
126       </xs:extension>
127     </xs:complexContent>
128   </xs:complexType>
129
130   <!-- SoundTrackFileAssetType -->
131   <xs:complexType name="SoundTrackFileAssetType">
132     <xs:complexContent>
133       <xs:extension base="cpl:TrackFileAssetType">
134         <xs:sequence>
135           <xs:element name="Language" type="xs:language" minOccurs="0"/>
136         </xs:sequence>
137       </xs:extension>
138     </xs:complexContent>
139   </xs:complexType>
140
141   <!-- SubtitleTrackFileAssetType -->
142   <xs:complexType name="SubtitleTrackFileAssetType">
143     <xs:complexContent>
144       <xs:extension base="cpl:TrackFileAssetType">
145         <xs:sequence>
146           <xs:element name="Language" type="xs:language" minOccurs="0"/>
147         </xs:sequence>
148       </xs:extension>
149     </xs:complexContent>
150   </xs:complexType>
151
152   <!-- PictureTrackFileAssetType -->
153   <xs:complexType name="PictureTrackFileAssetType">
154     <xs:complexContent>
155       <xs:extension base="cpl:TrackFileAssetType">
156         <xs:sequence>
157           <xs:element name="FrameRate" type="cpl:Rational"/>
158           <xs:element name="ScreenAspectRatio" type="cpl:Rational"/>
159         </xs:sequence>
160       </xs:extension>
161     </xs:complexContent>
162   </xs:complexType>
163
164   <!-- MarkerAssetType -->
165   <xs:complexType name="MarkerAssetType">
166     <xs:complexContent>
167       <xs:extension base="cpl:GenericAssetType">
168         <xs:sequence>
169           <xs:element name="MarkerList">
170             <xs:complexType>
171               <xs:sequence>
172                 <xs:element name="Marker" type="cpl:MarkerType" minOccurs="0" maxOccurs="unbounded"/>
173               </xs:sequence>
174             </xs:complexType>
175           </xs:element>
176         </xs:sequence>
177       </xs:extension>
178     </xs:complexContent>
179   </xs:complexType>
180
181   <!-- Rational -->
182   <xs:simpleType name="Rational">
183     <xs:restriction>
184       <xs:simpleType>
185         <xs:list itemType="xs:long"/>
186       </xs:simpleType>
187       <xs:length value="2"/>
188     </xs:restriction>
189   </xs:simpleType>
190
191   <!-- UUID -->
192   <xs:simpleType name="UUID">
193     <xs:restriction base="xs:anyURI">
194       <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}"/>
195     </xs:restriction>
196   </xs:simpleType>
197
198   <!-- UserText -->
199   <xs:complexType name="UserText">
200     <xs:simpleContent>
201       <xs:extension base="xs:string">
202         <xs:attribute name="language" type="xs:language" use="optional" default="en"/>
203       </xs:extension>
204     </xs:simpleContent>
205   </xs:complexType>
206
207 </xs:schema>
208