NCL is the acronym for Nested Context Language.
NCL is a declarative language, indeed an XML application, which has been specified in a modular way, aiming at combining its modules into language profiles.
Among the NCL profiles are those targeting DTV domain. The NCL flexibility, its reuse facility, multi-device support, application content and presentation adaptability, and mainly, its intrinsic support for easily defining spatio-temporal synchronization among media assets, including those coming from viewer interactions, make NCL an outstanding solution for all kinds of interactive DTV systems.
NCL is the declarative language of the Japanese-Brazilian DTV middleware ISDB-TB1) 2), and also ITU-T Recommendation for IPTV services3).
NCL has a stricter separation between application content and structure. NCL does not define any media content itself. Instead, it defines the glue that holds media together in multimedia presentations. Thus, an NCL document only defines how media objects are structured and related in time and space.
As a glue language, NCL does not restrict or prescribe any media-object content type. Which media objects are supported depends on the media players embedded in the NCL formatter (the NCL player).
Therefore, we can have perceptual content, like videos, images, audios, and texts, as NCL media objects. We can also have media objects with imperative code content, like Lua code, ECMAScript code, Java code, etc. In addition, we can have media objects with declarative code content, like HTML-based code, SVG code, X3D code, SMIL code, NCL code (yes, NCL applications embed other NCL applications), etc. Therefore, NCL does not substitute but embeds other language's applications, relating all objects in time and space in a multiple device distributed presentation.
The following processing instructions must be written in an NCL document. They identify NCL applications and the NCL version to which the document conforms.
<?xml version="1.0" encoding="ISO-8859-1"?> <ncl id="any string" xmlns="http://www.ncl.org.br/NCL3.0/profileName">
A specific version is specified in the URI path, where the version number “x.y” is written immediately after the ”/NCL”.
The version number of an NCL document specification consists of a major number and a minor number, separated by a dot. The numbers are represented as decimal character strings with leading zeros suppressed. The initial standard version number is 3.0.
New NCL versions shall be released in accordance to the following versioning policy. If NCL players that conform to older versions can still receive a document based on the revised specification, due to error corrections, operational reasons, or the addition of a new concise syntax notation (“syntax sugar”) that can be translated at compile time to the old one, the new version of NCL shall be released with the minor number updated. If NCL players that conform to older versions cannot receive a document based on the revised specifications, the major number must be updated.
NCL allows for the combination of its modules in language profiles.
Any document in conformance with NCL profiles shall have the <ncl> element as its root element.
<ncl id="any string" xmlns="http://www.ncl.org.br/NCLx.y/profileName">
The “profileName” string in the URI path, identifies the language profile used to specify the document. Currently, seven language profiles have been defined: