2.2.3.2.4.2 DRM Version 7 License Format

If the version attribute of the LICENSE element is equal to "2.0.0.0", the LICENSE element is a version 7 license as described in the following.

A WMDRM: License Protocol version 7 license is represented in XML format. The schema for a version 7 license is as follows. This schema does not include the child elements of the META element because they are specified by the content provider and are outside the scope of this document.

 <?xml version="1.0" encoding="utf-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="LICENSE">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="LICENSORINFO">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="DATA">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="LID" type="xs:string" />
                     <xs:element name="KID" type="xs:string" />
                     <xs:element name="ISSUEDATE" type="xs:string" />
                     <xs:element name="PRIORITY" type="xs:integer" />
                     <xs:element name="CONTENTPUBKEY" type="xs:string" />
                     <xs:element name="RevocationList" type="xs:string" /> <!-- base64-encoded -->
                     <xs:element name="META" minOccurs="0">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:any />
                         </xs:sequence>
                       </xs:complexType>
                     </xs:element>
                     <xs:choice minOccurs="0" maxOccurs="unbounded">
                     <xs:element name="ONSTORE">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="CONDITION" type="xs:string" 
                               minOccurs="0" />
                           <xs:element name="ACTION" type="xs:string" 
                               minOccurs="0" />
                         </xs:sequence>
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="ONSELECT">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="CONDITION" type="xs:string" />
                           <xs:element name="ACTION" type="xs:string" 
 minOccurs="0" />
                         </xs:sequence>
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="ONCLOCKROLLBACK" minOccurs="0">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="ACTION" type="xs:string" 
 minOccurs="0" />
                         </xs:sequence>
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="ONACTION" minOccurs="0">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="RESTRICTIONS" minOccurs="0" maxOccurs="1">
                             <xs:complexType>
                               <xs:choice minOccurs="0" maxOccurs="6">
                                 <xs:element name="ANALOGVIDEO" minOccurs="0" maxOccurs="1">
                                     <xs:complexType>
                                       <xs:attribute name="level" type="xs:integer" />
                                    </xs:complexType>
                                  </xs:element>
                                  <xs:element name="COMPRESSEDDIGITALAUDIO" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                      <xs:attribute name="level" type="xs:integer" />
                                    </xs:complexType>
                                  </xs:element>
                                  <xs:element name="COMPRESSEDDIGITALVIDEO" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                      <xs:attribute name="level" type="xs:integer" />
                                    </xs:complexType>
                                  </xs:element>
                                  <xs:element name="COPY" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                      <xs:attribute name="level" type="xs:integer" />
                                    </xs:complexType>
                                 </xs:element>
                                 <xs:element name="UNCOMPRESSEDDIGITALAUDIO" minOccurs="0" maxOccurs="1">
                                   <xs:complexType>
                                     <xs:attribute name="level" type="xs:integer" />
                                   </xs:complexType>
                                 </xs:element>
                                 <xs:element name="UNCOMPRESSEDDIGITALVIDEO" minOccurs="0" maxOccurs="1">
                                   <xs:complexType>
                                     <xs:attribute name="level" type="xs:integer" />
                                   </xs:complexType>
                                 </xs:element>
                               </xs:choice>
                             </xs:complexType>
                           </xs:element>
                           <xs:element name="CONDITION" type="xs:string" />
                           <xs:element name="ACTION" type="xs:string" 
 minOccurs="0" />
                         </xs:sequence>
                         <xs:attribute name="type" type="ActionNameType" />
                       </xs:complexType>
                     </xs:element>
                     </xs:choice>
                     <xs:element name="ENABLINGBITS">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="ALGORITHM" minOccurs="0">
                             <xs:complexType>
                               <xs:sequence />
                               <xs:attribute name="type" use="required" 
                                   fixed="MSDRM" />
                             </xs:complexType>
                           </xs:element>
                           <xs:element name="PUBKEY">
                             <xs:complexType>
                               <xs:simpleContent>
                                 <xs:extension base="xs:string"> <!-- base64-encoded -->
                                   <xs:attribute name="type" use="required" 
                                       fixed="machine" />
                                 </xs:extension>
                               </xs:simpleContent>
                             </xs:complexType>
                           </xs:element>
                           <xs:element name="VALUE" type="xs:string" /> <!-- base64-encoded -->
                           <xs:element name="SIGNATURE" 
 type="xs: string" /> <!-- base64-encoded -->
                         </xs:sequence>
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="CONTENTREVOCATION" minOccurs="0" 
                         maxOccurs="unbounded">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="DATA">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element name="SEQUENCENUMBER" 
                                     type="xs:integer" />
                                 <xs:element name="CONTENTPUBKEY" 
                                     type="xs:string" /> <!-- base64-encoded -->
                                 <xs:element name="LICENSESERVERPUBKEY" 
                                     type="xs:string" /> <!-- base64-encoded -->
                                 <xs:element name="CONDITION" 
 type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                           <xs:element name="SIGNATURE">
                             <xs:complexType>
                               <xs:sequence>
                                 <xs:element name="HASHALGORITHM">
                                   <xs:complexType>
                                     <xs:sequence />
                                     <xs:attribute name="type" fixed="SHA" 
                                         use="required" />
                                   </xs:complexType>
                                 </xs:element>
                                 <xs:element name="SIGNALGORITHM" minOccurs="0">
                                   <xs:complexType>
                                     <xs:sequence />
                                     <xs:attribute name="type" fixed="MSDRM" />
                                   </xs:complexType>
                                 </xs:element>
                                 <xs:element name="VALUE" type="xs:string" /> <!-- base64-encoded -->
                               </xs:sequence>
                             </xs:complexType>
                           </xs:element>
                         </xs:sequence>
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="REVOCATION" minOccurs="0" maxOccurs="unbounded">
                       <xs:complexType>
                         <xs:sequence>
                           <xs:element name="INDEX" type="xs:integer" />
                         </xs:sequence>
                         <xs:attribute name="type" type="RevocationType" />
                       </xs:complexType>
                     </xs:element>
                   </xs:sequence>
                 </xs:complexType>
               </xs:element>
               <xs:element name="SIGNATURE">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="HASHALGORITHM">
                       <xs:complexType>
                         <xs:sequence />
                         <xs:attribute name="type" fixed="SHA" 
 use="required" />
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="SIGNALGORITHM" minOccurs="0">
                       <xs:complexType>
                         <xs:sequence />
                         <xs:attribute name="type" fixed="MSDRM" />
                       </xs:complexType>
                     </xs:element>
                     <xs:element name="VALUE" type="xs:string" /> <!-- base64-encoded -->
                   </xs:sequence>
                 </xs:complexType>
               </xs:element>
               <xs:element name="CERTIFICATECHAIN">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="CERTIFICATE" type="xs:string" 
                         minOccurs="2" maxOccurs="unbounded" /> <!-- base64-encoded -->
                   </xs:sequence>
                   <xs:attribute name="type" fixed="MSDRM" />
                 </xs:complexType>
               </xs:element>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:sequence>
       <xs:attribute name="version" use="required" fixed="2.0.0.0" />
     </xs:complexType>
   </xs:element>
   <xs:simpleType name="ActionNameType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="CollaborativePlay" />
       <xs:enumeration value="Copy" />
       <xs:enumeration value="Play" />
       <xs:enumeration value="PlaylistBurn" />
       <xs:enumeration value="Print.redbook" />
       <xs:enumeration value="CREATE_PM_LICENSE" />
       <xs:enumeration value="Backup" />
       <xs:enumeration value="Restore" />
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="RevocationType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="wmdrmnet" />
       <xs:enumeration value="device" />
     </xs:restriction>
   </xs:simpleType>
 </xs:schema>
  

For a sample version 7 license, see DRM Version 7 License Example.