Versão 3.2 - Revisto pela última vez a 9 de Maio, 2006
As definições de marcação de manifesto seguintes fazem uso de vários símbolos e identificadores de nomenclatura. Para eliminar a ambiguidade, a seguir encontram-se algumas regras de produção para estes símbolos e identificadores [referenciados no texto seguinte]. De uma forma geral, todos os identificadores são sensíveis a maiúsculas e minúsculas.
SimpleToken := sequência de caracteres de ('a-z','A-Z','0-9','_') ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) QualifiedId := ComposedToken '.' SimpleToken ExtensionId := SimpleToken | QualifiedId ExtensionPointId := SimpleToken | QualifiedId ExtensionPointReference := SimpleToken | QualifiedId
O restante desta secção descreve a estrutura do ficheiro plugin.xml como uma série de fragmentos de DTD. O ficheiro plugin.dtd apresenta a definição da DTD por completo.
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT plugin (extension-point*, extension*)>
O elemento <plugin> define o corpo do manifesto. Opcionalmente, contém as declarações de quaisquer pontos de extensão novos a serem introduzidos pelo plug-in, bem como a configuração de extensões funcionais (configurada em pontos de extensão definidos por outros other plug-ins ou introduzida por este plug-in).
A regra de construção DTD XML element* significa que existem zero ou mais ocorrências do elemento; o valor element? significa zero ou um ocorrência do elemento; e element+ (utilizado em baixo) significa uma ou mais ocorrências do elemento. Com base na definição de <plugin> anterior, isto significa, por exemplo, que é válido um plug-in que não contém quaisquer declarações de pontos de extensão ou configurações de extensão (por exemplo, as bibliotecas comuns das quais dependem outros plug-ins). Do mesmo modo, também é válido um plug-in que contém apenas configurações de extensão e nenhum ponto de extensão próprio (por exemplo, as classes de configuração indicadas por outros plug-ins em pontos de extensão declarados noutros plug-ins).
A arquitectura do Eclipse baseia-se na noção de pontos de extensão configuráveis. A plataforma define por si própria um conjunto de pontos de extensão que cumprem a tarefa de expandir a plataforma e ambiente de trabalho (por exemplo, adicionando acções do menu, fazendo contribuições para o editor incorporado). Além dos pontos de extensão predefinidos, cada plug-in fornecido pode declarar pontos de extensão adicionais. Ao declarar um ponto de extensão, o plug-in está essencialmente a publicitar a capacidade de configurar a função do plug-in com extensões fornecidas externamente. Por exemplo, o plug-in de construção de páginas pode declarar um ponto de extensão para adicionar novos Controlos de Tempo de Desenho (DTC) na paleta do construtor. Isto significa que o construtor de páginas definiu uma arquitectura para o significa ser um DTC e implementou o código que procura extensões de DTC que foram configuradas nos pontos de extensão.
<!ELEMENT extension-point EMPTY> <!ATTLIST extension-point name CDATA #REQUIRED id CDATA #REQUIRED schema CDATA #IMPLIED >
O elemento <extension-point> tem os seguintes atributos:
As extensões reais são configuradas em pontos de extensão (predefinidos ou recém-declarados neste plug-in) na secção <extension>. A informação sobre a configuração é especificada, bem como o XML bem formatado contido entre os códigos <extension> e </extension>. A plataforma não especifica a forma real da marcação de configuração (a não ser como como XML bem formatado). A marcação é definida pelo fornecedor do plug-in que declarou o ponto de extensão. A plataforma não interpreta realmente a marcação da configuração. Passa simplesmente a informação da configuração para o plug-in como parte do processamento de pontos de extensão (no momento em que a lógica de ponto de extensão consulta todas as extensões configuradas).
<!ELEMENT extension ANY> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
O elemento <extension> tem os seguintes atributos:
Importante: o conteúdo do elemento <extension> é declarado utilizando a regra ANY. Isto significa que qualquer XML bem formato pode ser especificado dentro da secção de configuração da extensão (entre os códigos <extension> e </extension>).
Os fragmentos são utilizados para aumentar o âmbito de um plug-in. Um exemplo seria incorporar os dados como as mensagens e os identificadores numa outra linguagem.
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT fragment (extension-point*, extension*)>
Os componentes <extension-point> e <extension> de um fragmento serão adicionados de modo lógico ao plug-in correspondente.
O processamento especial foi adicionado à retrocompatibilidade do suporte para o ExtensionId e o ExtensionPointId que continha pontos (".") nas versões anteriores à 3.2. Dependendo da versão especificada no separador <?eclipse version?>:
Esta regra aplica~se apenas ao ExtensionId e ao ExtensionPointId que contenham caracteres de pontos (".").
Versões mais antigas de manifestos do plug-in podem ser encontradas aqui: