XMCL Overview and Examples
This section provides an overview and examples of XMCL for a few common use cases. This section is informative. Refer to Processing Rules (section 3) and Core XMCL Syntax (section 4) for the normative definition of the language. XMCL documents are intended to be the interchange that bridges between a back end business system and a specific trusted system. All XMCL documents have the following structure (where "?" denotes zero or one occurrence; "+" denotes one or more occurrences; and "*" denotes zero or more occurrences)
<xmcl>
(clientInfo)?
(license)+
(auth)?
</xmcl>
The clientInfo section will be specific to each enforcement system. It contains parameters that are required for the trusted system to generate the license (e.g. cryptographic keys, request or response authentication data, etc.). There will be one or more license sections, one for each license that should be granted. The license section describes the specific business rules that should be applied to a specific piece of content.
XMCL supports multiple licenses in a single request, which would enable the licensing of some purchased content to include a promotional license to another piece of content. The auth section optional and contains authentication information so the receiver can validate the request is authentic if required. There are a number of business models that feed into the requirements for XMCL. They are rental, subscription, ownership, video on demand/pay per view, promotion, and corporate internal communications. Example XMCL documents for rental, subscription and ownership follows. In the examples, attributes and elements may be omitted, as the intent is simply to get a feel for the language, not provide a definition or guide for the language.
Ed note: are there any more significant business models that should be included?
Rental Example
For the rental business model a small set of rules need to be specified that simply describe the rental period. The following is an example XMCL document describing a 24-hour rental license for the movie "First Blood". The rental period begins when the movie is first watched and must occur within a week of purchase. For this example, the XMCL document always follows a template with only information regarding the specific customer and date/time information modified.
<xmcl>
<license>
<contentInfo>
<contentId type="GUID">
13AC7DE5-8028-42fe-95CE-0DC2221891C7
</contentID>
<ds:KeyInfo
xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>ContentKey</ds:KeyName>
<ds:KeyValue>
<key algorithm="urn:nist-gov:tripledes-ede-cbc">
3812A419C63BE771 AD9F61FEFA20CE63 3812A419C63BE771
</key>
<ds:KeyValue>
<ds:KeyInfo>
<rdf:RDF xmlns:rdf=
"https://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="https://purl.org/dc/elements/1.1/">
<rdf:Description>
<dc:title>First Blood</dc:title>
<dc:subject>
movie, action, adventure
</dc:subject>
</rdf:Description>
</rdf:RDF>
</contentInfo>
<validPeriod start="2001614T184300"
end="2001621T184300"/>
<usageRights>
<useDuration length="24h" begin="firstUse"/>
</usageRights>
</license>
</body>
</xmcl>
This XMCL document contains a single <license> element. The <contentID> element on line 4 defines the unique identifier for the content. The type attribute specifies that the id used is a GUID. The <ds:KeyInfo> element on line 7 specifies the symmetric key for decryption of the content. KeyInfo is borrowed from.