CCML is an XML language for assisting client-side (or agent-driven) content negotiation. The language allows the client to first fetch a specification of an entity to be deployed (for example, a hierarchically encoded image), and allow it to determine which components of that entity need to be fetched, and how they need to be put together, in a way which is compatible with the deployment environment. (Continuing the image example, the deployment environment may specifically want to show only a small part of the image, so only components that contribute to that part need to be fetched. Alternatively, the image is to be shown in full, but only at a low resolution; in that case, components that provide only additional detail need not be fetched.)
The current form of CCML is a set of namespaced XML elements which can be embedded into other XML documents, which can be application-specific. Such a document can be pre-processed to resolve the CCML elements, leaving behind only application-specific data.
To resolve a CCML-enabled application-specific
document, create a Properties
object to describe the deployment environment, then use
it to configure a
PropertiesDOMFilter
, and feed the document
through it. Documentation for CCML elements can be found
under CCML1.0.
In its original form, a CCML document describes which components (identified by URI) should be used under which circumstances (specified by predicates to be tested against a configuration), plus any additional information required to combine the components. This form is documented under CCML0.4, CCML0.3, CCML0.2 and CCML0.1, but is deprecated.
(In CCML's original form of being a stand-alone document, it's not really a mark-up language, so it was not well named. The alternative name CCSL was used briefly, even though ccml remained the mnemonic in the names of packages and files. In the new form, however, as embedded elements in an application-specific document, it really is a mark-up language, so I've decided to revert back to the original name.)
CCML was first published in Component Selection for Heterogeneous Active Networking (2001).
Sorry, this software is currently not publicly available, for… reasons.