Update the GUPnP-AV.changes file.
[profile/ivi/GUPnP-AV.git] / data / upnp.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsd:schema xmlns:av="urn:schemas-upnp-org:av:av" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:schemas-upnp-org:metadata-1-0/upnp/" elementFormDefault="qualified" attributeFormDefault="unqualified" version="4-20101231">
3         <xsd:annotation>
4                 <xsd:documentation xml:lang="en">
5                 Note that all schema supplied by the UPnP Forum AV WC committee are for informational use only and that the
6                 standardized DCPs describe the normative requirements for these schema. Some schema provided do not necessarily
7                 embody requirements regarding number of element occurrances allowed or their ordering.
8
9                 </xsd:documentation>
10         </xsd:annotation>
11
12         <!-- This schema defines the upnp namespace tags that are employed
13                 as descriptors by the DIDL-Lite schema -->
14         <xsd:import namespace="urn:schemas-upnp-org:av:av" schemaLocation="http://www.upnp.org/schemas/av/av.xsd"/>
15         <xsd:group name="class.group">
16                 <xsd:sequence>
17                         <xsd:element name="class" type="upnp:class.type"/>
18                 </xsd:sequence>
19         </xsd:group>
20         <xsd:group name="upnpForContainer">
21                 <xsd:choice>
22                         <!--=============================-=============================-->
23                         <!--                      Base Properties                      -->
24                         <!--=============================-=============================-->
25                         <xsd:element name="searchClass" type="upnp:searchClass.type"/>
26                         <xsd:element name="createClass" type="upnp:searchClass.type"/>
27                         <xsd:element name="writeStatus" type="upnp:status.type"/>
28                         <!--=============================-=============================-->
29                         <!--                 objectLink Properties                  -->
30                         <!--=============================-=============================-->
31                         <xsd:element name="objectLink" type="upnp:objectLink.type"/>
32                         <xsd:element name="objectLinkRef" type="upnp:objectLinkRef.type"/>
33                         <!--=============================-=============================-->
34                         <!--                 resExt Properties                   -->
35                         <!--=============================-=============================-->
36                         <xsd:element name="resExt" type="upnp:resExt.type"/>
37                         <!--=============================-=============================-->
38                         <!--               Contributor Related Properties              -->
39                         <!--=============================-=============================-->
40                         <xsd:element name="artist" type="upnp:personWithRole.type"/>
41                         <xsd:element name="actor" type="upnp:personWithRole.type"/>
42                         <xsd:element name="author" type="upnp:personWithRole.type"/>
43                         <xsd:element name="producer" type="upnp:person.type"/>
44                         <xsd:element name="director" type="upnp:person.type"/>
45                         <!--=============================-=============================-->
46                         <!--               Affiliation Related Properties              -->
47                         <!--=============================-=============================-->
48                         <xsd:element name="genre" type="upnp:genre.type"/>
49                         <xsd:element name="album" type="av:_title.type"/>
50                         <xsd:element name="playlist" type="av:_title.type"/>
51                         <!--=============================-=============================-->
52                         <!--              Associated Resources Properties              -->
53                         <!--=============================-=============================-->
54                         <xsd:element name="albumArtURI" type="xsd:anyURI"/>
55                         <xsd:element name="artistDiscographyURI" type="xsd:anyURI"/>
56                         <xsd:element name="lyricsURI" type="xsd:anyURI"/>
57                         <!-- Should have something restricting dc:relation to a URI. -->
58                         <!--=============================-=============================-->
59                         <!--                 Storage Related Properties                -->
60                         <!--=============================-=============================-->
61                         <xsd:element name="storageTotal" type="av:long.-1_"/>
62                         <xsd:element name="storageUsed" type="av:long.-1_"/>
63                         <xsd:element name="storageFree" type="av:long.-1_"/>
64                         <xsd:element name="storageMaxPartition" type="av:long.-1_"/>
65                         <xsd:element name="storageMedium" type="av:storageMedium.values"/>
66                         <!--=============================-=============================-->
67                         <!--               General Description Properties              -->
68                         <!--                   (mainly for UI purposes)                -->
69                         <!--=============================-=============================-->
70                         <xsd:element name="longDescription" type="xsd:string"/>
71                         <xsd:element name="icon" type="xsd:anyURI"/>
72                         <xsd:element name="region" type="xsd:string"/>
73                         <xsd:element name="rights" type="xsd:string"/>
74                         <xsd:element name="playbackCount" type="av:int.-1_"/>
75                         <xsd:element name="lastPlaybackTime" type="upnp:qualifiedDateTime"/>
76                         <xsd:element name="lastPlaybackPosition" type="av:unsignedDuration"/>
77                         <xsd:element name="recordedStartDateTime" type="upnp:qualifiedDateTime"/>
78                         <xsd:element name="recordedDuration" type="av:unsignedDuration"/>
79                         <xsd:element name="recordedDayOfWeek" type="av:dayOfWeek.en.len.3"/>
80                         <xsd:element name="srsRecordSchedule" type="av:srs_COLON_at_id.vd.type"/>
81                         <xsd:element name="srsRecordTaskID" type="av:srs_COLON_at_id.vd.type"/>
82                         <xsd:element name="recordable" type="xsd:boolean"/>
83                         <!--=============================-=============================-->
84                         <!--            Recorded Object Related Properties             -->
85                         <!--=============================-=============================-->
86                         <xsd:element name="programTitle" type="xsd:string"/>
87                         <xsd:element name="seriesTitle" type="xsd:string"/>
88                         <xsd:element name="programID" type="av:programID.type"/>
89                         <xsd:element name="seriesID" type="av:programID.type"/>
90                         <xsd:element name="channelID" type="av:channelID.type"/>
91                         <xsd:element name="episodeCount" type="xsd:unsignedInt"/>
92                         <xsd:element name="episodeNumber" type="xsd:unsignedInt"/>
93                         <xsd:element name="programCode" type="av:programCode.type"/>
94                         <xsd:element name="rating" type="av:rating.type"/>
95                         <xsd:element name="episodeType" type="av:FIRST-RUN.or.REPEAT"/>
96                         <xsd:element name="programPreserved" type="upnp:programPreserved.Type"/>
97                         <xsd:element name="preservedTimeRange" type="upnp:preservedTimeRange.Type"/>
98                         <xsd:element name="programList" type="upnp:programList.Type"/>
99                         <!--=============================-=============================-->
100                         <!--          User Channel and EPG Related Properties          -->
101                         <!--=============================-=============================-->
102                         <xsd:element name="channelGroupName" type="av:channelGroupName.type"/>
103                         <xsd:element name="callSign" type="av:stationCallSign.type"/>
104                         <xsd:element name="networkAffiliation" type="xsd:string"/>
105                         <xsd:element name="serviceProvider" type="xsd:string"/>
106                         <xsd:element name="price" type="upnp:price.type"/>
107                         <xsd:element name="payPerView" type="xsd:boolean"/>
108                         <xsd:element name="epgProviderName" type="xsd:string"/>
109                         <xsd:element name="dateTimeRange" type="upnp:qualifiedDateTime-range"/>
110                         <!--=============================-=============================-->
111                         <!--                 Radio Broadcast Properties                -->
112                         <!--=============================-=============================-->
113                         <xsd:element name="radioCallSign" type="av:stationCallSign.type"/>
114                         <xsd:element name="radioStationID" type="xsd:string"/>
115                         <xsd:element name="radioBand" type="av:radioBand.type"/>
116                         <!--=============================-=============================-->
117                         <!--                 Video Broadcast Properties                -->
118                         <!--=============================-=============================-->
119                         <xsd:element name="channelNr" type="xsd:int"/>
120                         <xsd:element name="channelName" type="xsd:string"/>
121                         <xsd:element name="scheduledStartTime" type="upnp:qualifiedDateTime.ISO8601"/>
122                         <xsd:element name="scheduledEndTime" type="upnp:qualifiedDateTime.ISO8601"/>
123                         <xsd:element name="scheduledDuration" type="av:unsignedDuration"/>
124                         <!--=============================-=============================-->
125                         <!--          Physical Tuner Status-related Properties         -->
126                         <!--=============================-=============================-->
127                         <xsd:element name="signalStrength" type="av:signalStrength.type"/>
128                         <xsd:element name="signalLocked" type="xsd:boolean"/>
129                         <xsd:element name="tuned" type="xsd:boolean"/>
130                         <!--=============================-=============================-->
131                         <!--                Bookmark Related Properties                -->
132                         <!--=============================-=============================-->
133                         <xsd:element name="bookmarkID" type="av:didl-lite_COLON_at_id.vd.type"/>
134                         <xsd:element name="bookmarkedObjectID" type="av:didl-lite_COLON_at_id.vd.type"/>
135                         <xsd:element name="deviceUDN" type="av:deviceUDN.type"/>
136                         <xsd:element name="stateVariableCollection" type="upnp:stateVariableCollection.type"/>
137                         <!--=============================-=============================-->
138                         <!--            Foreign Metadata Related Properties            -->
139                         <!--=============================-=============================-->
140                         <xsd:element name="foreignMetadata" type="upnp:foreignMetadata.type"/>
141                         <!--=============================-=============================-->
142                         <!--                 Miscellaneous Properties                  -->
143                         <!--=============================-=============================-->
144                         <xsd:element name="DVDRegionCode" type="xsd:int"/>
145                         <xsd:element name="originalTrackNumber" type="xsd:int"/>
146                         <xsd:element name="toc" type="xsd:string"/>
147                         <xsd:element name="userAnnotation" type="xsd:string"/>
148                         <!--=============================-=============================-->
149                         <!--                 Object Tracking Properties                -->
150                         <!--=============================-=============================-->
151                         <xsd:element name="containerUpdateID" type="xsd:unsignedInt"/>
152                         <xsd:element name="objectUpdateID" type="xsd:unsignedInt"/>
153                         <xsd:element name="totalDeletedChildCount" type="xsd:unsignedInt"/>
154                         <xsd:element name="segmentID" type="av:didl-lite_COLON_at_id.vd.type"/>
155                         <!--=============================-=============================-->
156                         <!--                 Content Protection Properties                -->
157                         <!--=============================-=============================-->
158                         <xsd:element name="objectOwner" type="upnp:owner.Type"/>
159                         <xsd:element name="inclusionControl" type="upnp:inclusion.Type"/>
160                 </xsd:choice>
161         </xsd:group>
162         <xsd:group name="upnpForItem">
163                 <xsd:choice>
164                         <xsd:group ref="upnp:upnpForContainer"/>
165                 </xsd:choice>
166         </xsd:group>
167         <!--=============================-=============================-->
168         <!--                      Base Properties                      -->
169         <!--=============================-=============================-->
170         <xsd:simpleType name="className.base.type">
171                 <xsd:restriction base="xsd:NCName">
172                         <xsd:minLength value="11"/>
173                         <xsd:pattern value="object\.(item|container)(\.[\i-[:]][\c-[\.:]]*)*">
174                                 <xsd:annotation>
175                                         <xsd:documentation>
176                                                 This pattern exactly matches the definition for class name syntax
177                                                 given in CDS:2 Section C.1.1.
178                                         </xsd:documentation>
179                                 </xsd:annotation>
180                         </xsd:pattern>
181                 </xsd:restriction>
182         </xsd:simpleType>
183         <xsd:simpleType name="className.wc.type">
184                 <xsd:restriction base="xsd:NCName">
185                         <xsd:enumeration value="object.item"/>
186                         <xsd:enumeration value="object.item.imageItem"/>
187                         <xsd:enumeration value="object.item.imageItem.photo"/>
188                         <xsd:enumeration value="object.item.audioItem"/>
189                         <xsd:enumeration value="object.item.audioItem.musicTrack"/>
190                         <xsd:enumeration value="object.item.audioItem.audioBroadcast"/>
191                         <xsd:enumeration value="object.item.audioItem.audioBook"/>
192                         <xsd:enumeration value="object.item.videoItem"/>
193                         <xsd:enumeration value="object.item.videoItem.movie"/>
194                         <xsd:enumeration value="object.item.videoItem.videoBroadcast"/>
195                         <xsd:enumeration value="object.item.videoItem.musicVideoClip"/>
196                         <xsd:enumeration value="object.item.playlistItem"/>
197                         <xsd:enumeration value="object.item.textItem"/>
198                         <xsd:enumeration value="object.item.bookmarkItem"/>
199                         <xsd:enumeration value="object.item.epgItem"/>
200                         <xsd:enumeration value="object.item.epgItem.audioProgram"/>
201                         <xsd:enumeration value="object.item.epgItem.videoProgram"/>
202                         <xsd:enumeration value="object.container.person"/>
203                         <xsd:enumeration value="object.container.person.musicArtist"/>
204                         <xsd:enumeration value="object.container.playlistContainer"/>
205                         <xsd:enumeration value="object.container.album"/>
206                         <xsd:enumeration value="object.container.album.musicAlbum"/>
207                         <xsd:enumeration value="object.container.album.photoAlbum"/>
208                         <xsd:enumeration value="object.container.genre"/>
209                         <xsd:enumeration value="object.container.genre.musicGenre"/>
210                         <xsd:enumeration value="object.container.genre.movieGenre"/>
211                         <xsd:enumeration value="object.container.channelGroup"/>
212                         <xsd:enumeration value="object.container.channelGroup.audioChannelGroup"/>
213                         <xsd:enumeration value="object.container.channelGroup.videoChannelGroup"/>
214                         <xsd:enumeration value="object.container.epgContainer"/>
215                         <xsd:enumeration value="object.container.storageSystem"/>
216                         <xsd:enumeration value="object.container.storageVolume"/>
217                         <xsd:enumeration value="object.container.storageFolder"/>
218                         <xsd:enumeration value="object.container.bookmarkFolder"/>
219                 </xsd:restriction>
220         </xsd:simpleType>
221         <xsd:simpleType name="_className.type">
222                 <xsd:union memberTypes="upnp:className.wc.type upnp:className.vx.type"/>
223         </xsd:simpleType>
224         <xsd:simpleType name="className.type">
225                 <xsd:restriction base="upnp:_className.type">
226                         <!-- xxx - JGR
227                         <xsd:pattern value="object\.(item|container)(\.[\i-[:]][\c-[\.:]]*)*"/>
228
229                         Somehow including this pattern restriction rejects the <searchClass> element
230                         but not the <class> element from the following snipet taken from the
231                         ForeignMetadata Example #2.  Even when the values are identical, the
232                         <class> element validates and the <searchClass> element fails.
233
234                         <upnp:class>object.container.storageFolder</upnp:class>
235                         <upnp:searchClass includeDerived="false">
236                                 object.container.album.musicAlbum
237                         </upnp:searchClass>
238
239                 This inconsistent behavior needs to be investigated.
240 -->
241                 </xsd:restriction>
242         </xsd:simpleType>
243         <xsd:complexType name="class.type">
244                 <xsd:simpleContent>
245                         <xsd:extension base="upnp:className.type">
246                                 <xsd:attribute name="name" type="xsd:string"/>
247                         </xsd:extension>
248                 </xsd:simpleContent>
249         </xsd:complexType>
250         <xsd:complexType name="searchClass.type">
251                 <xsd:simpleContent>
252                         <xsd:extension base="upnp:class.type">
253                                 <xsd:attribute name="includeDerived" type="xsd:boolean" use="required"/>
254                         </xsd:extension>
255                         <!-- XXX - JGR: Should className.type be used rather than class.type> </-->
256                 </xsd:simpleContent>
257         </xsd:complexType>
258         <xsd:complexType name="qualifiedDateTime">
259                 <xsd:simpleContent>
260                         <xsd:extension base="av:dateTime">
261                                 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
262                         </xsd:extension>
263                 </xsd:simpleContent>
264         </xsd:complexType>
265         <xsd:complexType name="qualifiedDateTime-range">
266                 <xsd:simpleContent>
267                         <xsd:extension base="av:dateTime-range">
268                                 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
269                         </xsd:extension>
270                 </xsd:simpleContent>
271         </xsd:complexType>
272         <xsd:attributeGroup name="dateTime.attr.group">
273                 <xsd:attribute name="daylightSaving" type="av:daylightSaving.type" use="optional"/>
274         </xsd:attributeGroup>
275         <xsd:simpleType name="status.type">
276                 <xsd:restriction base="xsd:string">
277                         <xsd:enumeration value="WRITABLE"/>
278                         <xsd:enumeration value="PROTECTED"/>
279                         <xsd:enumeration value="NOT_WRITABLE"/>
280                         <xsd:enumeration value="UNKNOWN"/>
281                         <xsd:enumeration value="MIXED"/>
282                 </xsd:restriction>
283         </xsd:simpleType>
284         <!--=============================-=============================-->
285         <!--               Contributor Related Properties              -->
286         <!--=============================-=============================-->
287         <xsd:complexType name="personWithRole.type">
288                 <xsd:simpleContent>
289                         <xsd:extension base="upnp:person.type">
290                                 <xsd:attribute name="role" type="xsd:string"/>
291                         </xsd:extension>
292                 </xsd:simpleContent>
293         </xsd:complexType>
294         <xsd:simpleType name="person.type">
295                 <xsd:restriction base="xsd:string"/>
296         </xsd:simpleType>
297         <!--=============================-=============================-->
298         <!--               Affiliation Related Properties              -->
299         <!--=============================-=============================-->
300         <xsd:complexType name="genre.type">
301                 <xsd:simpleContent>
302                         <xsd:extension base="av:_title.type">
303                                 <xsd:attribute name="id" type="av:string.domainNamePrefixed"/>
304                                 <xsd:attribute name="extended" type="av:csv.1_.string.len.1_"/>
305                         </xsd:extension>
306                 </xsd:simpleContent>
307         </xsd:complexType>
308         <!--=============================-=============================-->
309         <!--              Associated Resources Properties              -->
310         <!--=============================-=============================-->
311         <!--           This section intentionally left blank           -->
312         <!--=============================-=============================-->
313         <!--                 Storage Related Properties                -->
314         <!--=============================-=============================-->
315         <!--           This section intentionally left blank           -->
316         <!--=============================-=============================-->
317         <!--               General Description Properties              -->
318         <!--                   (mainly for UI purposes)                -->
319         <!--=============================-=============================-->
320         <!--           This section intentionally left blank           -->
321         <!--=============================-=============================-->
322         <!--            Recorded Object Related Properties             -->
323         <!--=============================-=============================-->
324         <!--           This section intentionally left blank           -->
325         <!--=============================-=============================-->
326         <!--          User Channel and EPG Related Properties          -->
327         <!--=============================-=============================-->
328         <xsd:complexType name="price.type">
329                 <xsd:simpleContent>
330                         <xsd:extension base="xsd:float">
331                                 <xsd:attribute name="currency" type="xsd:string" use="required"/>
332                         </xsd:extension>
333                 </xsd:simpleContent>
334         </xsd:complexType>
335         <!--=============================-=============================-->
336         <!--                 Radio Broadcast Properties                -->
337         <!--=============================-=============================-->
338         <!--=============================-=============================-->
339         <!--                 Video Broadcast Properties                -->
340         <!--=============================-=============================-->
341         <xsd:complexType name="qualifiedDateTime.ISO8601">
342                 <xsd:simpleContent>
343                         <xsd:extension base="xsd:string">
344                                 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
345                         </xsd:extension>
346                 </xsd:simpleContent>
347         </xsd:complexType>
348         <xsd:complexType name="qualifiedDateTime.ISO8601andUsage">
349                 <xsd:simpleContent>
350                         <xsd:extension base="xsd:string">
351                                 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
352                                 <xsd:attribute name="usage" type="av:startTimeUsage"/>
353                         </xsd:extension>
354                 </xsd:simpleContent>
355         </xsd:complexType>
356         <!--=============================-=============================-->
357         <!--          Physical Tuner Status-related Properties         -->
358         <!--=============================-=============================-->
359         <!--=============================-=============================-->
360         <!--                Bookmark Related Properties                -->
361         <!--=============================-=============================-->
362         <xsd:complexType name="stateVariableCollection.type">
363                 <xsd:simpleContent>
364                         <xsd:extension base="xsd:string">
365                                 <xsd:attributeGroup ref="upnp:serviceAttrGrp"/>
366                         </xsd:extension>
367                 </xsd:simpleContent>
368         </xsd:complexType>
369         <xsd:attributeGroup name="serviceAttrGrp">
370                 <xsd:attribute name="serviceName" use="required">
371                         <xsd:simpleType>
372                                 <xsd:restriction base="xsd:string">
373                                         <xsd:enumeration value="AVTransport"/>
374                                         <xsd:enumeration value="RenderingControl"/>
375                                 </xsd:restriction>
376                         </xsd:simpleType>
377                 </xsd:attribute>
378                 <xsd:attribute name="rcsInstanceType">
379                         <xsd:simpleType>
380                                 <xsd:restriction base="xsd:string">
381                                         <xsd:enumeration value="pre-mix"/>
382                                         <xsd:enumeration value="post-mix"/>
383                                 </xsd:restriction>
384                         </xsd:simpleType>
385                 </xsd:attribute>
386         </xsd:attributeGroup>
387         <xsd:complexType name="stateVariable.type">
388                 <xsd:attribute name="variableName" type="xsd:string" use="required"/>
389                 <xsd:attribute name="channel" type="xsd:string" use="optional"/>
390         </xsd:complexType>
391         <!--=============================-=============================-->
392         <!--            Foreign Metadata Related Properties            -->
393         <!--=============================-=============================-->
394         <xsd:complexType name="foreignMetadata.type">
395                 <xsd:annotation>
396                         <xsd:documentation>
397                                 WC-defined structure for the Foreign Metadata property.
398                         </xsd:documentation>
399                 </xsd:annotation>
400                 <xsd:sequence>
401                         <xsd:group ref="upnp:fm.elements.group"/>
402                 </xsd:sequence>
403                 <xsd:attributeGroup ref="upnp:fm.attributes.group"/>
404         </xsd:complexType>
405         <xsd:attributeGroup name="fm.attributes.group">
406                 <xsd:attribute name="type" use="required">
407                         <xsd:simpleType>
408                                 <xsd:restriction base="xsd:string">
409                                         <xsd:pattern value="[a-zA-Z0-9_.]+"/>
410                                 </xsd:restriction>
411                         </xsd:simpleType>
412                 </xsd:attribute>
413                 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
414         </xsd:attributeGroup>
415         <xsd:group name="fm.elements.group">
416                 <xsd:sequence>
417                         <xsd:group ref="upnp:fm.elements.wc.group" minOccurs="0" maxOccurs="unbounded"/>
418                         <xsd:group ref="upnp:fm.elements.vx.group" minOccurs="0" maxOccurs="unbounded"/>
419                 </xsd:sequence>
420         </xsd:group>
421         <xsd:group name="fm.elements.vx.group">
422                 <xsd:annotation>
423                         <xsd:documentation>
424                                 Allow the Foreign Metadata tag to also hold vendor-defined elements.
425                         </xsd:documentation>
426                 </xsd:annotation>
427                 <xsd:sequence>
428                         <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
429                 </xsd:sequence>
430         </xsd:group>
431         <xsd:group name="fm.elements.wc.group">
432                 <xsd:annotation>
433                         <xsd:documentation>
434                                 Foreign Metadata sub-elements defined by the WC.
435                         </xsd:documentation>
436                 </xsd:annotation>
437                 <xsd:choice>
438                         <xsd:element name="fmId" type="xsd:string"/>
439                         <xsd:element name="fmClass" type="xsd:string"/>
440                         <xsd:element name="fmProvider" type="xsd:string"/>
441                         <xsd:element name="fmBody" type="upnp:fm.elements.body.type"/>
442                 </xsd:choice>
443         </xsd:group>
444         <xsd:complexType name="fm.elements.body.type">
445                 <xsd:annotation>
446                         <xsd:documentation>
447                                 Contains the actual foreign metadata.
448                         </xsd:documentation>
449                 </xsd:annotation>
450                 <xsd:choice>
451                         <xsd:element name="fmEmbeddedXML" type="upnp:fm.elements.body.embeddedXML.type"/>
452                         <xsd:element name="fmEmbeddedString" type="upnp:fm.elements.body.embeddedString.type"/>
453                         <xsd:element name="fmURI" type="upnp:fm.elements.body.uri.type"/>
454                 </xsd:choice>
455                 <xsd:attributeGroup ref="upnp:fm.attrs.bodyAttr.group"/>
456                 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
457         </xsd:complexType>
458         <xsd:attributeGroup name="fm.attrs.bodyAttr.group">
459                 <xsd:attribute name="xmlFlag" type="xsd:boolean" use="required"/>
460                 <xsd:attribute name="mimeType">
461                         <xsd:simpleType>
462                                 <xsd:restriction base="xsd:string">
463                                         <xsd:pattern value="[a-zA-Z0-9_./]+"/>
464                                 </xsd:restriction>
465                         </xsd:simpleType>
466                 </xsd:attribute>
467         </xsd:attributeGroup>
468         <xsd:complexType name="fm.elements.body.embeddedXML.type">
469                 <xsd:annotation>
470                         <xsd:documentation>
471                                 Tags allowed inside a Foreign Metadata Body URI element.
472                         </xsd:documentation>
473                 </xsd:annotation>
474                 <xsd:choice minOccurs="0" maxOccurs="unbounded">
475                         <xsd:any namespace="##other" processContents="lax"/>
476                 </xsd:choice>
477         </xsd:complexType>
478         <xsd:complexType name="fm.elements.body.embeddedString.type">
479                 <xsd:annotation>
480                         <xsd:documentation>
481                                 Tags allowed inside a Foreign Metadata Body URI element.
482                         </xsd:documentation>
483                 </xsd:annotation>
484                 <xsd:simpleContent>
485                         <xsd:extension base="xsd:string">
486                                 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
487                         </xsd:extension>
488                         <!-- Placeholder for future WC attributes. -->
489                 </xsd:simpleContent>
490         </xsd:complexType>
491         <xsd:complexType name="fm.elements.body.uri.type">
492                 <xsd:simpleContent>
493                         <xsd:extension base="xsd:anyURI">
494                                 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
495                         </xsd:extension>
496                 </xsd:simpleContent>
497         </xsd:complexType>
498         <xsd:attributeGroup name="fm.extensions.attributes.any">
499                 <xsd:attributeGroup ref="av:extensions.attributes.any"/>
500         </xsd:attributeGroup>
501         <!--===================================================================-->
502         <!--                                                                   -->
503         <!--                   Extension Component Datatypes                   -->
504         <!--                                                                   -->
505         <!--===================================================================-->
506         <xsd:simpleType name="className.vx.type">
507                 <xsd:restriction base="upnp:className.base.type"/>
508         </xsd:simpleType>
509         <xsd:simpleType name="foreignMetadata.element.vx.type">
510                 <xsd:restriction base="xsd:string"/>
511         </xsd:simpleType>
512         <!--=============================-=============================-->
513         <!--            ObjectLink Related Properties            -->
514         <!--=============================-=============================-->
515         <xsd:complexType name="objectLink.type">
516                 <xsd:choice minOccurs="0" maxOccurs="unbounded">
517                         <xsd:element name="title" type="xsd:string" maxOccurs="1"/>
518                         <xsd:element name="startObject" type="xsd:boolean" minOccurs="0"/>
519                         <xsd:element name="mode" maxOccurs="1">
520                                 <xsd:simpleType>
521                                         <xsd:restriction base="xsd:string">
522                                                 <xsd:enumeration value="Playback"/>
523                                                 <xsd:enumeration value="Step"/>
524                                                 <xsd:enumeration value="Index"/>
525                                         </xsd:restriction>
526                                 </xsd:simpleType>
527                         </xsd:element>
528                         <xsd:element name="relatedInfo" minOccurs="0">
529                                 <xsd:complexType mixed="true">
530                                         <xsd:simpleContent>
531                                                 <xsd:extension base="xsd:string">
532                                                         <xsd:attribute name="role" use="required">
533                                                                 <xsd:simpleType>
534                                                                         <xsd:restriction base="xsd:string">
535                                                                                 <xsd:pattern value="[A-Za-z0-9]+.*"/>
536                                                                         </xsd:restriction>
537                                                                 </xsd:simpleType>
538                                                         </xsd:attribute>
539                                                         <xsd:attribute name="roleText" type="xsd:string" use="required"/>
540                                                 </xsd:extension>
541                                         </xsd:simpleContent>
542                                 </xsd:complexType>
543                         </xsd:element>
544                         <xsd:element name="startInfo" minOccurs="0">
545                                 <xsd:complexType>
546                                         <xsd:attribute name="targetGroupID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
547                                         <xsd:attribute name="targetObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
548                                 </xsd:complexType>
549                         </xsd:element>
550                         <xsd:element name="endAction" minOccurs="0">
551                                 <xsd:complexType>
552                                         <xsd:attribute name="action" use="required">
553                                                 <xsd:simpleType>
554                                                         <xsd:restriction base="xsd:string">
555                                                                 <xsd:enumeration value="Return"/>
556                                                                 <xsd:enumeration value="Branch"/>
557                                                                 <xsd:enumeration value="Stop"/>
558                                                         </xsd:restriction>
559                                                 </xsd:simpleType>
560                                         </xsd:attribute>
561                                         <xsd:attribute name="targetGroupID" type="av:didl-lite_COLON_at_id.vd.type" use="optional"/>
562                                         <xsd:attribute name="targetObjID" type="av:didl-lite_COLON_at_id.vd.type" use="optional"/>
563                                 </xsd:complexType>
564                         </xsd:element>
565                 </xsd:choice>
566                 <xsd:attribute name="groupID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
567                 <xsd:attribute name="headObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
568                 <xsd:attribute name="nextObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
569                 <xsd:attribute name="prevObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
570         </xsd:complexType>
571         <!--=============================-=============================-->
572         <!--            ObjectLinkRef Related Properties            -->
573         <!--=============================-=============================-->
574         <xsd:complexType name="objectLinkRef.type">
575                 <xsd:choice minOccurs="0" maxOccurs="1">
576                         <xsd:element name="title" maxOccurs="1"/>
577                         <xsd:element name="startObject" type="xsd:boolean" minOccurs="0"/>
578                         <xsd:element name="relatedInfo" minOccurs="0">
579                                 <xsd:complexType>
580                                         <xsd:attribute name="role" use="required">
581                                                 <xsd:simpleType>
582                                                         <xsd:restriction base="xsd:string">
583                                                                 <xsd:pattern value="[A-Za-z0-9]+.*"/>
584                                                         </xsd:restriction>
585                                                 </xsd:simpleType>
586                                         </xsd:attribute>
587                                         <xsd:attribute name="roleText" type="xsd:string" use="required"/>
588                                 </xsd:complexType>
589                         </xsd:element>
590                 </xsd:choice>
591                 <xsd:attribute name="groupID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
592                 <xsd:attribute name="targetGroup" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
593                 <xsd:attribute name="targetObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
594                 <xsd:attribute name="return" type="xsd:boolean" use="optional"/>
595         </xsd:complexType>
596         <!--=============================-=============================-->
597         <!--            resExt Related Properties            -->
598         <!--=============================-=============================-->
599         <xsd:complexType name="resExt.type">
600                 <xsd:annotation>
601                         <xsd:documentation xml:lang="en">
602         Defines the permitted child elements of &lt;resExt&gt;. All children are optional and can be listed in any order in an unbounded manner.
603       </xsd:documentation>
604                 </xsd:annotation>
605                 <xsd:choice minOccurs="0" maxOccurs="unbounded">
606                         <xsd:element name="segmentInfo" type="upnp:segmentInfo.Type"/>
607                         <xsd:element name="clockSync" type="upnp:clockSync.Type"/>
608                         <xsd:element name="DRMInfo" type="upnp:DRMInfo.Type"/>
609                         <xsd:element name="isSyncAnchor" type="xsd:string"/>
610                         <xsd:element name="componentInfo" type="upnp:componentInfo.Type"/>
611                 </xsd:choice>
612                 <xsd:attribute name="id" type="av:didl-lite_COLON_at_id.vd.type" use="required">
613                         <xsd:annotation>
614                                 <xsd:documentation xml:lang="en">
615           Must be child of &lt;item&gt; or &lt;container&gt;. Value must match the res@id value.
616         </xsd:documentation>
617                         </xsd:annotation>
618                 </xsd:attribute>
619         </xsd:complexType>
620         <!--=============================-=============================-->
621         <!--            segmentInfo Related Properties            -->
622         <!--=============================-=============================-->
623         <xsd:complexType name="segmentInfo.Type">
624                 <xsd:sequence>
625                         <xsd:element name="timeRange">
626                                 <xsd:complexType>
627                                         <xsd:attribute name="start" type="av:duration.cds1.decFrac" use="required"/>
628                                         <xsd:attribute name="end" type="av:duration.cds1.decFrac" use="required"/>
629                                 </xsd:complexType>
630                         </xsd:element>
631                         <xsd:element name="byteRange" minOccurs="0">
632                                 <xsd:complexType>
633                                         <xsd:attribute name="start" type="xsd:unsignedLong" use="required"/>
634                                         <xsd:attribute name="end" type="xsd:unsignedLong" use="required"/>
635                                 </xsd:complexType>
636                         </xsd:element>
637                         <xsd:element name="frameRange" minOccurs="0">
638                                 <xsd:complexType>
639                                         <xsd:attribute name="start" type="xsd:unsignedLong" use="required"/>
640                                         <xsd:attribute name="end" type="xsd:unsignedLong" use="required"/>
641                                 </xsd:complexType>
642                         </xsd:element>
643                 </xsd:sequence>
644                 <xsd:attribute name="baseObjectID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
645                 <xsd:attribute name="baseResID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
646         </xsd:complexType>
647         <!--=============================-=============================-->
648         <!--            clockSync Related Properties            -->
649         <!--=============================-=============================-->
650         <xsd:complexType name="clockSync.Type">
651                 <xsd:attribute name="deviceClockInfoID" type="xsd:string" use="required">
652                         <xsd:annotation>
653                                 <xsd:documentation xml:lang="en">
654           Identifies the timestamp mechanism that will be used when the associated content-binary is streamed to the network by the device. Its value MUST equal the value of the associated deviceClockInfo@id in a &lt;Feature&gt; element.
655         </xsd:documentation>
656                         </xsd:annotation>
657                 </xsd:attribute>
658                 <xsd:attribute name="supportedTimestampsID" type="xsd:string" use="required">
659                         <xsd:annotation>
660                                 <xsd:documentation xml:lang="en">
661           Identifies the timestamp mechanism that will be used when the associated content-binary is streamed to the network by the device.  Its value MUST equal the value of the associated supportedTimestamps@id in a &lt;Features&gt; element.
662         </xsd:documentation>
663                         </xsd:annotation>
664                 </xsd:attribute>
665         </xsd:complexType>
666         <!--=============================-=============================-->
667         <!--            DRMInfo Related Properties            -->
668         <!--=============================-=============================-->
669         <xsd:complexType name="DRMInfoContent.Type">
670                 <xsd:sequence>
671                         <xsd:element name="foreignMetaData" type="upnp:foreignMetadata.type" minOccurs="0" maxOccurs="unbounded"/>
672                 </xsd:sequence>
673         </xsd:complexType>
674         <xsd:complexType name="DRMInfo.Type">
675                 <xsd:sequence>
676                         <xsd:element name="DRMInfo" type="upnp:DRMInfoContent.Type" minOccurs="0" maxOccurs="unbounded"/>
677                 </xsd:sequence>
678         </xsd:complexType>
679         <!--=============================-=============================-->
680         <!--            isSynchAnchor Related Properties            -->
681         <!--=============================-=============================-->
682         <!--=============================-=============================-->
683         <!--            componentInfo Related Properties            -->
684         <!--=============================-=============================-->
685         <!--=============================-=============================-->
686         <!--       Resource Encoding Characteristics Properties        -->
687         <!--=============================-=============================-->
688         <xsd:complexType name="upnp.res.type" mixed="true">
689                 <xsd:annotation>
690                         <xsd:documentation>
691                                 A 'res' element indentifies a resource.
692                                 A resource is typically some type of binary asset,
693                                 such as a photo, song, video, etc.
694                                 A 'res' element contains a URI that identifies the resource
695                         </xsd:documentation>
696                 </xsd:annotation>
697                 <xsd:simpleContent>
698                         <xsd:extension base="xsd:anyURI">
699                                 <xsd:attribute name="importUri" type="xsd:anyURI"/>
700                                 <xsd:attribute name="protocolInfo" type="xsd:string" use="required"/>
701                                 <xsd:attribute name="size" type="xsd:unsignedLong"/>
702                                 <xsd:attribute name="duration" type="av:duration.cds1"/>
703                                 <xsd:attribute name="bitrate" type="xsd:unsignedInt"/>
704                                 <xsd:attribute name="sampleFrequency" type="xsd:unsignedInt"/>
705                                 <xsd:attribute name="bitsPerSample" type="xsd:unsignedInt"/>
706                                 <xsd:attribute name="nrAudioChannels" type="xsd:unsignedInt"/>
707                                 <xsd:attribute name="resolution">
708                                         <xsd:simpleType>
709                                                 <xsd:restriction base="xsd:string">
710                                                         <xsd:pattern value="[0-9]+x[0-9]+"/>
711                                                 </xsd:restriction>
712                                         </xsd:simpleType>
713                                 </xsd:attribute>
714                                 <xsd:attribute name="colorDepth" type="xsd:unsignedInt"/>
715                                 <xsd:attribute name="tspec" type="av:string.len.0_256"/>
716                                 <xsd:attribute name="allowedUse" type="av:csv.1_.allowedUse"/>
717                                 <xsd:attribute name="validityStart" type="av:dateTime"/>
718                                 <xsd:attribute name="validityEnd" type="av:dateTime"/>
719                                 <xsd:attribute name="remainingTime" type="av:unsignedDuration"/>
720                                 <xsd:attribute name="usageInfo" type="xsd:string"/>
721                                 <xsd:attribute name="rightsInfoURI" type="xsd:anyURI"/>
722                                 <xsd:attribute name="contentInfoURI" type="xsd:anyURI"/>
723                                 <xsd:attribute name="recordQuality" type="av:csv.1_.colonDelimPairs"/>
724                                 <xsd:attribute name="protection" type="xsd:string"/>
725                                 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
726                         </xsd:extension>
727                 </xsd:simpleContent>
728         </xsd:complexType>
729         <!--transform names with extensions-->
730         <xsd:simpleType name="componentClass.Type">
731                 <xsd:restriction base="xsd:string">
732                         <xsd:pattern value=".*"/>
733                         <xsd:pattern value="Audio"/>
734                         <xsd:pattern value="Video"/>
735                         <xsd:pattern value="Caption"/>
736                         <xsd:pattern value="Subtitle"/>
737                         <xsd:pattern value="Unknown"/>
738                 </xsd:restriction>
739         </xsd:simpleType>
740         <!-- content.type  -->
741         <xsd:complexType name="content.Type">
742                 <xsd:sequence/>
743                 <xsd:attribute name="MIMEType" type="xsd:string" use="required"/>
744                 <xsd:attribute name="extendedType" type="xsd:string" use="required"/>
745         </xsd:complexType>
746         <!-- CompRes.type   -->
747         <xsd:complexType name="compRes.Type" mixed="true">
748                 <xsd:sequence>
749                         <!-- we can't reffer directly to didl-lite:res.type since that creates a circular reference -->
750                         <xsd:element name="isSynchAnchor" type="xsd:string" minOccurs="0" maxOccurs="1"/>
751                         <xsd:element name="refUDN" type="xsd:string" minOccurs="0" maxOccurs="1"/>
752                         <xsd:element name="refObjectID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
753                         <xsd:element name="refResID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
754                         <xsd:element name="res" type="upnp:upnp.res.type" minOccurs="0" maxOccurs="unbounded"/>
755                         <!-- <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> -->
756                 </xsd:sequence>
757         </xsd:complexType>
758         <!--Component.type -->
759         <xsd:complexType name="component.Type">
760                 <xsd:all minOccurs="1">
761                         <xsd:element name="componentClass" type="upnp:componentClass.Type" maxOccurs="1" minOccurs="1"/>
762                         <xsd:element name="contentType" type="upnp:content.Type" minOccurs="1" maxOccurs="1"/>
763                         <xsd:element name="language" type="xsd:string" minOccurs="0" maxOccurs="1"/>
764                         <xsd:element name="compRes" type="upnp:compRes.Type" minOccurs="0" maxOccurs="1"/>
765                 </xsd:all>
766                 <xsd:attribute name="componentID" type="xsd:string" use="required"/>
767                 <xsd:attribute name="supportive" type="xsd:boolean" use="optional"/>
768                 <xsd:attribute name="supportID" type="xsd:string" use="optional"/>
769         </xsd:complexType>
770         <!-- ComponentGroup.type-->
771         <xsd:complexType name="componentGroup.Type">
772                 <xsd:sequence>
773                         <xsd:element name="component" type="upnp:component.Type" minOccurs="0" maxOccurs="unbounded"/>
774                 </xsd:sequence>
775                 <xsd:attribute name="groupID" type="xsd:string" use="required"/>
776                 <xsd:attribute name="required" type="xsd:boolean" use="required"/>
777         </xsd:complexType>
778         <!--  ComponentInfo.type -->
779         <xsd:complexType name="componentInfo.Type">
780                 <xsd:sequence>
781                         <xsd:element name="componentGroup" type="upnp:componentGroup.Type" minOccurs="0" maxOccurs="unbounded"/>
782                 </xsd:sequence>
783                 <xsd:attribute name="componentID" type="xsd:string" use="optional"/>
784         </xsd:complexType>
785         <!--=============================-=============================-->
786         <!--            programPreserved Related Properties            -->
787         <!--=============================-=============================-->
788         <xsd:complexType name="programPreserved.Type">
789                 <xsd:simpleContent>
790                         <xsd:extension base="xsd:string">
791                                 <xsd:attribute name="startTime" use="required"/>
792                                 <xsd:attribute name="startTimeDaylightSaving"/>
793                                 <xsd:attribute name="endTime"/>
794                                 <xsd:attribute name="endTimeDaylightSaving"/>
795                         </xsd:extension>
796                 </xsd:simpleContent>
797         </xsd:complexType>
798         <!--=============================-=============================-->
799         <!--            programPreserved Related Properties            -->
800         <!--=============================-=============================-->
801         <xsd:complexType name="preservedTimeRange.Type">
802                 <xsd:simpleContent>
803                         <xsd:extension base="xsd:string">
804                                 <xsd:attribute name="startTime"/>
805                                 <xsd:attribute name="startTimeDaylightSaving"/>
806                                 <xsd:attribute name="endTime"/>
807                                 <xsd:attribute name="endTimeDaylightSaving"/>
808                         </xsd:extension>
809                 </xsd:simpleContent>
810         </xsd:complexType>
811         <!--=============================-=============================-->
812         <!--            programList Related Properties            -->
813         <!--=============================-=============================-->
814         <xsd:complexType name="programList.Type">
815                 <xsd:sequence>
816                         <xsd:element name="program" minOccurs="0" maxOccurs="unbounded">
817                                 <xsd:complexType>
818                                         <xsd:simpleContent>
819                                                 <xsd:extension base="xsd:string">
820                                                         <xsd:attribute name="preserved"/>
821                                                 </xsd:extension>
822                                         </xsd:simpleContent>
823                                 </xsd:complexType>
824                         </xsd:element>
825                 </xsd:sequence>
826         </xsd:complexType>
827         <!--=============================-=============================-->
828         <!--            Content Protection Feature Properties            -->
829         <!--=============================-=============================-->
830         <xsd:complexType name="owner.Type">
831                 <xsd:sequence>
832                         <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
833                 </xsd:sequence>
834                 <xsd:attribute name="lock" type="xsd:boolean" use="required"/>
835         </xsd:complexType>
836         <xsd:complexType name="inclusion.Type">
837                 <xsd:sequence>
838                         <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
839                 </xsd:sequence>
840         </xsd:complexType>
841 </xsd:schema>