XML schema for MPEG-21 Part 5 FCD, Multimedia Extension (MX)
Date: 2003-05. From: http://mpeg.telecomitalialab.com/working_documents/mpeg-21/rel/REL_fcd.zip
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="urn:mpeg:mpeg21:2003:01-REL-MX-NS" xmlns:mx="urn:mpeg:mpeg21:2003:01-REL-MX-NS" xmlns:sx="urn:mpeg:mpeg21:2003:01-REL-SX-NS" xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:import namespace="urn:mpeg:mpeg21:2003:01-REL-SX-NS" schemaLocation="rel-sx.xsd"/> <xsd:import namespace="urn:mpeg:mpeg21:2003:01-REL-R-NS" schemaLocation="rel-r.xsd"/> <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> <!-- --> <!-- === Rights === --> <!-- --> <xsd:complexType name="Modify"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Enlarge"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Reduce"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Move"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Adapt"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Extract"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Embed"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Play"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Print"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Execute"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Install"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Uninstall"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Delete"> <xsd:complexContent> <xsd:extension base="r:Right"/> </xsd:complexContent> </xsd:complexType> <xsd:element name="modify" type="mx:Modify" substitutionGroup="r:right"/> <xsd:element name="enlarge" type="mx:Enlarge" substitutionGroup="r:right"/> <xsd:element name="reduce" type="mx:Reduce" substitutionGroup="r:right"/> <xsd:element name="move" type="mx:Move" substitutionGroup="r:right"/> <xsd:element name="adapt" type="mx:Adapt" substitutionGroup="r:right"/> <xsd:element name="extract" type="mx:Extract" substitutionGroup="r:right"/> <xsd:element name="embed" type="mx:Embed" substitutionGroup="r:right"/> <xsd:element name="play" type="mx:Play" substitutionGroup="r:right"/> <xsd:element name="print" type="mx:Print" substitutionGroup="r:right"/> <xsd:element name="execute" type="mx:Execute" substitutionGroup="r:right"/> <xsd:element name="install" type="mx:Install" substitutionGroup="r:right"/> <xsd:element name="uninstall" type="mx:Uninstall" substitutionGroup="r:right"/> <xsd:element name="delete" type="mx:Delete" substitutionGroup="r:right"/> <!-- --> <!-- === Resources === --> <!-- --> <!-- Digital Item Resources --> <xsd:complexType name="DiItemReference"> <xsd:complexContent> <xsd:extension base="r:Resource"> <xsd:sequence minOccurs="0"> <xsd:element name="identifier" type="xsd:anyURI"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="DiReference"> <xsd:complexContent> <xsd:extension base="r:Resource"> <xsd:sequence minOccurs="0"> <xsd:element name="identifier" type="xsd:anyURI"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="diItemReference" type="mx:DiItemReference" substitutionGroup="r:resource"/> <xsd:element name="diReference" type="mx:DiReference" substitutionGroup="r:resource"/> <!-- --> <!-- === Conditions === --> <!-- --> <!-- Digital Item Conditions --> <xsd:complexType name="DiCriteria"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="mx:diReference"/> <xsd:element ref="r:anXmlPatternAbstract" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="DiPartOf"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="mx:diReference"/> <xsd:element ref="mx:diReference"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="diCriteria" type="mx:DiCriteria" substitutionGroup="r:condition"/> <xsd:element name="diPartOf" type="mx:DiPartOf" substitutionGroup="r:condition"/> <!-- Marking Conditions --> <xsd:complexType name="IsMarked"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:resource"/> <xsd:any namespace="##any" processContents="lax"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Mark"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:resource"/> <xsd:any namespace="##any" processContents="lax"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="isMarked" type="mx:IsMarked" substitutionGroup="r:condition"/> <xsd:element name="mark" type="mx:Mark" substitutionGroup="r:condition"/> <!-- Security Conditions --> <xsd:complexType name="AudioOutputPrincipal"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:principal"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Source"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:principal"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Destination"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:principal"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Helper"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:principal" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="wildcard" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element ref="r:anXmlPatternAbstract" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ResourceSignedBy"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="dsig:CanonicalizationMethod"/> <xsd:element ref="dsig:SignatureMethod"/> <xsd:element ref="r:resource"/> <xsd:element ref="dsig:Transforms" minOccurs="0"/> <xsd:element ref="dsig:DigestMethod"/> <xsd:element ref="r:principal"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="VideoOutputPrincipal"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:principal"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="audioOutputPrincipal" type="mx:AudioOutputPrincipal" substitutionGroup="r:condition"/> <xsd:element name="source" type="mx:Source" substitutionGroup="r:condition"/> <xsd:element name="destination" type="mx:Destination" substitutionGroup="r:condition"/> <xsd:element name="helper" type="mx:Helper" substitutionGroup="r:condition"/> <xsd:element name="resourceSignedBy" type="mx:ResourceSignedBy" substitutionGroup="r:condition"/> <xsd:element name="videoOutputPrincipal" type="mx:VideoOutputPrincipal" substitutionGroup="r:condition"/> <!-- Transactional Conditions --> <xsd:complexType name="Transaction"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:sequence minOccurs="0"> <xsd:element ref="r:serviceReference"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="transaction" type="mx:Transaction" substitutionGroup="r:condition"/> <!-- Resource Attribute Conditions --> <xsd:complexType name="RequiredAttributeChanges"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="mx:complement"/> <xsd:element ref="mx:intersection"/> <xsd:element ref="mx:set"/> <xsd:element ref="mx:union"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ProhibitedAttributeChanges"> <xsd:complexContent> <xsd:extension base="r:Condition"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="mx:complement"/> <xsd:element ref="mx:intersection"/> <xsd:element ref="mx:set"/> <xsd:element ref="mx:union"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="requiredAttributeChanges" type="mx:RequiredAttributeChanges" substitutionGroup="r:condition"/> <xsd:element name="prohibitedAttributeChanges" type="mx:ProhibitedAttributeChanges" substitutionGroup="r:condition"/> <!-- Resource Attribute Set Definitions --> <xsd:element name="complement" substitutionGroup="r:licensePart"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="r:LicensePart"> <xsd:choice minOccurs="0"> <xsd:element ref="mx:complement"/> <xsd:element ref="mx:intersection"/> <xsd:element ref="mx:set"/> <xsd:element ref="mx:union"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="intersection" substitutionGroup="r:licensePart"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="r:LicensePart"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="mx:complement"/> <xsd:element ref="mx:intersection"/> <xsd:element ref="mx:set"/> <xsd:element ref="mx:union"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="set" substitutionGroup="r:licensePart"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="r:LicensePart"> <xsd:sequence minOccurs="0"> <xsd:any namespace="##any" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="definition" type="xsd:anyURI" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="union" substitutionGroup="r:licensePart"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="r:LicensePart"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="mx:complement"/> <xsd:element ref="mx:intersection"/> <xsd:element ref="mx:set"/> <xsd:element ref="mx:union"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema>