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">
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.
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">
17 <xsd:element name="class" type="upnp:class.type"/>
20 <xsd:group name="upnpForContainer">
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"/>
162 <xsd:group name="upnpForItem">
164 <xsd:group ref="upnp:upnpForContainer"/>
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-[\.:]]*)*">
176 This pattern exactly matches the definition for class name syntax
177 given in CDS:2 Section C.1.1.
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"/>
221 <xsd:simpleType name="_className.type">
222 <xsd:union memberTypes="upnp:className.wc.type upnp:className.vx.type"/>
224 <xsd:simpleType name="className.type">
225 <xsd:restriction base="upnp:_className.type">
227 <xsd:pattern value="object\.(item|container)(\.[\i-[:]][\c-[\.:]]*)*"/>
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.
234 <upnp:class>object.container.storageFolder</upnp:class>
235 <upnp:searchClass includeDerived="false">
236 object.container.album.musicAlbum
239 This inconsistent behavior needs to be investigated.
243 <xsd:complexType name="class.type">
245 <xsd:extension base="upnp:className.type">
246 <xsd:attribute name="name" type="xsd:string"/>
250 <xsd:complexType name="searchClass.type">
252 <xsd:extension base="upnp:class.type">
253 <xsd:attribute name="includeDerived" type="xsd:boolean" use="required"/>
255 <!-- XXX - JGR: Should className.type be used rather than class.type> </-->
258 <xsd:complexType name="qualifiedDateTime">
260 <xsd:extension base="av:dateTime">
261 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
265 <xsd:complexType name="qualifiedDateTime-range">
267 <xsd:extension base="av:dateTime-range">
268 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
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"/>
284 <!--=============================-=============================-->
285 <!-- Contributor Related Properties -->
286 <!--=============================-=============================-->
287 <xsd:complexType name="personWithRole.type">
289 <xsd:extension base="upnp:person.type">
290 <xsd:attribute name="role" type="xsd:string"/>
294 <xsd:simpleType name="person.type">
295 <xsd:restriction base="xsd:string"/>
297 <!--=============================-=============================-->
298 <!-- Affiliation Related Properties -->
299 <!--=============================-=============================-->
300 <xsd:complexType name="genre.type">
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_"/>
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">
330 <xsd:extension base="xsd:float">
331 <xsd:attribute name="currency" type="xsd:string" use="required"/>
335 <!--=============================-=============================-->
336 <!-- Radio Broadcast Properties -->
337 <!--=============================-=============================-->
338 <!--=============================-=============================-->
339 <!-- Video Broadcast Properties -->
340 <!--=============================-=============================-->
341 <xsd:complexType name="qualifiedDateTime.ISO8601">
343 <xsd:extension base="xsd:string">
344 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
348 <xsd:complexType name="qualifiedDateTime.ISO8601andUsage">
350 <xsd:extension base="xsd:string">
351 <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
352 <xsd:attribute name="usage" type="av:startTimeUsage"/>
356 <!--=============================-=============================-->
357 <!-- Physical Tuner Status-related Properties -->
358 <!--=============================-=============================-->
359 <!--=============================-=============================-->
360 <!-- Bookmark Related Properties -->
361 <!--=============================-=============================-->
362 <xsd:complexType name="stateVariableCollection.type">
364 <xsd:extension base="xsd:string">
365 <xsd:attributeGroup ref="upnp:serviceAttrGrp"/>
369 <xsd:attributeGroup name="serviceAttrGrp">
370 <xsd:attribute name="serviceName" use="required">
372 <xsd:restriction base="xsd:string">
373 <xsd:enumeration value="AVTransport"/>
374 <xsd:enumeration value="RenderingControl"/>
378 <xsd:attribute name="rcsInstanceType">
380 <xsd:restriction base="xsd:string">
381 <xsd:enumeration value="pre-mix"/>
382 <xsd:enumeration value="post-mix"/>
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"/>
391 <!--=============================-=============================-->
392 <!-- Foreign Metadata Related Properties -->
393 <!--=============================-=============================-->
394 <xsd:complexType name="foreignMetadata.type">
397 WC-defined structure for the Foreign Metadata property.
401 <xsd:group ref="upnp:fm.elements.group"/>
403 <xsd:attributeGroup ref="upnp:fm.attributes.group"/>
405 <xsd:attributeGroup name="fm.attributes.group">
406 <xsd:attribute name="type" use="required">
408 <xsd:restriction base="xsd:string">
409 <xsd:pattern value="[a-zA-Z0-9_.]+"/>
413 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
414 </xsd:attributeGroup>
415 <xsd:group name="fm.elements.group">
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"/>
421 <xsd:group name="fm.elements.vx.group">
424 Allow the Foreign Metadata tag to also hold vendor-defined elements.
428 <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
431 <xsd:group name="fm.elements.wc.group">
434 Foreign Metadata sub-elements defined by the WC.
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"/>
444 <xsd:complexType name="fm.elements.body.type">
447 Contains the actual foreign metadata.
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"/>
455 <xsd:attributeGroup ref="upnp:fm.attrs.bodyAttr.group"/>
456 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
458 <xsd:attributeGroup name="fm.attrs.bodyAttr.group">
459 <xsd:attribute name="xmlFlag" type="xsd:boolean" use="required"/>
460 <xsd:attribute name="mimeType">
462 <xsd:restriction base="xsd:string">
463 <xsd:pattern value="[a-zA-Z0-9_./]+"/>
467 </xsd:attributeGroup>
468 <xsd:complexType name="fm.elements.body.embeddedXML.type">
471 Tags allowed inside a Foreign Metadata Body URI element.
474 <xsd:choice minOccurs="0" maxOccurs="unbounded">
475 <xsd:any namespace="##other" processContents="lax"/>
478 <xsd:complexType name="fm.elements.body.embeddedString.type">
481 Tags allowed inside a Foreign Metadata Body URI element.
485 <xsd:extension base="xsd:string">
486 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
488 <!-- Placeholder for future WC attributes. -->
491 <xsd:complexType name="fm.elements.body.uri.type">
493 <xsd:extension base="xsd:anyURI">
494 <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
498 <xsd:attributeGroup name="fm.extensions.attributes.any">
499 <xsd:attributeGroup ref="av:extensions.attributes.any"/>
500 </xsd:attributeGroup>
501 <!--===================================================================-->
503 <!-- Extension Component Datatypes -->
505 <!--===================================================================-->
506 <xsd:simpleType name="className.vx.type">
507 <xsd:restriction base="upnp:className.base.type"/>
509 <xsd:simpleType name="foreignMetadata.element.vx.type">
510 <xsd:restriction base="xsd:string"/>
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">
521 <xsd:restriction base="xsd:string">
522 <xsd:enumeration value="Playback"/>
523 <xsd:enumeration value="Step"/>
524 <xsd:enumeration value="Index"/>
528 <xsd:element name="relatedInfo" minOccurs="0">
529 <xsd:complexType mixed="true">
531 <xsd:extension base="xsd:string">
532 <xsd:attribute name="role" use="required">
534 <xsd:restriction base="xsd:string">
535 <xsd:pattern value="[A-Za-z0-9]+.*"/>
539 <xsd:attribute name="roleText" type="xsd:string" use="required"/>
544 <xsd:element name="startInfo" minOccurs="0">
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"/>
550 <xsd:element name="endAction" minOccurs="0">
552 <xsd:attribute name="action" use="required">
554 <xsd:restriction base="xsd:string">
555 <xsd:enumeration value="Return"/>
556 <xsd:enumeration value="Branch"/>
557 <xsd:enumeration value="Stop"/>
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"/>
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"/>
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">
580 <xsd:attribute name="role" use="required">
582 <xsd:restriction base="xsd:string">
583 <xsd:pattern value="[A-Za-z0-9]+.*"/>
587 <xsd:attribute name="roleText" type="xsd:string" use="required"/>
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"/>
596 <!--=============================-=============================-->
597 <!-- resExt Related Properties -->
598 <!--=============================-=============================-->
599 <xsd:complexType name="resExt.type">
601 <xsd:documentation xml:lang="en">
602 Defines the permitted child elements of <resExt>. All children are optional and can be listed in any order in an unbounded manner.
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"/>
612 <xsd:attribute name="id" type="av:didl-lite_COLON_at_id.vd.type" use="required">
614 <xsd:documentation xml:lang="en">
615 Must be child of <item> or <container>. Value must match the res@id value.
620 <!--=============================-=============================-->
621 <!-- segmentInfo Related Properties -->
622 <!--=============================-=============================-->
623 <xsd:complexType name="segmentInfo.Type">
625 <xsd:element name="timeRange">
627 <xsd:attribute name="start" type="av:duration.cds1.decFrac" use="required"/>
628 <xsd:attribute name="end" type="av:duration.cds1.decFrac" use="required"/>
631 <xsd:element name="byteRange" minOccurs="0">
633 <xsd:attribute name="start" type="xsd:unsignedLong" use="required"/>
634 <xsd:attribute name="end" type="xsd:unsignedLong" use="required"/>
637 <xsd:element name="frameRange" minOccurs="0">
639 <xsd:attribute name="start" type="xsd:unsignedLong" use="required"/>
640 <xsd:attribute name="end" type="xsd:unsignedLong" use="required"/>
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"/>
647 <!--=============================-=============================-->
648 <!-- clockSync Related Properties -->
649 <!--=============================-=============================-->
650 <xsd:complexType name="clockSync.Type">
651 <xsd:attribute name="deviceClockInfoID" type="xsd:string" use="required">
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 <Feature> element.
658 <xsd:attribute name="supportedTimestampsID" type="xsd:string" use="required">
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 <Features> element.
666 <!--=============================-=============================-->
667 <!-- DRMInfo Related Properties -->
668 <!--=============================-=============================-->
669 <xsd:complexType name="DRMInfoContent.Type">
671 <xsd:element name="foreignMetaData" type="upnp:foreignMetadata.type" minOccurs="0" maxOccurs="unbounded"/>
674 <xsd:complexType name="DRMInfo.Type">
676 <xsd:element name="DRMInfo" type="upnp:DRMInfoContent.Type" minOccurs="0" maxOccurs="unbounded"/>
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">
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
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">
709 <xsd:restriction base="xsd:string">
710 <xsd:pattern value="[0-9]+x[0-9]+"/>
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"/>
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"/>
740 <!-- content.type -->
741 <xsd:complexType name="content.Type">
743 <xsd:attribute name="MIMEType" type="xsd:string" use="required"/>
744 <xsd:attribute name="extendedType" type="xsd:string" use="required"/>
746 <!-- CompRes.type -->
747 <xsd:complexType name="compRes.Type" mixed="true">
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"/> -->
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"/>
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"/>
770 <!-- ComponentGroup.type-->
771 <xsd:complexType name="componentGroup.Type">
773 <xsd:element name="component" type="upnp:component.Type" minOccurs="0" maxOccurs="unbounded"/>
775 <xsd:attribute name="groupID" type="xsd:string" use="required"/>
776 <xsd:attribute name="required" type="xsd:boolean" use="required"/>
778 <!-- ComponentInfo.type -->
779 <xsd:complexType name="componentInfo.Type">
781 <xsd:element name="componentGroup" type="upnp:componentGroup.Type" minOccurs="0" maxOccurs="unbounded"/>
783 <xsd:attribute name="componentID" type="xsd:string" use="optional"/>
785 <!--=============================-=============================-->
786 <!-- programPreserved Related Properties -->
787 <!--=============================-=============================-->
788 <xsd:complexType name="programPreserved.Type">
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"/>
798 <!--=============================-=============================-->
799 <!-- programPreserved Related Properties -->
800 <!--=============================-=============================-->
801 <xsd:complexType name="preservedTimeRange.Type">
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"/>
811 <!--=============================-=============================-->
812 <!-- programList Related Properties -->
813 <!--=============================-=============================-->
814 <xsd:complexType name="programList.Type">
816 <xsd:element name="program" minOccurs="0" maxOccurs="unbounded">
819 <xsd:extension base="xsd:string">
820 <xsd:attribute name="preserved"/>
827 <!--=============================-=============================-->
828 <!-- Content Protection Feature Properties -->
829 <!--=============================-=============================-->
830 <xsd:complexType name="owner.Type">
832 <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
834 <xsd:attribute name="lock" type="xsd:boolean" use="required"/>
836 <xsd:complexType name="inclusion.Type">
838 <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>