Plataforma Eclipse
Manifest de Plug-in

Versão 0.90 - Última revisão: 15 de março de 2001

As definições de marcação do manifest abaixo usam vários tokens e identificadores de nomenclatura. Para eliminar a ambigüidade, seguem algumas regras de produção para essas definições [elas são mencionadas no texto abaixo]. Em geral, todos os identificadores são estabelecidos pela distinção entre maiúsculas e minúsculas.

SimpleToken := seqüência de caracteres de ('a-z','A-Z','0-9') 
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) 
JavaClassName := ComposedToken 
PlugInId := ComposedToken
PlugInPrereq := PlugInId | 'exportar' PlugInId 
ExtensionId := SimpleToken 
ExtensionPointId := SimpleToken 
ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)
O restante dessa seção descreve a estrutura do arquivo plugin.xml como uma série de fragmentos DTD. O arquivo plugin.dtd apresenta definição DTD do seu conjunto.
<?xml encoding="US-ASCII"?> 
<plug-in !ELEMENT (exigências?, tempo de execução?, ponto de extensão*, extensão*)> 
<plug-in !ATTLIST 
  nome                CDATA #NECESSÁRIO 
  id                  CDATA #NECESSÁRIO 
  versão             CDATA #NECESSÁRIO 
  nome do fornecedor         CDATA #ENVOLVIDO
  classe               CDATA #ENVOLVIDO 
>
O elemento do <plug-in> define o corpo do manifest. Ele pode contém definições para o tempo de execução do plug-in, declarações de quaisquer novos pontos de extensão introduzidos pelo plug-in, bem como configurações de extensões funcionais (configuradas em pontos de extensão definidos por outros plug-ins ou introduzidos por esses plug-in). Os atributos do <plug-in> são os seguintes: O elemento* regra de construção do XML DTD significa nenhuma ou mais ocorrências do elemento; elemento? significa nenhuma ou uma ocorrência do elemento; o elemento+ (usado abaixo) significa uma ou mais ocorrências do elemento. Baseado na definição de <plug-in> acima, isso significa, por exemplo, que um plug-in contendo somente uma definição de tempo de execução e nenhuma declaração de pontos de extensão ou configuração de extensão é válido (por exemplo, bibliotecas comuns das quais outros plug-ins dependem). De modo semelhante, um plug-in contendo somente configurações de extensão e nenhum tempo de execução ou ponto de extensão próprios também é válido (por exemplo, classes configuradas entregues em outros plug-ins em pontos de extensão declarados em outros plug-ins).

A seção do manifest <exigida> declara qualquer dependência a outros plug-ins.

< exigências do !ELEMENT (importar+)>
<!ELEMENT importar EMPTY>
<importar !ATTLIST
 plug-in               CDATA #NECESSÁRIO
 versão              CDATA #ENVOLVIDO
 correspondência                (exata | compatível) "compatível"
 exportar               (verdadeiro | falso) "falso"
>
Cada dependência é especificada usando um elemento <importado>. Ele contém os seguintes atributos: A seção de <tempo de execução> do manifest contém uma definição de uma ou mais bibliotecas que constitui o tempo de execução do plug-in. As bibliotecas mencionadas são usadas pelos mecanismos de execução da plataforma (o carregador de classe do plug-in) para carregar e executar o código correto exigido pelo plug-in.
<tempo de execução do!ELEMENT (biblioteca+)> 
<biblioteca do !ELEMENT (exportar*)>
<biblioteca do !ATTLIST 
  nome               CDATA #NECESSÁRIO 
>
<!ELEMENT exportar EMPTY> 
<exportar !ATTLIST
  nome               CDATA #NECESSÁRIO 
>
O elemente de <tempo de execução> não tem atributos.

Os elementos de <biblioteca> coletivamente definem o tempo de execução do plug-in. Pelo menos uma <biblioteca> deve ser especificada. Cada elemento de <biblioteca> tem os seguintes atributos:

Cada elemento de <biblioteca> pode especificar qual parte da biblioteca deverá ser exportada. As regras de exportação são especificadas como um conjunto de máscaras de exportação. Por padrão (nenhuma regra de exportação especificada), a biblioteca é considerada particular. Os elementos de <exportação> têm os seguintes atributos: A arquitetura da plataforma é baseada na noção de pontos de extensão configuráveis. A própria plataforma predefine um conjunto de pontos de extensão que cobrem a tarefa de ampliar a plataforma e o desktop (por exemplo, incluindo um menu de ações, contribuindo com editores incorporados). Além dos pontos de extensão predefinidos, cada plug-in fornecido pode declarar pontos de extensão adicionais. Declarando um ponto de extensão, o plug-in está essencialmente promovendo sua habilidade de configurar a função de plug-in com extensões fornecidas externamente. Por exemplo, o plug-in Page Builder pode declarar um ponto de extensão para adicionar novos DTCs (Design Time Controls) à paleta de construção. Isso significa que o Page Builder definiu uma arquitetura que significa ser um DTC e implementou o código que procura por extensões DTC que foi configurada nos pontos de extensão.
<!ELEMENT pontos de extensão EMPTY>  
< pontos de extensão do !ATTLIST 
  nome               CDATA #NECESSÁRIO 
  id                 CDATA #NECESSÁRIO    
  esquema             CDATA #ENVOLVIDO 
>
Os elementos de <pontos de extensão> têm os seguintes atributos: Extensões reais são configuradas nos pontos de extensão (predefinidas ou declaradas nesse plug-in) na seção <extensão>. A informação de configuração é especificada como um XML bem formado contido entre a <extensão> e as marcações de </extensão>. A plataforma não especifica o formulário real da marcação de configuração (além de exigir que ele seja um XML bem formado). A marcação é definida pelo fornecedor do plug-in que declara dos pontos de extensão. A plataforma, na verdade, não interpreta a marcação de configuração. Ela simplesmente transmite as informações de configuração ao plug-in como parte do processamento dos pontos de extensão (no momento em que os pontos de extensão lógicos consultam todas as suas extensões configuradas).
<!ELEMENT extensão ANY> 
<extensão do !ATTLIST  
  ponto              CDATA #NECESSÁRIO 
  id                 CDATA #ENVOLVIDO 
  nome               CDATA #ENVOLVIDO 
>
O elemento de <extensão> tem os seguintes atributos: Importante: o conteúdo do elemento de <extensão> é declarado usando-se a regra ANY. Isso significa que um XML bem formado pode ser especificado dentro da seção de configuração da extensão (entre a <extensão> e as marcações de </extensão>).