El editor de esquemas de punto de extensión se puede abrir de dos formas: como producto secundario obtenido al crear un punto de extensión nuevo o abriendo un esquema de punto de extensión existente.Por convenio, los esquemas nuevos tienen un nombre formado por el ID del punto de extensión y la extensión de archivo .exsd.Se colocan en el directorio schema del árbol de directorios del conector.
Cuando se crea un punto de extensión nuevo en el PDE, también se creará el archivo de esquema inicial y se abrirá el editor de esquemas para editarlo. Puede elegir entre definir el esquema en ese momento o cerrar el editor y definirlo más adelante. Si se elabora un esquema completo del punto de extensión, el PDE podrá ofrecer ayuda automatizada a los usuarios del punto de extensión.
El editor de esquemas del PDE se basa en los mismos conceptos que el editor de manifiestos de conectores.Tiene dos páginas de formulario y una página del fuente.Puesto que el esquema XML es verboso y puede ser difícil de leer en su formato fuente, deberá utilizar las páginas de formulario para la mayoría de las tareas de edición.La página del fuente resulta de utilidad para leer el código fuente resultante.
Anteriormente hemos creado el punto de extensión "Analizadores de ejemplo" y el esquema inicial. Ahora podemos abrir el esquema yendo a la carpeta schema del proyecto y pulsando dos veces el archivo parsers.exsd.Así se abrirá el editor de esquemas.
Lo que queremos hacer es:
Cada esquema de punto de extensión empieza por una declaración del elemento "extension".Añadiremos un elemento XML nuevo llamado "parser".
En este momento, el editor de esquemas debe parecerse al de esta figura:
Ahora añadiremos un atributo adicional que toma valores a partir de una lista discreta de opciones.Esto significa que necesitaremos crear una restricción de enumeración del tipo string base.Además, estableceremos un valor por omisión para el atributo.
El diálogo debe tener este aspecto:
Cuando se cierre el diálogo, cambie el atributo "use" por "default" y el atributo "value" por "always". Así se establece el valor por omisión.Observe que, mientras teclea el valor, la línea de estado muestra un mensaje de error, porque existe la restricción de que los valores válidos solo sean las tres opciones de enumeración.Cuando haya acabado de teclear el valor, el mensaje de error debe desaparecer porque "always" es uno de los valores válidos.
Ahora que ya hemos definido todos los elementos y atributos, tendremos que definir una gramática. Nuestro objetivo es definir que el elemento "extension" pueda tener cualquier número de elementos "parser" a modo de hijos.
Después de definir la gramática, el enfoque de DTD, más abajo de la sección de gramática, muestra a qué se parecería la gramática del elemento seleccionado en la DTD. Esta información se da para ayudar a los desarrolladores que siguen sintiéndose más cómodos con las DTD que con los esquemas XML.
Ahora que ya hemos definido elementos, atributos y una gramática válidos, necesitamos proporcionar alguna información sobre el punto de extensión. Hay dos tipos de fragmentos de código de la documentación de esquema:
El primer tipo de fragmento de código se proporciona en la página Definición del manifiesto del esquema. A medida que vaya seleccionando elementos y atributos, podrá ir añadiendo textos cortos acerca de ellos en la sección "Descripción". El formato previsto es HTML sin procesar (como con Javadoc) y el texto se copiará tal cual en el documento de consulta final.
Ahora tenemos que proporcionar una descripción corta del propio punto de extensión. Para ello, pasaremos a la página Documentación:
Este punto de extensión sirve para conectar analizadores
adicionales. En realidad, los analizadores no funcionan: se han utilizando simplemente como
ejemplo de esquema de puntos de extensión.
El siguiente es un ejemplo de utilización del punto de extensión:
<p>
<pre>
<extension point="com.example.xyz.parsers">
<parser
id="com.example.xyz.parser1"
name="Analizador de ejemplo 1"
class="com.example.xyz.SampleParser1">
</parser>
</extension>
</pre>
</p>
Pulse Aplicar.
Los conectores que pretendan ampliar este punto de extensión deben implementar la interfaz
<samp>com.example.xyz.IParser</samp>.
El conector XYZ proporciona la implementación por omisión del analizador.
Pulse Aplicar.Nota: deben tenerse en cuenta consideraciones especiales a la hora de proporcionar ejemplos. Por lo general, el PDE tratará el texto proporcionado como HTML sin procesar y no respetará los caracteres de nueva línea ni los espacios en blanco formados por más de un carácter (es decir, espacios en blanco que pueden despreciarse). Esto es lo que cabe esperar en lo que se refiere al texto normal, pero es extraordinariamente molesto cuando se proporcionan ejemplos en los que las tabulaciones y la alineación vertical son significativas para que el ejemplo tenga buen aspecto. El PDE tiene una solución de compromiso para esta situación: si detecta el código HTML <pre>, tomará el contenido tal cual (conservando todos los caracteres sin realizar ninguna modificación) hasta encontrarse con el código de cierre </pre>. Esta es la razón por la que podemos proporcionar un ejemplo como el anterior y confiar en que el documento de consulta final tendrá buen aspecto.
Quizás ya haya observado que, a medida que escribe la documentación, cada vez es mayor el número de elementos que quedan recubiertos con la imagen de un "lápiz" en la vista Esquema del editor. Este pequeño indicador quiere decir que el elemento en cuestión tiene texto asociado (una forma rápida de comprobar si a la documentación le falta algo en algún lugar del documento).
Una vez acabada la documentación, podemos echar una ojeada a los documentos de consulta. Puede hacerlo de dos formas. Mientras trabaja, en todo momento puede obtener una vista previa del documento de consulta si selecciona el elemento Vista previa del documento de consulta, en el menú emergente. Otra posibilidad es configurar las preferencias del PDE (Preferencias>Desarrollo de conectores>Compiladores, en la pestaña Esquema) para crear automáticamente documentación de consulta cada vez que se produzca un cambio en el archivo de esquema. Sea cual sea el procedimiento que siga para crearlo, el documento resultante de este ejemplo tendría este aspecto.