The version number of an NCL document consists of a major number and a minor number, separated by a dot. The numbers are represented as a decimal number character string with leading zeros suppressed. The current version of NCL is 3.0 (NCL 3.0).
The first version of NCL was specified through an XML DTD - Document Type Definition. The second version of NCL, named NCL 2.0, was specified using XML Schema. Following recent trends, from version 2.0 on, NCL has been specified in a modular way, allowing the combination of its modules in language profiles.
Besides the modular structure, NCL 2.0 introduced new facilities to the previous version 1.0, among others:
- definition of hypermedia connectors and connector bases;
- use of hypermedia connectors for link authoring;
- definition of ports and maps for composite nodes, satisfying the document compositionality property;
- definition of hypermedia composite-node templates, allowing the specification of constraints on documents;
- definition of composite-node template bases;
- use of composite-node templates for authoring composite nodes;
- refinement of document specifications with content alternatives, through the element, grouping a set of alternative nodes;
- refinement of document specifications with presentation alternatives, through the element, grouping a set of alternative descriptors;
- use of a new spatial layout model.
NCL 2.1 brought some refinements to the previous version: a module for defining cost functions associated with media object duration was introduced; a module aiming at describing the selection rules of <switch> and <descriptorSwitch> elements was defined; and refinements in some NCL modules were made, mainly in the XTemplate module.
NCL 2.2 made minor refinements in some NCL 2.1 modules, concerning their element definitions, and introduced a different approach in defining NCL modules and profiles.
NCL 2.3 introduced two new modules for supporting base and entity reuse, and refined the definition of some elements in order to support the new features.
NCL 2.4 reviewed and refined the reuse support introduced in version 2.3, and the specification of the switch and descriptor switch elements. This version also split the Timing module introduced by NCL 2.1, creating a new module to encapsulate issues related with time-scaling operations (elastic time computation using temporal cost functions) in hypermedia documents.
The NCL 3.0 edition revised some functionalities contained in NCL 2.4. NCL 3.0 is more specific regarding some attribute values. This new version introduced two new functionalities, as well: Key Navigation and Animation functionalities. In addition, NCL 3.0 made depth modifications on the Composite-Node Template functionality. NCL 3.0 also reviewed the hypermedia connector specification in order to have a more concise notation. Relationships among NCL imperative objects and other NCL objects are also refined in NCL 3.0, as well as the behavior of NCL imperative object players.
From version 3.0 on, 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, in relation to error corrections or operational reasons, 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 shall be updated.
A specific module of version x.y is specified in http://www.ncl.org.br/NCLx.y/modules/moduleName, where the version number is written immediately after the NCL. Similarly, a specific profile of version x.y is specified in http://www.ncl.org.br/NCLx.y/profiles/profileName.