Versões da NCL
O número de versão de uma especificação NCL consiste em um número principal e outro secundário, separados por um ponto. Os números são representados como uma cadeia de caracteres formada por números decimais, na qual os zeros à esquerda são suprimidos. O número de versão corrente é 3.0 (NCL 3.0).
A primeira versão da NCL (Nested Context Language) foi especificada através de um XML DTD (Document Type Definition). A partir de sua segunda versão, chamada de NCL 2.0, NCL passou a ser especificado através de um XML Schema. Seguindo as recentes tendências de desenvolvimento, NCL foi projetada de forma modular, permitindo a combinação de seus módulos em diferentes perfis de linguagem.
Além da estrutura modular já mencionada, NCL 2.0 introduziu funcionalidades novas, tais como:
- definição de conectores hipermídia e bases de conectores;
- uso de conectores hipermídia para autoria de elos (links);
- definição de portas e mapas para nós de composição;
- definição de templates de nós de composição hipermídia e bases de templates de nós de composição e o uso destes para autoria de nós de composição;
- refino da especificação do documento com alternativas de conteúdo através do uso do elemento <switch>, que agrupa um conjunto de nós alternativos;
- refino da especificação do documento com alternativas de apresentação através do elemento <descriptorSwitch>, que agrupa um conjunto de descritores alternativos;
- uso de um novo modelo de leiaute espacial.
NCL 2.1 trouxe algumas melhorias com relação à versão anterior: um módulo para definir funções de custo associadas à duração de objetos de mídia foi introduzido; um módulo que descreve a seleção de regras para os elementos <switch> e <descriptorSwitch> foi definido; além de melhorias em nos módulos da linguagem, destacando-se o XTemplate.
NCL 2.2 incorporou algumas pequenas mudanças com relação à versão anterior, relacionadas a definição dos elementos da linguagem, introduzindo uma nova abordagem para definição dos módulos e perfis NCL.
NCL 2.3 introduziu dois novos módulos para o suporte ao reuso de bases e entidades, refinando a definição de alguns elementos de forma a suportar as novas funcionalidades.
NCL 2.4 reviu e refinou o suporte a reuso introduzido na versão 2.3, e a especificação dos elementos <switch> e <descriptorSwitch>. Essa versão também dividiu o módulo Timing introduzido por NCL 2.1, criando um novo módulo para encapsular questões relacionadas com operações de escala de tempo (computação de tempo elástico usando funções de custo temporal) em documentos hipermídia.
A edição NCL 3.0 reviu algumas funcionalidades contidas na NCL 2.4. NCL 3.0 é mais específica no tocante a alguns valores de atributos. Essa nova versão introduz duas novas funcionalidades: navegação através do uso de teclas e funcionalidades de animação. Adicionalmente, NCL 3.0 fez modificações profundas na funcionalidade de template de nó de composição. NCL 3.0 também reestruturou a especificação de conectores hipermídia de forma a possuir uma notação mais concisa. Relacionamentos entre objetos imperativos NCL e outros objetos NCL também são definidos na versão 3.0, como também o comportamento dos exibidores NCL para objetos imperativos.
A partir da versão 3.0, novas versões da NCL devem ser publicadas de acordo com a seguinte política de versionamento. Se exibidores (players) NCL compatíveis com versões mais antigas ainda puderem receber um documento com base na especificação revisada, com relação a correções de erro, por motivos operacionais, a nova versão da NCL deve obrigatoriamente ser publicada com o número secundário atualizado. Se exibidores (players) NCL compatíveis com versões mais antigas não puderem receber um documento baseado nas especificações revisadas, o número principal deve obrigatoriamente ser atualizado.
Um módulo específico da versão x.y é especificado em http://www.ncl.org.br/NCLx.y/modules/moduleName, onde o número de versão é escrito imediatamente após NCL. De modo similar, um perfil específico da versão x.y é especificado em http://www.ncl.org.br/NCLx.y/profiles/profileName.