Manifiesto de plug-in de la plataforma Eclipse

Versión 3.2 - Última revisión 9 de mayo de 2006

Las definiciones de códigos XML del manifiesto abajo indicadas utilizan diversos identificadores y símbolos de denominación. Para eliminar la ambigüedad, le presentamos algunas reglas de producción para estos [están relacionadas en el texto presentado más abajo]. En general, todos los identificadores son sensibles a las mayúsculas y minúsculas.

SimpleToken := secuencia 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

El resto de esta sección describe la estructura del archivo plugin.xml como una serie de fragmentos de DTD. El archivo plugin.dtd presenta la definición de DTD en su totalidad.

<?xml encoding="US-ASCII"?>
<?eclipse version="3.2"?>
<!ELEMENT plugin (extension-point*, extension*)>

El elemento <plugin> define el cuerpo del manifiesto. Contiene opcionalmente las declaraciones de cualquier punto de extensión nuevo introducido por el plug-in, así como las extensiones de configuración o funcionales (configuradas en los puntos de extensión definidos por otros plug-ins o introducidas por este plug-in).

La regla de construcción DTD XML DTD element* indica cero o más apariciiones del elemento; element? indica cero apariciones o una aparición del elemento; y element+ (utilizada más abajo) indica una o más apariciones del elemento. En función de la definición de <plugin> anterior, esto significa que será válido, por ejemplo, un plug-in que no contenga declaraciones de punto de extensión o configuración de extensión (por ejemplo, las bibliotecas comunes de las que dependen otros plug-ins). De forma similar, también será válido un plug-in que contenga solo configuraciones de extensión pero ningún punto de extensión propio (por ejemplo, al configurar clases entregadas en otros plug-ins en puntos de extensión declarados en otros plug-ins).

La arquitectura de Eclipse se basa en el concepto de puntos de extensión configurables. La propia plataforma predefine un conjunto de puntos de extensión que cubren la tarea de ampliar la plataforma y el escritorio (por ejemplo, añadiendo acciones de menú, contribuyendo con un editor incorporado). Además de los puntos de extensión predefinidos, cada plug-in suministrado puede declarar puntos de extensión adicionales. Al declarar un punto de extensión, el plug-in está básicamente anunciando la capacidad de configurar la función del plug-in con extensiones suministradas desde el exterior. Por ejemplo, el plug-in de construcción de páginas puede declarar un punto de extensión para añadir nuevos controles de tiempo de diseño (DTC) a su paleta de construcción. Esto significa que el constructor de páginas ha definido una arquitectura para lo que se pretende que sea un DTC, y ha implementado el código que busca las extensiones DTC que se hayan configurado en los puntos de extensión.

<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
  name                CDATA #REQUIRED 
  id                  CDATA #REQUIRED    
  schema              CDATA #IMPLIED 
>

El elemento <extension-point> tiene los siguientes atributos:

Las extensiones actuales se configuran en los puntos de extensión (predefinidos o declarados nuevamente en este plug-in) en la sección <extension>. La información de la configuración se especifica como un XML correctamente construido situado entre los códigos <extension> y </extension>. La plataforma no especifica la forma real de los códigos XML de configuración (aparte de exigir que sea un XML correctamente construido). Los códigos XML están definidos por el suministrador del plug-in que declaró el punto de extensión. La plataforma en realidad no interpreta los códigos XML de configuración. Simplemente pasa la información de configuración al plug-in como parte del proceso de punto de extensión (en el momento que la lógica del punto de extensión consulta todas las extensiones configuradas).

<!ELEMENT extension ANY> 
<!ATTLIST extension 
  point               CDATA #REQUIRED 
  id                  CDATA #IMPLIED 
  name                CDATA #IMPLIED 
>

El elemento <extension> tiene los siguientes atributos:

Importante: el contenido del elemento <extension> se declara utilizando la norma ANY. Esto significa que cualquier XML correctamente construido se puede especificar dentro de la sección de configuración de la extensión (entre los códigos <extension> y </extension>).

Fragmentos

Los fragmentos se utilizan para aumentar el ámbito de un plug-in. Por ejemplo, para incorporar datos como mensajes o etiquetas en otro idioma.

<?xml encoding="US-ASCII"?> 
<?eclipse version="3.2"?>
<!ELEMENT fragment (extension-point*, extension*)>

Los componentes <extension-point> y <extension> de un fragmento se añadirán de manera lógica al plug-in alojador.

Nota acerca de ExtensionId y ExtensionPointId

Se ha añadido un proceso especial para dar soporte a la compatibilidad hacia atrás de ExtensionId y ExtensionPointId, que solían contener puntos ('.') antes de la versión 3.2. Dependiendo de la versión especificada en el código <?eclipse version?>:

Esta norma se aplica sólo a los ExtensionId y ExtensionPointId que contienen caracteres de punto ('.').


Las versiones más antiguas del manifiesto de plug-in pueden encontrarse aquí: