summaryrefslogtreecommitdiff
path: root/data/upnp.xsd
diff options
context:
space:
mode:
Diffstat (limited to 'data/upnp.xsd')
-rw-r--r--data/upnp.xsd841
1 files changed, 841 insertions, 0 deletions
diff --git a/data/upnp.xsd b/data/upnp.xsd
new file mode 100644
index 0000000..0d8045b
--- /dev/null
+++ b/data/upnp.xsd
@@ -0,0 +1,841 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Note that all schema supplied by the UPnP Forum AV WC committee are for informational use only and that the
+ standardized DCPs describe the normative requirements for these schema. Some schema provided do not necessarily
+ embody requirements regarding number of element occurrances allowed or their ordering.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <!-- This schema defines the upnp namespace tags that are employed
+ as descriptors by the DIDL-Lite schema -->
+ <xsd:import namespace="urn:schemas-upnp-org:av:av" schemaLocation="http://www.upnp.org/schemas/av/av.xsd"/>
+ <xsd:group name="class.group">
+ <xsd:sequence>
+ <xsd:element name="class" type="upnp:class.type"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="upnpForContainer">
+ <xsd:choice>
+ <!--=============================-=============================-->
+ <!-- Base Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="searchClass" type="upnp:searchClass.type"/>
+ <xsd:element name="createClass" type="upnp:searchClass.type"/>
+ <xsd:element name="writeStatus" type="upnp:status.type"/>
+ <!--=============================-=============================-->
+ <!-- objectLink Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="objectLink" type="upnp:objectLink.type"/>
+ <xsd:element name="objectLinkRef" type="upnp:objectLinkRef.type"/>
+ <!--=============================-=============================-->
+ <!-- resExt Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="resExt" type="upnp:resExt.type"/>
+ <!--=============================-=============================-->
+ <!-- Contributor Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="artist" type="upnp:personWithRole.type"/>
+ <xsd:element name="actor" type="upnp:personWithRole.type"/>
+ <xsd:element name="author" type="upnp:personWithRole.type"/>
+ <xsd:element name="producer" type="upnp:person.type"/>
+ <xsd:element name="director" type="upnp:person.type"/>
+ <!--=============================-=============================-->
+ <!-- Affiliation Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="genre" type="upnp:genre.type"/>
+ <xsd:element name="album" type="av:_title.type"/>
+ <xsd:element name="playlist" type="av:_title.type"/>
+ <!--=============================-=============================-->
+ <!-- Associated Resources Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="albumArtURI" type="xsd:anyURI"/>
+ <xsd:element name="artistDiscographyURI" type="xsd:anyURI"/>
+ <xsd:element name="lyricsURI" type="xsd:anyURI"/>
+ <!-- Should have something restricting dc:relation to a URI. -->
+ <!--=============================-=============================-->
+ <!-- Storage Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="storageTotal" type="av:long.-1_"/>
+ <xsd:element name="storageUsed" type="av:long.-1_"/>
+ <xsd:element name="storageFree" type="av:long.-1_"/>
+ <xsd:element name="storageMaxPartition" type="av:long.-1_"/>
+ <xsd:element name="storageMedium" type="av:storageMedium.values"/>
+ <!--=============================-=============================-->
+ <!-- General Description Properties -->
+ <!-- (mainly for UI purposes) -->
+ <!--=============================-=============================-->
+ <xsd:element name="longDescription" type="xsd:string"/>
+ <xsd:element name="icon" type="xsd:anyURI"/>
+ <xsd:element name="region" type="xsd:string"/>
+ <xsd:element name="rights" type="xsd:string"/>
+ <xsd:element name="playbackCount" type="av:int.-1_"/>
+ <xsd:element name="lastPlaybackTime" type="upnp:qualifiedDateTime"/>
+ <xsd:element name="lastPlaybackPosition" type="av:unsignedDuration"/>
+ <xsd:element name="recordedStartDateTime" type="upnp:qualifiedDateTime"/>
+ <xsd:element name="recordedDuration" type="av:unsignedDuration"/>
+ <xsd:element name="recordedDayOfWeek" type="av:dayOfWeek.en.len.3"/>
+ <xsd:element name="srsRecordSchedule" type="av:srs_COLON_at_id.vd.type"/>
+ <xsd:element name="srsRecordTaskID" type="av:srs_COLON_at_id.vd.type"/>
+ <xsd:element name="recordable" type="xsd:boolean"/>
+ <!--=============================-=============================-->
+ <!-- Recorded Object Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="programTitle" type="xsd:string"/>
+ <xsd:element name="seriesTitle" type="xsd:string"/>
+ <xsd:element name="programID" type="av:programID.type"/>
+ <xsd:element name="seriesID" type="av:programID.type"/>
+ <xsd:element name="channelID" type="av:channelID.type"/>
+ <xsd:element name="episodeCount" type="xsd:unsignedInt"/>
+ <xsd:element name="episodeNumber" type="xsd:unsignedInt"/>
+ <xsd:element name="programCode" type="av:programCode.type"/>
+ <xsd:element name="rating" type="av:rating.type"/>
+ <xsd:element name="episodeType" type="av:FIRST-RUN.or.REPEAT"/>
+ <xsd:element name="programPreserved" type="upnp:programPreserved.Type"/>
+ <xsd:element name="preservedTimeRange" type="upnp:preservedTimeRange.Type"/>
+ <xsd:element name="programList" type="upnp:programList.Type"/>
+ <!--=============================-=============================-->
+ <!-- User Channel and EPG Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="channelGroupName" type="av:channelGroupName.type"/>
+ <xsd:element name="callSign" type="av:stationCallSign.type"/>
+ <xsd:element name="networkAffiliation" type="xsd:string"/>
+ <xsd:element name="serviceProvider" type="xsd:string"/>
+ <xsd:element name="price" type="upnp:price.type"/>
+ <xsd:element name="payPerView" type="xsd:boolean"/>
+ <xsd:element name="epgProviderName" type="xsd:string"/>
+ <xsd:element name="dateTimeRange" type="upnp:qualifiedDateTime-range"/>
+ <!--=============================-=============================-->
+ <!-- Radio Broadcast Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="radioCallSign" type="av:stationCallSign.type"/>
+ <xsd:element name="radioStationID" type="xsd:string"/>
+ <xsd:element name="radioBand" type="av:radioBand.type"/>
+ <!--=============================-=============================-->
+ <!-- Video Broadcast Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="channelNr" type="xsd:int"/>
+ <xsd:element name="channelName" type="xsd:string"/>
+ <xsd:element name="scheduledStartTime" type="upnp:qualifiedDateTime.ISO8601"/>
+ <xsd:element name="scheduledEndTime" type="upnp:qualifiedDateTime.ISO8601"/>
+ <xsd:element name="scheduledDuration" type="av:unsignedDuration"/>
+ <!--=============================-=============================-->
+ <!-- Physical Tuner Status-related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="signalStrength" type="av:signalStrength.type"/>
+ <xsd:element name="signalLocked" type="xsd:boolean"/>
+ <xsd:element name="tuned" type="xsd:boolean"/>
+ <!--=============================-=============================-->
+ <!-- Bookmark Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="bookmarkID" type="av:didl-lite_COLON_at_id.vd.type"/>
+ <xsd:element name="bookmarkedObjectID" type="av:didl-lite_COLON_at_id.vd.type"/>
+ <xsd:element name="deviceUDN" type="av:deviceUDN.type"/>
+ <xsd:element name="stateVariableCollection" type="upnp:stateVariableCollection.type"/>
+ <!--=============================-=============================-->
+ <!-- Foreign Metadata Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="foreignMetadata" type="upnp:foreignMetadata.type"/>
+ <!--=============================-=============================-->
+ <!-- Miscellaneous Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="DVDRegionCode" type="xsd:int"/>
+ <xsd:element name="originalTrackNumber" type="xsd:int"/>
+ <xsd:element name="toc" type="xsd:string"/>
+ <xsd:element name="userAnnotation" type="xsd:string"/>
+ <!--=============================-=============================-->
+ <!-- Object Tracking Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="containerUpdateID" type="xsd:unsignedInt"/>
+ <xsd:element name="objectUpdateID" type="xsd:unsignedInt"/>
+ <xsd:element name="totalDeletedChildCount" type="xsd:unsignedInt"/>
+ <xsd:element name="segmentID" type="av:didl-lite_COLON_at_id.vd.type"/>
+ <!--=============================-=============================-->
+ <!-- Content Protection Properties -->
+ <!--=============================-=============================-->
+ <xsd:element name="objectOwner" type="upnp:owner.Type"/>
+ <xsd:element name="inclusionControl" type="upnp:inclusion.Type"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="upnpForItem">
+ <xsd:choice>
+ <xsd:group ref="upnp:upnpForContainer"/>
+ </xsd:choice>
+ </xsd:group>
+ <!--=============================-=============================-->
+ <!-- Base Properties -->
+ <!--=============================-=============================-->
+ <xsd:simpleType name="className.base.type">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:minLength value="11"/>
+ <xsd:pattern value="object\.(item|container)(\.[\i-[:]][\c-[\.:]]*)*">
+ <xsd:annotation>
+ <xsd:documentation>
+ This pattern exactly matches the definition for class name syntax
+ given in CDS:2 Section C.1.1.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:pattern>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="className.wc.type">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="object.item"/>
+ <xsd:enumeration value="object.item.imageItem"/>
+ <xsd:enumeration value="object.item.imageItem.photo"/>
+ <xsd:enumeration value="object.item.audioItem"/>
+ <xsd:enumeration value="object.item.audioItem.musicTrack"/>
+ <xsd:enumeration value="object.item.audioItem.audioBroadcast"/>
+ <xsd:enumeration value="object.item.audioItem.audioBook"/>
+ <xsd:enumeration value="object.item.videoItem"/>
+ <xsd:enumeration value="object.item.videoItem.movie"/>
+ <xsd:enumeration value="object.item.videoItem.videoBroadcast"/>
+ <xsd:enumeration value="object.item.videoItem.musicVideoClip"/>
+ <xsd:enumeration value="object.item.playlistItem"/>
+ <xsd:enumeration value="object.item.textItem"/>
+ <xsd:enumeration value="object.item.bookmarkItem"/>
+ <xsd:enumeration value="object.item.epgItem"/>
+ <xsd:enumeration value="object.item.epgItem.audioProgram"/>
+ <xsd:enumeration value="object.item.epgItem.videoProgram"/>
+ <xsd:enumeration value="object.container.person"/>
+ <xsd:enumeration value="object.container.person.musicArtist"/>
+ <xsd:enumeration value="object.container.playlistContainer"/>
+ <xsd:enumeration value="object.container.album"/>
+ <xsd:enumeration value="object.container.album.musicAlbum"/>
+ <xsd:enumeration value="object.container.album.photoAlbum"/>
+ <xsd:enumeration value="object.container.genre"/>
+ <xsd:enumeration value="object.container.genre.musicGenre"/>
+ <xsd:enumeration value="object.container.genre.movieGenre"/>
+ <xsd:enumeration value="object.container.channelGroup"/>
+ <xsd:enumeration value="object.container.channelGroup.audioChannelGroup"/>
+ <xsd:enumeration value="object.container.channelGroup.videoChannelGroup"/>
+ <xsd:enumeration value="object.container.epgContainer"/>
+ <xsd:enumeration value="object.container.storageSystem"/>
+ <xsd:enumeration value="object.container.storageVolume"/>
+ <xsd:enumeration value="object.container.storageFolder"/>
+ <xsd:enumeration value="object.container.bookmarkFolder"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="_className.type">
+ <xsd:union memberTypes="upnp:className.wc.type upnp:className.vx.type"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="className.type">
+ <xsd:restriction base="upnp:_className.type">
+ <!-- xxx - JGR
+ <xsd:pattern value="object\.(item|container)(\.[\i-[:]][\c-[\.:]]*)*"/>
+
+ Somehow including this pattern restriction rejects the <searchClass> element
+ but not the <class> element from the following snipet taken from the
+ ForeignMetadata Example #2. Even when the values are identical, the
+ <class> element validates and the <searchClass> element fails.
+
+ <upnp:class>object.container.storageFolder</upnp:class>
+ <upnp:searchClass includeDerived="false">
+ object.container.album.musicAlbum
+ </upnp:searchClass>
+
+ This inconsistent behavior needs to be investigated.
+-->
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="class.type">
+ <xsd:simpleContent>
+ <xsd:extension base="upnp:className.type">
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="searchClass.type">
+ <xsd:simpleContent>
+ <xsd:extension base="upnp:class.type">
+ <xsd:attribute name="includeDerived" type="xsd:boolean" use="required"/>
+ </xsd:extension>
+ <!-- XXX - JGR: Should className.type be used rather than class.type> </-->
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="qualifiedDateTime">
+ <xsd:simpleContent>
+ <xsd:extension base="av:dateTime">
+ <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="qualifiedDateTime-range">
+ <xsd:simpleContent>
+ <xsd:extension base="av:dateTime-range">
+ <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:attributeGroup name="dateTime.attr.group">
+ <xsd:attribute name="daylightSaving" type="av:daylightSaving.type" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:simpleType name="status.type">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="WRITABLE"/>
+ <xsd:enumeration value="PROTECTED"/>
+ <xsd:enumeration value="NOT_WRITABLE"/>
+ <xsd:enumeration value="UNKNOWN"/>
+ <xsd:enumeration value="MIXED"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!--=============================-=============================-->
+ <!-- Contributor Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="personWithRole.type">
+ <xsd:simpleContent>
+ <xsd:extension base="upnp:person.type">
+ <xsd:attribute name="role" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:simpleType name="person.type">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <!--=============================-=============================-->
+ <!-- Affiliation Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="genre.type">
+ <xsd:simpleContent>
+ <xsd:extension base="av:_title.type">
+ <xsd:attribute name="id" type="av:string.domainNamePrefixed"/>
+ <xsd:attribute name="extended" type="av:csv.1_.string.len.1_"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- Associated Resources Properties -->
+ <!--=============================-=============================-->
+ <!-- This section intentionally left blank -->
+ <!--=============================-=============================-->
+ <!-- Storage Related Properties -->
+ <!--=============================-=============================-->
+ <!-- This section intentionally left blank -->
+ <!--=============================-=============================-->
+ <!-- General Description Properties -->
+ <!-- (mainly for UI purposes) -->
+ <!--=============================-=============================-->
+ <!-- This section intentionally left blank -->
+ <!--=============================-=============================-->
+ <!-- Recorded Object Related Properties -->
+ <!--=============================-=============================-->
+ <!-- This section intentionally left blank -->
+ <!--=============================-=============================-->
+ <!-- User Channel and EPG Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="price.type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:float">
+ <xsd:attribute name="currency" type="xsd:string" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- Radio Broadcast Properties -->
+ <!--=============================-=============================-->
+ <!--=============================-=============================-->
+ <!-- Video Broadcast Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="qualifiedDateTime.ISO8601">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="qualifiedDateTime.ISO8601andUsage">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
+ <xsd:attribute name="usage" type="av:startTimeUsage"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- Physical Tuner Status-related Properties -->
+ <!--=============================-=============================-->
+ <!--=============================-=============================-->
+ <!-- Bookmark Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="stateVariableCollection.type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attributeGroup ref="upnp:serviceAttrGrp"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:attributeGroup name="serviceAttrGrp">
+ <xsd:attribute name="serviceName" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="AVTransport"/>
+ <xsd:enumeration value="RenderingControl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="rcsInstanceType">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="pre-mix"/>
+ <xsd:enumeration value="post-mix"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+ <xsd:complexType name="stateVariable.type">
+ <xsd:attribute name="variableName" type="xsd:string" use="required"/>
+ <xsd:attribute name="channel" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- Foreign Metadata Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="foreignMetadata.type">
+ <xsd:annotation>
+ <xsd:documentation>
+ WC-defined structure for the Foreign Metadata property.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="upnp:fm.elements.group"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="upnp:fm.attributes.group"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="fm.attributes.group">
+ <xsd:attribute name="type" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[a-zA-Z0-9_.]+"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
+ </xsd:attributeGroup>
+ <xsd:group name="fm.elements.group">
+ <xsd:sequence>
+ <xsd:group ref="upnp:fm.elements.wc.group" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:group ref="upnp:fm.elements.vx.group" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="fm.elements.vx.group">
+ <xsd:annotation>
+ <xsd:documentation>
+ Allow the Foreign Metadata tag to also hold vendor-defined elements.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="fm.elements.wc.group">
+ <xsd:annotation>
+ <xsd:documentation>
+ Foreign Metadata sub-elements defined by the WC.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice>
+ <xsd:element name="fmId" type="xsd:string"/>
+ <xsd:element name="fmClass" type="xsd:string"/>
+ <xsd:element name="fmProvider" type="xsd:string"/>
+ <xsd:element name="fmBody" type="upnp:fm.elements.body.type"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="fm.elements.body.type">
+ <xsd:annotation>
+ <xsd:documentation>
+ Contains the actual foreign metadata.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice>
+ <xsd:element name="fmEmbeddedXML" type="upnp:fm.elements.body.embeddedXML.type"/>
+ <xsd:element name="fmEmbeddedString" type="upnp:fm.elements.body.embeddedString.type"/>
+ <xsd:element name="fmURI" type="upnp:fm.elements.body.uri.type"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="upnp:fm.attrs.bodyAttr.group"/>
+ <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="fm.attrs.bodyAttr.group">
+ <xsd:attribute name="xmlFlag" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="mimeType">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[a-zA-Z0-9_./]+"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+ <xsd:complexType name="fm.elements.body.embeddedXML.type">
+ <xsd:annotation>
+ <xsd:documentation>
+ Tags allowed inside a Foreign Metadata Body URI element.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:any namespace="##other" processContents="lax"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="fm.elements.body.embeddedString.type">
+ <xsd:annotation>
+ <xsd:documentation>
+ Tags allowed inside a Foreign Metadata Body URI element.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
+ </xsd:extension>
+ <!-- Placeholder for future WC attributes. -->
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="fm.elements.body.uri.type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:anyURI">
+ <xsd:attributeGroup ref="upnp:fm.extensions.attributes.any"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:attributeGroup name="fm.extensions.attributes.any">
+ <xsd:attributeGroup ref="av:extensions.attributes.any"/>
+ </xsd:attributeGroup>
+ <!--===================================================================-->
+ <!-- -->
+ <!-- Extension Component Datatypes -->
+ <!-- -->
+ <!--===================================================================-->
+ <xsd:simpleType name="className.vx.type">
+ <xsd:restriction base="upnp:className.base.type"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="foreignMetadata.element.vx.type">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <!--=============================-=============================-->
+ <!-- ObjectLink Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="objectLink.type">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="title" type="xsd:string" maxOccurs="1"/>
+ <xsd:element name="startObject" type="xsd:boolean" minOccurs="0"/>
+ <xsd:element name="mode" maxOccurs="1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Playback"/>
+ <xsd:enumeration value="Step"/>
+ <xsd:enumeration value="Index"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="relatedInfo" minOccurs="0">
+ <xsd:complexType mixed="true">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="role" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[A-Za-z0-9]+.*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="roleText" type="xsd:string" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="startInfo" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="targetGroupID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="targetObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="endAction" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="action" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Return"/>
+ <xsd:enumeration value="Branch"/>
+ <xsd:enumeration value="Stop"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="targetGroupID" type="av:didl-lite_COLON_at_id.vd.type" use="optional"/>
+ <xsd:attribute name="targetObjID" type="av:didl-lite_COLON_at_id.vd.type" use="optional"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:attribute name="groupID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="headObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="nextObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="prevObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- ObjectLinkRef Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="objectLinkRef.type">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="title" maxOccurs="1"/>
+ <xsd:element name="startObject" type="xsd:boolean" minOccurs="0"/>
+ <xsd:element name="relatedInfo" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="role" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[A-Za-z0-9]+.*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="roleText" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:attribute name="groupID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="targetGroup" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="targetObjID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="return" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- resExt Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="resExt.type">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Defines the permitted child elements of &lt;resExt&gt;. All children are optional and can be listed in any order in an unbounded manner.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="segmentInfo" type="upnp:segmentInfo.Type"/>
+ <xsd:element name="clockSync" type="upnp:clockSync.Type"/>
+ <xsd:element name="DRMInfo" type="upnp:DRMInfo.Type"/>
+ <xsd:element name="isSyncAnchor" type="xsd:string"/>
+ <xsd:element name="componentInfo" type="upnp:componentInfo.Type"/>
+ </xsd:choice>
+ <xsd:attribute name="id" type="av:didl-lite_COLON_at_id.vd.type" use="required">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Must be child of &lt;item&gt; or &lt;container&gt;. Value must match the res@id value.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- segmentInfo Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="segmentInfo.Type">
+ <xsd:sequence>
+ <xsd:element name="timeRange">
+ <xsd:complexType>
+ <xsd:attribute name="start" type="av:duration.cds1.decFrac" use="required"/>
+ <xsd:attribute name="end" type="av:duration.cds1.decFrac" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="byteRange" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="start" type="xsd:unsignedLong" use="required"/>
+ <xsd:attribute name="end" type="xsd:unsignedLong" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="frameRange" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="start" type="xsd:unsignedLong" use="required"/>
+ <xsd:attribute name="end" type="xsd:unsignedLong" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="baseObjectID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ <xsd:attribute name="baseResID" type="av:didl-lite_COLON_at_id.vd.type" use="required"/>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- clockSync Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="clockSync.Type">
+ <xsd:attribute name="deviceClockInfoID" type="xsd:string" use="required">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ 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.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="supportedTimestampsID" type="xsd:string" use="required">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ 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.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- DRMInfo Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="DRMInfoContent.Type">
+ <xsd:sequence>
+ <xsd:element name="foreignMetaData" type="upnp:foreignMetadata.type" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="DRMInfo.Type">
+ <xsd:sequence>
+ <xsd:element name="DRMInfo" type="upnp:DRMInfoContent.Type" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- isSynchAnchor Related Properties -->
+ <!--=============================-=============================-->
+ <!--=============================-=============================-->
+ <!-- componentInfo Related Properties -->
+ <!--=============================-=============================-->
+ <!--=============================-=============================-->
+ <!-- Resource Encoding Characteristics Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="upnp.res.type" mixed="true">
+ <xsd:annotation>
+ <xsd:documentation>
+ A 'res' element indentifies a resource.
+ A resource is typically some type of binary asset,
+ such as a photo, song, video, etc.
+ A 'res' element contains a URI that identifies the resource
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:anyURI">
+ <xsd:attribute name="importUri" type="xsd:anyURI"/>
+ <xsd:attribute name="protocolInfo" type="xsd:string" use="required"/>
+ <xsd:attribute name="size" type="xsd:unsignedLong"/>
+ <xsd:attribute name="duration" type="av:duration.cds1"/>
+ <xsd:attribute name="bitrate" type="xsd:unsignedInt"/>
+ <xsd:attribute name="sampleFrequency" type="xsd:unsignedInt"/>
+ <xsd:attribute name="bitsPerSample" type="xsd:unsignedInt"/>
+ <xsd:attribute name="nrAudioChannels" type="xsd:unsignedInt"/>
+ <xsd:attribute name="resolution">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[0-9]+x[0-9]+"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="colorDepth" type="xsd:unsignedInt"/>
+ <xsd:attribute name="tspec" type="av:string.len.0_256"/>
+ <xsd:attribute name="allowedUse" type="av:csv.1_.allowedUse"/>
+ <xsd:attribute name="validityStart" type="av:dateTime"/>
+ <xsd:attribute name="validityEnd" type="av:dateTime"/>
+ <xsd:attribute name="remainingTime" type="av:unsignedDuration"/>
+ <xsd:attribute name="usageInfo" type="xsd:string"/>
+ <xsd:attribute name="rightsInfoURI" type="xsd:anyURI"/>
+ <xsd:attribute name="contentInfoURI" type="xsd:anyURI"/>
+ <xsd:attribute name="recordQuality" type="av:csv.1_.colonDelimPairs"/>
+ <xsd:attribute name="protection" type="xsd:string"/>
+ <xsd:attributeGroup ref="upnp:dateTime.attr.group"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--transform names with extensions-->
+ <xsd:simpleType name="componentClass.Type">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value=".*"/>
+ <xsd:pattern value="Audio"/>
+ <xsd:pattern value="Video"/>
+ <xsd:pattern value="Caption"/>
+ <xsd:pattern value="Subtitle"/>
+ <xsd:pattern value="Unknown"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!-- content.type -->
+ <xsd:complexType name="content.Type">
+ <xsd:sequence/>
+ <xsd:attribute name="MIMEType" type="xsd:string" use="required"/>
+ <xsd:attribute name="extendedType" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <!-- CompRes.type -->
+ <xsd:complexType name="compRes.Type" mixed="true">
+ <xsd:sequence>
+ <!-- we can't reffer directly to didl-lite:res.type since that creates a circular reference -->
+ <xsd:element name="isSynchAnchor" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="refUDN" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="refObjectID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="refResID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="res" type="upnp:upnp.res.type" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> -->
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--Component.type -->
+ <xsd:complexType name="component.Type">
+ <xsd:all minOccurs="1">
+ <xsd:element name="componentClass" type="upnp:componentClass.Type" maxOccurs="1" minOccurs="1"/>
+ <xsd:element name="contentType" type="upnp:content.Type" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="language" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="compRes" type="upnp:compRes.Type" minOccurs="0" maxOccurs="1"/>
+ </xsd:all>
+ <xsd:attribute name="componentID" type="xsd:string" use="required"/>
+ <xsd:attribute name="supportive" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="supportID" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <!-- ComponentGroup.type-->
+ <xsd:complexType name="componentGroup.Type">
+ <xsd:sequence>
+ <xsd:element name="component" type="upnp:component.Type" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="groupID" type="xsd:string" use="required"/>
+ <xsd:attribute name="required" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <!-- ComponentInfo.type -->
+ <xsd:complexType name="componentInfo.Type">
+ <xsd:sequence>
+ <xsd:element name="componentGroup" type="upnp:componentGroup.Type" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="componentID" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- programPreserved Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="programPreserved.Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="startTime" use="required"/>
+ <xsd:attribute name="startTimeDaylightSaving"/>
+ <xsd:attribute name="endTime"/>
+ <xsd:attribute name="endTimeDaylightSaving"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- programPreserved Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="preservedTimeRange.Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="startTime"/>
+ <xsd:attribute name="startTimeDaylightSaving"/>
+ <xsd:attribute name="endTime"/>
+ <xsd:attribute name="endTimeDaylightSaving"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- programList Related Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="programList.Type">
+ <xsd:sequence>
+ <xsd:element name="program" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="preserved"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--=============================-=============================-->
+ <!-- Content Protection Feature Properties -->
+ <!--=============================-=============================-->
+ <xsd:complexType name="owner.Type">
+ <xsd:sequence>
+ <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="lock" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="inclusion.Type">
+ <xsd:sequence>
+ <xsd:element name="role" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>