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
- Componentes
- Modulo Mídia
- Modulo Contexto
- Interfaces
- Modulo MediaContentAnchor
- Modulo CompositeNodeInterface
- Modulo PropertyAnchor
- Modulo SwitchInterface
- Layout
- Especificação de apresentação
- Temporização
- Efeitos de Transição
- Módulo TransitionBase
- Módulo Transição
- Navigational Key
- Controle de Apresentação
- Módulo TestRule
- Módulo TestRuleUse
- Módulo ContentControl
- Módulo DescriptorControl
- Linking
- Conectores
- Módulo ConnectorCommonPart
- Módulo ConnectorAssessmentExpression
- Módulo ConnectorCausalExpression
- Módulo CausalConnector
- Módulo CausalConnectorFunctionality
- Módulo ConnectorBase
- Animação
- Reuse
- Módulo Importação
- Módulo EntityReuse
- Módulo ExtendedEntityReuse
- Meta-Information
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