Core XMCL Syntax

SyntaxThe general structure of an XMCL document is described in the XMCL Overview (section 2). This section provides detailed syntax of the core XMCL features. Features described in this section are mandatory to implement unless otherwise indicated. The XML Schema definitions used are from [XMLSCHEMA]</p>

The <xmcl> element

The xmcl element is the outer structure element in the language. There MUST be only one xmcl element per document. It contains all of the licenses along with any trusted system specific information required to generate or enforce the license.


Schema Definition:    
<element name="xmcl">     
<complexType>        
<sequence>
<element ref="clientInfo" minOccurs="0"/>           
<element ref="license" maxOccurs="unbounded"/>
<element ref="revocationList" minOccurs="0"/>
<element ref="auth" minOccurs="0"/>
</sequence>
</complexType>  
</element>  

The <clientInfo> element

The clientInfo element contains any parameters that are needed by a specific trusted system to generate or enforce the license(s) described by the <license> elements. There are no defined attributes for this element at this time. Base XML attributes defined in SHOULD be allowed. The clientInfo element contains one or more <param> elements.


Schema Definition:   
<element name="clientInfo">     
<complexType>        
<sequence>           
<element ref="param" maxOccurs="unbounded"/>        
</sequence>     
</complexType>  
</element>  

The <param> element

The param element is borrowed from XHTML 1.0 and is used to define name value pairs to convey implement specific parameters to the trusted system.


Schema Definition  
<element name="param">     
<complexType>        
<attribute name="id" type="ID"/>        
<attribute name="name" type="string"/>        
<attribute name="value" type="string"/>        
<attribute name="valuetype" use="default" value="data">          
<simpleType>             
<restriction base="NMTOKEN">                
<enumeration value="data"/>                
<enumeration value="ref"/>                
<enumeration value="object"/>             
</restriction>          
</simpleType>        
</attribute>        
<attribute name="type" type="string"/>     
</complexType>  
</element>  

The <license> element

The license element contains the business rules that the trusted system should use to generate the implementation specific license.


Schema Definition    
<element name="license">     
<complexType>        
<sequence>           
<element ref="contentInfo"/>           
<element ref="validPeriod"/>           
<element ref="usageRights"/>           
<element ref="copyRights" minOccurs="0"/>           
<element ref="transferRights" minOccurs="0"/>        
</sequence>        
<attribute name="numCopies" type="integer" use="default" value="1"/>        
<attribute name="allowTransfer" type="boolean" use="default" value="false"/>     
</complexType>  
</element>  

The <contentInfo> element

The contentInfo element identifies and contains information specific to the piece of content being licensed.


Schema Definition:    
<element name="contentID" minOccurs="0">     
<complexType>        
<simpleContent>           
<extension base="string">             
<attribute name="type" use="default" value="guid">                
<simpleType>                   
<restriction base="NMTOKEN">                      
<enumeration value="guid"/>                      
<enumeration value="????"/>                   
</restriction>                
</simpleType>             
</attribute>          
</extension>        
</simpleContent>     
</complexType>  
</element>