Plataforma Eclipse
Manifiesto de conector

Versión 2.0 - Última revisión, 20 de junio, 2002

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

SimpleToken := secuencia de caracteres desde ('a-z','A-Z','0-9') 
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) 
tJavaClassName := ComposedToken 
PlugInId := ComposedToken
PlugInPrereq := PlugInId | 'export' PlugInId 
ExtensionId := SimpleToken 
ExtensionPointId := SimpleToken 
ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)

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"?> 
<!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)> 
<!ATTLIST plugin 
  name                CDATA #REQUIRED 
  id                  CDATA #REQUIRED 
  version             CDATA #REQUIRED 
  provider-name       CDATA #IMPLIED
  class               CDATA #IMPLIED 
>

El elemento <plugin> define el cuerpo del manifiesto.De forma opcional, contiene las definiciones para el código de tiempo de ejecución del conector, las definiciones de otros conectores necesarios para este, las declaraciones de cualquier punto de extensión nuevo introducido por el conector, así como la configuración de las extensiones funcionales (configuradas en los puntos de extensión definidos por otros conectores, o introducidas por este conector). Los atributos <plugin> son los siguientes:

El elemento* de la norma de construcción de DTD XML indica cero o más apariciones del elemento; el elemento? indica cero o una aparición del elemento; y el elemento+ (utilizado 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 conector que contenga una sola definición de tiempo de ejecución y ninguna declaración de punto de extensión o configuración de extensión (por ejemplo, las bibliotecas comunes de las que dependen otros conectores). De forma similar, también será válido un conector que contenga sólo configuraciones de extensión pero ningún punto de extensión o de tiempo de ejecución propios (por ejemplo, al configurar clases entregadas en otros conectores en puntos de extensión declarados en otros conectores).

La sección <requires> del manifiesto declara las dependencias de otros conectores.

<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
 plugin               CDATA #REQUIRED
 version              CDATA #IMPLIED
 match                (perfect | equivalent | compatible | greaterOrEqual) "compatible"
 export               (true | false) "false"
 optional             (true | false) "false"
>

Cada dependencia se especifica utilizando un elemento <import>. Contiene los siguientes atributos:

La sección <runtime> del manifiesto contiene una definición de una o más bibliotecas que componen el código de tiempo de ejecución del conector. Las bibliotecas a las que se hace referencia son utilizadas por los mecanismos de ejecución de la plataforma (el cargador de clases del conector) para cargar y ejecutar el código correcto requerido por el conector.

<!ELEMENT runtime (library+)> 
<!ELEMENT library (export*)>
<!ATTLIST library 
  name               CDATA #REQUIRED 
  type               (code | resource) "code"
>
<!ELEMENT export EMPTY> 
<!ATTLIST export
  name               CDATA #REQUIRED 
>

El elemento <runtime> no tiene atributos.

Los elementos <library> definen de forma colectiva el código de tiempo de ejecución del conector. Debe especificarse por lo menos un elemento <library>. Cada elemento <library> tiene los siguientes atributos:

Cada elemento <library> puede especificar qué parte de la biblioteca debe exportarse. Las normas de exportación se especifican como un conjunto de máscaras de exportación. Por omisión (no se especifican reglas de exportación), la biblioteca se considera privada. Los elementos <export> tienen los siguientes atributos:

La arquitectura de la plataforma se basa en la noción de puntos de extensión configurables. La plataforma por ella misma 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 al editor insertado). Además de los puntos de extensión predefinidos, cada conector suministrado puede declarar puntos de extensión adicionales. Al declarar un punto de extensión, el conector está básicamente anunciando la capacidad de configurar la función del conector con extensiones suministradas externamente. Por ejemplo, el conector 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ágina ha definido una arquitectura para lo que intenta ser un DTC y ha implementado el código que busca las extensiones DTC que hayan sido configuradas 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 reales se configuran en los puntos de extensión (predefinidos o declarados recientemente en este conector) en la sección <extension>. La información de 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 de configuración (aparte de exigir que sea un XML correctamente construido). Los códigos están definidos por el suministrador del conector que declaró el punto de extensión. En realidad, la plataforma no interpreta los códigos de configuración. Simplemente pasa la información de configuración al conector 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 código 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>).

 
Se utilizan fragmentos para aumentar el ámbito de un conector. Por ejemplo, para
incorporar datos como mensajes o etiquetas en otro idioma. 
 
<?xml encoding="US-ASCII"?> 
<!ELEMENT fragment (requires?, runtime?, extension-point*, extension*)>
<!ATTLIST fragment
  name                CDATA #REQUIRED
  id                  CDATA #REQUIRED
  version             CDATA #REQUIRED
  provider-name       CDATA #IMPLIED
  plugin-id           CDATA #REQUIRED
  plugin-version      CDATA #REQUIRED
  match               (perfect | equivalent | compatible | greaterOrEqual) "compatible"
>
Cada fragmento debe estar asociado con un conector específico.  El conector
asociado se identifica mediante <plugin-id>, <plugin-version> y,
opcionalmente, con <match>.  Tenga en cuenta que, si esta especificación
coincide con más de un conector, se utilizará el conector coincidente con el número de
versión más alto. 
Los componentes <requires>, <runtime>, <extension-point> y <extension> de un fragmento se añadirán de forma lógica al conector coincidente. 

Los atributos de <fragment> son los siguientes:

Copyright IBM Corp. y otros 2000, 2002.