Nested Context Language

NCL
(Nested Context Language)
Extensão do arquivo .ncl
Desenvolvido por TeleMídia Lab
Lançamento 2002
Última versão 3.1
Tipo de formato Linguagem de marcação
Variante de XML
Página oficial ncl.org

Nested Context Language (NCL) é uma linguagem de autoria declarativa para documentos hipermídia utilizada no campo da televisão digital e interatividade. Em sua concepção, a NCL é o resultado de uma combinação de módulos da XML, o que permite que a própria linguagem possa combinar módulos internos e gerar perfis para objetivos específicos.[1]

Os documentos NCL, não contêm objetos de mídia, em vez disso, funcionam fazendo associação (como uma linguagem de cola) dos elementos em uma apresentação multimídia. A linguagem também conecta e define a relação e a temporização dos elementos.[2] Não ha restrição em relação a tipo de mídia, podendo ser imagens (GIF, JPEG e etc.), vídeo (MPEG, MOV e etc.), audios (MP3, WMA e etc.), arquivos de texto (TXT, PDF, etc.) e até action scripts (Xlet, Lua, etc.).[3]

A NCL foi inicialmente projetada para o ambiente Web, mas uma das principais aplicações da NCL é o uso como linguagem declarativa do middleware do SBTVD (sistema brasileiro de televisão digital) denominado Ginga, mais especificamente no modulo Ginga-NCL.[2] É também uma tecnologia padronizada para pela ITU-T para serviços de TVIP (Televisão por IP). Em ambos os casos é utilizado para desenvolver aplicações interativas para televisão digital.[4]

Estrutura

O NCL foi projetado para ser modular para permitir o uso de subconjuntos de módulos de acordo com as necessidades da aplicação específica.[1]

Exemplo de estrutura básica de um arquivo NCL:

<?xml version="1.0" encoding="ISO-8859-1"?>	
<ncl xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" id="app1">
    <head>
        <regionBase>
            <region id="rgFundoTV" width="1080" height="1920" zIndex="1"/>
                <region id="rgImgPrincipal" left="240" top="91" width="500" height="500" zIndex="2"/>
            </region>
        </regionBase>
        <descriptorBase>
            <descriptor id="dImgPrincipal" region="rgImgPrincipal"/>
        </descriptorBase>
	   <connectorBase>  
            <causalConnector id="onEndStart">
		        <simpleCondition role="onEnd"/>
		        <simpleAction role="start"/>
		     </causalConnector>
       <connectorBase>	
    </head>
    <body>
        <port id="pEntrada" component="img1Sel1"/>
        <media type="application/x-ginga-settings" id="nodeSettingsLegenda">
            <property name="opcao"/>
        </media>
        <media id="fundo" src="media/fundoSel1.jpg" descriptor="dFundo"/>
        <link id="lRetornoMenu" xconnector="onEndStart">
            <bind component="switchOpcaoLegenda" role="onEnd"/>
            <bind component="img1Sel1" role="start"/>
        </link>
    </body>
</ncl>

Na segunda linha é possível ver a especificação de qual Perfil NCL este documento vai usar  :

<ncl xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">

A versão 3.1 do padrão é dividida em 14 áreas com cada módulo atribuído a uma área.  Cada módulo, por sua vez, define um ou mais elementos XML. As áreas e módulos associados são:[2]

  • Estrutura
    • Modulo Estrutura
  • Componentes
    • Modulo Mídia
    • Modulo Contexto
  • Interfaces
    • Modulo MediaContentAnchor
    • Modulo CompositeNodeInterface
    • Modulo PropertyAnchor
    • Modulo SwitchInterface
  • Layout
    • Módulo Layout
  • Especificação de apresentação
    • Modulo Descritor
  • Temporização
    • Módulo Temporização
  • Efeitos de Transição
    • Módulo TransitionBase
    • Módulo Transição
  • Navigational Key
    • Module KeyNavigation
  • Controle de Apresentação
    • Módulo TestRule
    • Módulo TestRuleUse
    • Módulo ContentControl
    • Módulo DescriptorControl
  • Linking
    • Módulo Linking
  • Conectores
    • Módulo ConnectorCommonPart
    • Módulo ConnectorAssessmentExpression
    • Módulo ConnectorCausalExpression
    • Módulo CausalConnector
    • Módulo CausalConnectorFunctionality
    • Módulo ConnectorBase
  • Animação
    • Módulo Animação
  • Reuse
    • Módulo Importação
    • Módulo EntityReuse
    • Módulo ExtendedEntityReuse
  • Meta-Information
    • Módulo Metainformation

Perfis NCL

Perfis são subconjuntos padrão de módulos. Os perfis definidos pela norma incluem:[1]

  • Perfil completo – Inclui todos os módulos NCL
  • Perfil Aprimorado de TV Digital (EDTV) - Inclui Estrutura, Layout, Mídia, Contexto, MediaContentAnchor, CompositeNodeInterface, PropertyAnchor, SwitchInterface, Descriptor, Linking, CausalConnectorFunctionality, ConnectorBase, TestRule, TestRuleUse, ContentControl, DescriptorControl, Timing, Import, EntityReuse, ExtendedEntityReuse, Módulos KeyNavigation, Animation, TransitionBase, Transition e Metainformation
  • Perfil Básico de TV Digital (BDTV) – Inclui os perfil Aprimorado de TV Digital (EDTV), exceto os módulos Animation, TransitionBase e Transition

Ligações externas

Referências

  1. a b c «about-ncl [NCL Handbook]». handbook.ncl.org.br. Consultado em 28 de janeiro de 2022 
  2. a b c INTERNATIONAL TELECOMMUNICATION UNION (ed.). «H.761 "Nested context language (NCL) and Ginga-NCL" (Rev.): Initial draft of revised text» (PDF) (em inglês). Consultado em 20 de dezembro de 2021 
  3. Soares, Luiz Fernando Gomes; Rodrigues, Rogério Ferreira; Moreno, Márcio Ferreira (março de 2007). «Ginga-NCL: the declarative environment of the Brazilian digital TV System». Journal of the Brazilian Computer Society (em inglês) (1): 37–46. ISSN 1678-4804. doi:10.1007/BF03192400. Consultado em 29 de janeiro de 2022 
  4. Carlos de Salles Soares Neto; Luiz Fernando Gomes Soares; Clarisse Sieckenius de Souza (Novembro 2010). «The Nested Context Language reuse features». Journal of the Brazilian Computer Society (em inglês). 16: 229–245. doi:10.1007/s13173-010-0017-z