====== EXPLOTACIÓN ÓPTIMA DE SUS DOCUMENTOS ====== Las colecciones pueden personalizarse para que la información que contienen sea accesible de distintas maneras. En este capítulo se explica la manera en que Greenstone extrae la información de los documentos y la presenta al usuario: el tratamiento de los documentos (Sección [[#plugins|plugins]]), las estructuras de clasificación (Sección [[#classifiers|classifiers]]) y las herramientas de la interfaz de usuario (Secciones [[#formatting_greenstone_output|formatting_greenstone_output]] y [[#controlling_the_greenstone_user_interface|controlling_the_greenstone_user_interface]]). ===== Conectores (plugins) ===== Los conectores analizan los documentos importados y extraen los metadatos. El conector HTML, por ejemplo, convierte las páginas HTML en el Formato de Archivo Greenstone y extrae los metadatos que están explícitos en el formato del documento, como los títulos entre etiquetas
(tratándolo como si estuviera previamente formateado). | //.txt, .text// | //-// | | | //HTMLPlug// | Trata el HTML, sustituyendo adecuadamente los hipervínculos. Si el documento al que apunta el hipervínculo no se encuentra en la colección, se inserta una página intermedia que avisa al usuario de que está saliendo de la colección. Extrae los metadatos ya disponibles, como //Title//. | //.htm, .html, .cgi, .php, .asp, .shm, .shtml// | //.gif, .jpeg, .jpg, .png, .css, .rtf// | | | //WordPlug// | Trata los documentos en formato Word de Microsoft, extrae el autor y el título cuando están disponibles y mantiene los diagramas e imágenes en sus lugares adecuados. Las aplicaciones de conversión utilizadas por este conector generan algunas veces HTML mal formateados y, por consiguiente, le recomendamos que proporcione los documentos originales para su visualización cuando cree colecciones de archivos WORD. Sin embargo, el texto que se extrae de los documentos es apropiado a efectos de búsqueda e indización. | //.doc// | //.gif, .jpeg, .jpg, .png, .css, .rtf// | | | //PDFPlug// | Trata documentos PDF y extrae la primera línea del texto como título. El programa //pdftohtml// no logra tratar algunos archivos PDF. Lo que ocurre es que el proceso de conversión lleva un tiempo excesivo y a menudo aparece en pantalla un mensaje de error al respecto. Si esto ocurre, la única solución que podemos proponerle es suprimir de la colección el documento problemático y volverla a importar. | //.pdf// | //.gif, .jpeg, .jpg, .png, .css, .rtf// | | | //PSPlug// | Trata documentos PostScript y opcionalmente extrae los metadatos de fecha, título y número de página. | //.ps// | //.eps// | | | //EMAILPlug// | Trata los mensajes de correo electrónico y reconoce el autor, el asunto, la fecha, etc. Este conector aún no maneja adecuadamente los correos electrónicos codificados con MIME; aunque son legibles, suelen tener un aspecto bastante extraño. | Debe terminar por dígitos o por dígitos seguidos de .Email | //-// | | | //BibTexPlug// | Trata los archivos bibliográficos en formato //BibTeX// | //.bib// | //-// | | | //ReferPlug// | Trata los archivos bibliográficos en formato //refer// | //.bib// | //-// | | | //SRCPlug// | Trata los archivos de código fuente | //Makefile, Readme, .c, .cc, .cpp, .h, .hpp, .pl, .pm, .sh// | //.o, .obj, .a, .so, .dll// | | | //ImagePlug// | Trata los archivos de imágenes para crear una biblioteca de imágenes. Sólo funciona con UNIX. | //.jpeg, .jpg, .gif, .png, .bmp, .xbm, .tif, .tiff// | //-// | | | //SplitPlug// | Como BasPlug y ConvertToPlug, este conector no debe activarse directamente; en cambio, puede ser heredado por conectores que necesiten tratar archivos que contengan varios documentos | //-// | //-// | | | //FOXPlug// | Trata los archivos dbt de FoxBASE | //.dbt, .dbf,// | //-// | | | //ZIPPlug// | Descomprime archivos //gzip//, //bzip//, //zip// y //tar// siempre que se disponga de las herramientas GNU adecuadas | //.gzip, .bzip, .zip, .tar, .gz, .bz, .tgz, .taz// | //-// | | **Específicos de una colección** | //PrePlug// | Trata la salida HTML utilizando PRESCRIPT y divide los documentos en páginas para la colección //Computer Science Tecnical Reports// | //.html, .html.gz// | //-// | | | //GBPlug// | Trata el texto electrónico del Proyecto Gutenberg, que incluye información sobre títulos introducida manualmente. | //.txt.gz, .html, .htm// | //-// | | | //TCCPlug// | Trata los documentos de correo electrónico procedentes de //Computists´ Weekly// (el semanario de los informáticos) | Debe empezar por //tcc o cw// | //-// | Los programas de creación de colección utilizan conectores de tratamiento de documentos para analizar los documentos de origen en función de su formato. En el archivo de configuración de colección se enumeran todos los conectores utilizados durante el proceso de creación. Durante la operación de importación, cada archivo o directorio pasa uno a uno por todos los conectores, siguiendo el orden establecido, hasta que encuentra uno que puede tratarlo; así pues, los primeros conectores de la lista tienen prioridad sobre los últimos. Si ningún conector puede tratar el archivo, aparece un aviso (en error estándar) y el tratamiento pasa al archivo siguiente. (En este caso la opción //block_exp// puede resultar útil a fin de evitar estos mensajes de error para los archivos que pueden estar presentes pero no necesitan tratamiento.) Durante la etapa de creación de la colección se aplica el mismo procedimiento, pero se trata el directorio //archives// en lugar del directorio //import//. Los conectores estándar de Greenstone se enumeran en el Cuadro
]>
El argumento //hfile// da el nombre de un archivo, como el de la Figura , que define la jerarquía de metadatos. Cada línea describe una clasificación y las descripciones constan de tres partes:
* Un identificador, que hace corresponder el valor del metadato (proporcionado por el argumento //metadata//) con la clasificación.
* Un marcador de posición en la jerarquía, con forma numérica en varias partes, por ejemplo, 2, 2.12, 2.12.6.
* El nombre de la clasificación. (Si contiene espacios, deberá ponerse entre comillas)
La Figura forma parte del archivo //sub.txt// utilizado para crear la jerarquía temática en la Biblioteca sobre Aspectos Humanitarios y de Desarrollo (y en la colección de demostración). Este ejemplo es un poco confuso porque el número que representa la jerarquía aparece dos veces en cada línea. El tipo de metadato //Hierarchy// se representa en los documentos con valores que adoptan una forma numérica jerárquica, lo que corresponde a su primera aparición. La segunda aparición se utiliza para determinar la jerarquía que se aplica en el navegador.
El clasificador //hierarchy// tiene un argumento opcional, //sort//, que determina el modo en que se ordenan los documentos en las hojas. Se puede especificar cualquier metadato como criterio de ordenación. La lista se crea por defecto siguiendo el orden en que se encuentran los documentos durante el proceso de creación. El orden de los nodos internos viene determinado por el orden en que se especifican los elementos en el argumento //hfile//.
==== Funcionamiento de los clasificadores ====
Los clasificadores son objetos Perl, derivados de //BasClas.pm//, y se almacenan en el directorio //perllib/classify//. Se utilizan durante la creación de la colección. Su ejecución se hace en cuatro etapas:
- El método //new// crea el objeto Clasificador.
- El método //init// inicializa el objeto con parámetros como el tipo de metadato, el nombre del botón y el criterio de clasificación.
- El método //classify// interviene una vez para cada documento, y guarda la información sobre la clasificación efectuada dentro del objeto de clasificador.
- El método //get_classify_info// transmite la información de la clasificación localmente almacenada hacia el proceso de creación, que entonces la incluye en la base de datos de informaciones de la colección para su uso cuando la colección se visualiza en el momento de la ejecución.
El método //classify// recupera el OID de cada documento, el valor de metadato con el que se va a clasificar el documento y, si es necesario, el valor de metadato con el que se van a ordenar los documentos. El método //get_classify_info// efectúa todas las funciones de ordenación y clasificación específicas del clasificador. Por ejemplo, en el caso del clasificador //AZList// divide la lista en intervalos alfabéticos.
El proceso de creación de la colección activa los clasificadores en cuanto se crea el objeto //builder//. Las clasificaciones se realizan durante la fase de creación, cuando se crea la base de datos de informaciones mediante //classify.pm//, que se encuentra en el directorio //perllib// de Greenstone.
|< - 132 397 >|
| //[Text]// | El texto del documento |
| //[link]...[/link]// | El HTML que debe enlazarse al propio documento |
| //[icon]// | Un icono apropiado (por ejemplo, el pequeño icono de texto en una cadena //Resultados de la búsqueda//) |
| //[num]// | El número del documento (útil para depurar) |
| //[metadata-name]// | El valor de este elemento de metadato para el documento, por ejemplo, //[Title]// |
===== Formateo de la salida de Greenstone =====
Las páginas Web que usted ve cuando utiliza Greenstone no han sido almacenadas previamente sino que son generadas “al instante” a medida que se las necesita. La apariencia de numerosos aspectos de las páginas se controla a través de las “cadenas de formato”. Las cadenas de formato se encuentran en el archivo de configuración de la colección y se introducen con la palabra clave //format// seguida del nombre del elemento al que se aplica el formato. Las cadenas de formato controlan dos tipos diferentes de elementos de página. El primero comprende los elementos de la página que muestran documentos o partes de documentos. El segundo incluye las listas generadas por los clasificadores y las búsquedas. Todas las cadenas de formato se interpretan en el momento en que se visualizan las páginas. Es rápido y sencillo experimentar con las cadenas de formato ya que surten efecto en cuanto se guarda cualquier modificación en el archivo //collect.cfg//.
En el Cuadro se muestran las instrucciones de formato que afectan la apariencia de los documentos. La opción //DocumentButtons// controla los botones que aparecen en una página de documento. En este caso, //cadena// es una lista de botones (separados por |) y sus valores posibles son //Detach// (separar), //Highlight// (resaltar), //Expand Text// (texto completo) y //Expand contents// (expandir índice). La modificación del orden de la lista modifica en consecuencia el orden de los botones.
|< - 246 283 >|
| //format DocumentImages true/false// | Si el valor es //true//, muestra una imagen de portada en la parte superior izquierda de la página del documento (el valor por defecto es //false//). |
| //format DocumentHeading cadena_de_formato// | Si el valor de //DocumentImages// es //false//, la cadena de formato controla la apariencia del encabezado del documento que aparece en la parte superior izquierda de la página del documento (el valor por defecto es //[Title]//). |
| //format DocumentContents true/false// | Muestra el índice (si el documento tiene una estructura jerárquica), o flechas para ir a la sección siguiente/anterior y el texto “página k de n” (en caso contrario). |
| //format DocumentButtons cadena// | Controla los botones que figuran en una página de documento (el valor por defecto es //Separar/Resaltar//). |
| //format DocumentText cadena_de_formato// | Formato de texto que se muestra en una página de documento. El valor por defecto es: \\ '''' \\ \\ ''[Text] '' \\ \\ ''
'' \\ |
| //format DocumentArrowsBottom true/false// | Muestra las flechas para ir a la sección siguiente/anterior en la parte inferior de la página del documento (el valor por defecto es //true//). |
| //format DocumentUseHTML true/false// | Si el valor es //true//, cada documento aparece en un marco separado. La página de //Preferencias// cambia también ligeramente, ya que propone opciones aplicables a una colección de documentos HTML, como la posibilidad de acudir directamente al documento original (en cualquier sitio de la Web) en lugar de ir a la copia efectuada por Greenstone. |
==== Formateo de las listas de Greenstone ====
Las cadenas de formato que controlan la apariencia de las listas pueden aplicarse a distintos niveles de la estructura de presentación. Pueden modificar todas las listas de determinado tipo dentro de una colección (por ejemplo, //DateList//) o todas las partes de una lista (por ejemplo, todas las entradas de la lista //Search// (búsqueda)) o determinadas partes de una lista particular (por ejemplo, la porción vertical de la lista de un clasificador //AZList// aplicado a títulos).
Después de la palabra clave //format// hay otra palabra clave en dos partes, de las que sólo una es obligatoria. La primera parte identifica la lista a la que se aplica el formato. La lista que se obtiene mediante una búsqueda se llama //Search// (búsqueda), mientras que las listas generadas por clasificadores se denominan //CL1, CL2, CL3//, etc., para el primer, segundo, tercer, etc., clasificador especificado en el archivo //collect.cfg//. La segunda parte de la palabra clave se refiere a la porción de la lista a la que se aplica el formateo, esto es, //Hlist// (para una lista horizontal, como el selector A-Z en un nodo //AZList//), //Vlist// (para una lista vertical, como la lista de títulos en un nodo //AZList//) o //DateList//. Por ejemplo:
> //format CL4Vlist ...// se aplica a todos los VLists de CL4
> //format CL2Hlist ...// se aplica a todos los HListsde CL2
> //format CL1DateList ...// se aplica a todos los DateListsde CL1
> //format SearchVList ...// se aplica a la lista de resultados de búsqueda
> //format CL3 ...// se aplica a todos los nodos de CL3, a menos que se especifique lo contrario
> //format Vlist ...// se aplica a todos los Vlistsde todos los clasificadores, a menos que se especifique lo contrario
En los ejemplos de la figura 16, las comillas (“...”) representan las especificaciones de formato HTML que controlan la información y su presentación, tal como aparecen en las páginas Web que muestran el clasificador. Al igual que las especificaciones HTML, cualquier metadato puede aparecer entre corchetes: su valor se interpola en el lugar indicado. Asimismo, cualquiera de los elementos del Cuadro puede aparecer en las cadenas de formato. La sintaxis de las cadenas incluye también una instrucción condicional que se ilustra en un ejemplo más adelante.
Recuerde que todos los clasificadores producen jerarquías. Cada nivel de la jerarquía se visualiza en una de cuatro formas posibles. Ya hemos visto //Hlist//, //Vlist// y //DateList//. Existe además //Invisible//, que es el modo en que se visualizan los niveles superiores de las jerarquías: en efecto, el nombre del clasificador aparece ya separadamente en la barra de desplazamiento de Greenstone.
==== Ejemplos de clasificadores y cadenas de formato ====
classify Hierarchy –hfile sub.txt –metadata Subject –sort Title
classify AZList -metadata Title
classify Hierarchy -hfile org.txt –metadata Organisation –sort Title
classify List -metadata Howto
format SearchVList “ [link][icon][/link] {If}
{[parent (All’: ’):Title], [parent (All’:’):Title]:}
[link][Title][/link] ”
format CL4Vlist “
[link][Howto][/link]”
format DocumentImages true
format DocumentText “ [Title]
\\n\\n[Text]”
format DocumentButtons “Expand Text|Expand contents|Detach|Highlight”
En la Figura se muestra una parte del archivo de configuración de la colección de demostración. La utilizamos como ejemplo porque comprende varios clasificadores con un formato muy elaborado. Obsérvese que las instrucciones de los archivos de configuración no deben contener caracteres de nueva línea; en el Cuadro, hemos cortado las líneas más largas para facilitar su legibilidad.
La línea 4 especifica el clasificador //How To// (cómo...) de la colección de demostración. Es la cuarta en el archivo de configuración de la colección y, por consiguiente, se denomina CL4. La instrucción de formato correspondiente es la línea 7 de la Figura . La información “cómo” se genera a partir del clasificador //List// y su estructura es la lista completa de títulos que aparecen en la Figura . Los títulos tienen un enlace con los propios documentos: cuando se hace clic en un título se abre el documento correspondiente. Los elementos secundarios del primer nivel de la jerarquía se visualizan como //Vlist// (lista vertical), es decir, las secciones se muestran verticalmente. Como indica la instrucción //format// asociada, cada elemento de la lista está en una nueva línea (“
”) y contiene el texto del metadato //Howto//, vinculado por hipervínculo al documento en cuestión.
La línea 1 especifica la clasificación //Subject// (tema) de la colección de demostración, denominada CL1 (la primera en el archivo de configuración); la línea 3 especifica la clasificación //Organisation// y se denomina CL3. Ambas son generadas por el clasificador //Hierarchy// y, por consiguiente, comprenden una estructura jerárquica de objetos //VList//.
La línea 2 especifica el resto de la clasificación de la colección de demostración, //Títulos A-Z// (CL2). Obsérvese que no existen cadenas de formato asociadas a los clasificadores CL1 a CL3. Greenstone dispone de valores por defecto para cada tipo de cadena de formato y por lo tanto no es necesario configurar una cadena de formato a menos que se desee invalidar el valor por defecto.
{{..:images:dev_fig_17.png?604x329&direct}}
Estas explicaciones corresponden a las cuatro líneas //classify// de la Figura . Hay también cuatro líneas //format//. Ya hemos explicado la línea //CL4Vlist//. Las otras tres pertenecen al primer tipo de cadena de formato, ilustrado en el Cuadro . La línea 8, por ejemplo, coloca la imagen de portada en la parte superior izquierda de cada página del documento. La línea 9 formatea el texto del documento propiamente dicho, y coloca el título del capítulo o sección correspondiente justo ante del texto. Todos estos efectos se ilustran en la Figura .
{{..:images:dev_fig_18.png?604x291&direct}}
La línea 5 de la Figura es una especificación algo complicada que formatea la lista de resultados generada por una búsqueda, cuyas porciones se muestran en la Figura . Presentamos a continuación, una versión simplificada de la cadena de formato:
[link][icon][/link]
[link][Title][/link]
Está diseñada para aparecer como una línea en un cuadro, que es como se formatea la lista de resultados de una consulta. Va acompañada, como de costumbre, por un pequeño icono vinculado al texto, y por el título del documento que establece un hipervínculo con el documento en cuestión.
En esta colección, los documentos son jerárquicos. De hecho, el hipervínculo anterior remite al título de la sección obtenido por la consulta. Sin embargo, sería preferible que incluyese también el título de la sección que la contiene, del capítulo que contiene esta última y del libro en el que se encuentra. Existe un elemento de metadato especial, //parent//, que no se guarda en los documentos pero que está implícito en cualquier documento jerárquico y que genera este tipo de lista. Éste remite al documento principal, o si se utiliza con el calificador //All//, remite a la lista de documentos principales emparentados jerárquicamente, separada por una cadena de caracteres que se pueden precisar tras el calificador //All//. Así pues,
[link][icon][/link]
{[parent(All´: ´):Title]: }[link][Title][/link]
produce una lista que contiene el título del libro, el título del capítulo, etc. que encierra la sección buscada, separados por dos puntos, y más adelante por otro carácter de dos puntos seguido de un hipervínculo con el título de la sección buscada.
Lamentablemente, si el objetivo buscado es un libro, no hay documento emparentado y, por lo tanto, aparecerá una cadena vacía seguida de dos puntos. Para evitar tales problemas puede usted utilizar en una cadena de formato las instrucciones condicionales //if// y //or// ... //else// :
{If} {[metadato],acción-si-no-vacio, acción-si-vacio}
{Or} {acción,else otra-acción, else otra-acción, etc}
En cualquiera de los casos, se utilizan las llaves para señalar que las instrucciones deben interpretarse y no sólo considerarse como texto. La instrucción //if// comprueba si el metadato está vacío y elige la primera opción si no es así; de lo contrario pasa a la segunda (si es que existe). Se puede utilizar cualquier elemento de metadato, incluso el metadato especial //parent//. La instrucción //Or// evalúa todas las acciones por turno hasta que encuentra una que no esté vacía. La envía entonces a la lista de resultados e ignora el resto de la línea.
Volviendo a la línea 5 de la Figura , la cadena de formato completa es:
[link][icon][/link]
{If}{[parent (All´: ´):Title],
[parent (All´: ´):Title]:}
[link][Title][/link]
De este modo la especificación //parent// va precedida de un condicional que comprueba si el resultado está vacío y sólo muestra la cadena completa ( //parent//) cuando está presente. Algunas veces, //parent// puede ser calificado por //Top// en vez de //All//, lo cual da el nombre del documento de nivel superior que encierra una sección: en este caso, el nombre del libro. Con //Top// no es necesaria una cadena de separación.
Para concluir, presentamos algunos ejemplos que ilustran otras funciones. En la Figura , //DateList// se utiliza en la clasificación //Fechas// de la colección //Computists’ Weekly// (el semanario de los informáticos) y resulta ser el segundo clasificador, esto es, CL2. El clasificador y las especificaciones de formato se muestran más adelante. El clasificador //DateList// difiere de //AZList// en que siempre clasifica por metadatos //Date// y en que las ramas inferiores de la jerarquía de consulta utilizan //DateList// en vez de //Vlist//, con lo que se agrega el año y el mes a la izquierda de las listas de documentos.
classify AZSectionList metadata=Creator
format CL2Vlist “[link][icon][/link]
[Creator]
[Title]
[parent(Top):Date] ”
La especificación de formato muestra esos //Vlists// de manera apropiada.
El mecanismo de cadena de formato es flexible pero difícil de aprender. La mejor manera de proceder es estudiando los archivos de configuración de colecciones existentes.
==== Enlaces con diferentes versiones de documentos ====
El mecanismo //[link] ... [/link]// en una cadena de formato, se crea un enlace con el formato HTML del documento, donde el hipervínculo es el título del documento: cuando se hace clic en el enlace se abre la versión HTML del documento. En algunas colecciones es útil poder visualizar otras versiones del documento. En una colección de documentos con formato Word de Microsoft, por ejemplo, es bueno poder abrir una versión Word de cada documento en lugar de la HTML que se ha extraído de ella; lo mismo ocurre con los documentos PDF.
Para poder mostrar diferentes versiones de un documento, la solución es incorporar la información necesaria (es decir, dónde se encuentran las demás versiones) al formato de archivo de Greenstone del documento. Esta información se representa en forma de metadatos. Recuerde que al colocar:
[link][Title][/link]
en una cadena de formato, se crea un enlace con el formato HTML del documento, donde el hipervínculo es el título del documento. Tanto los conectores de Word como los de PDF generan metadatos //srclink//, de modo que si se introduce:
[srclink][Title][/srclink]
en una cadena de formato, se crea un enlace con la versión Word o PDF del documento, donde el hipervínculo es también en este caso el título del documento. A fin de que aparezcan los iconos correspondientes a los documentos Word y PDF, estos conectores generan también metadatos //srcicon// de tal forma que:
[srclink][srcicon][/srclink]
crea un enlace etiquetado por el icono estándar de Word o PDF (según el caso) y no por el título del documento.
===== Control de la interfaz de usuario de Greenstone =====
El conjunto de la interfaz de usuario de Greenstone se controla mediante macros que se encuentran listados en el directorio //GSDLHOME/macros //. Estas macros están escritas en un lenguaje especialmente concebido para Greenstone y se utilizan en el momento de la ejecución para generar páginas Web. La traducción del lenguaje macro al formato HTML es la última etapa para mostrar una página. Así pues, las modificaciones de un archivo de macros afectan inmediatamente la presentación en pantalla y permiten experimentar rápida y fácilmente. Todos los archivos de macros que utiliza Greenstone se encuentran en //GSDLHOME/etc/main.cfg// y se cargan cada vez que se arranca el programa. La única excepción es cuando se utiliza la Biblioteca Local de Windows: en este caso es necesario reiniciar el proceso.
Las páginas Web se generan al instante por numerosas razones y el sistema de macros le permite a Greenstone funcionar con la flexibilidad necesaria. Las páginas pueden presentarse en diversos idiomas y existe un archivo de macros diferente para almacenar todo el texto de la interfaz en cada lengua. Cuando Greenstone presenta una página, el intérprete de macros comprueba la variable de idioma y carga la página en la lengua apropiada (aunque no llega a traducir el contenido del documento). Además, los valores de determinadas variables de visualización, como el número de documentos encontrados en una búsqueda, no se conocen de antemano, sino que se interpolan en el texto de la página mediante macros.
==== El formato de los archivos de macros ====
Los archivos de macros tienen la extensión //.dm//. Cada archivo define uno o más //paquetes// ( //packages//), cada uno de los cuales contiene una serie de macros utilizadas con un fin preciso y único. Al igual que los clasificadores y los conectores, hay una base a partir de la cual se elaboran las macros, que se llama //base.dm// ; este archivo define el contenido básico de una página.
Los nombres de las macros empiezan y terminan con una rayita de subrayado y su contenido se define mediante llaves. El contenido puede ser texto llano, HTML (incluidos los enlaces con pequeños programas ( //applets//) de Java y JavaScript), nombres de macros o cualquier combinación de estos elementos. La siguiente macro procedente de //base.dm// define el contenido de una página en ausencia de cualquier otra macro que la invalide:
_content_ {Oops
_textdefaultcontent_}
En la parte superior de la página aparecerá el mensaje “Oops”, seguido de la macro _textdefaultcontent_, que en inglés equivale a The requested page could not be found. Please use your browsers ‘back’ button or the above home button to return to the Greenstone Digital Library, y en otros idiomas aparecerá la correspondiente traducción de esta frase. En español, por ejemplo, se podrá leer: No se pudo encontrar la página solicitada. Pulse el botón “Atrás” o el botón de “Página principal” para volver a la Biblioteca Digital Greenstone.
Las macros //_textdefaultcontent_// (contenido del texto por defecto) y //_content_// (contenido) se encuentran en el paquete //global// porque son necesarias para todas las partes de la interfaz de usuario. Las macros pueden utilizar como contenido macros de otros paquetes, mas para ello deben anteponer sus nombres y el de su paquete. Por ejemplo, la macro:
_collectionextra_ {Esta colección contiene_about:numdocs_documentos. Se constituyó por última vez hace _about:builddate_ días.}
procede del archivo //english.dm// y se utiliza como descripción por defecto de una colección. Forma parte del paquete //global//, pero //_numdocs_// y _ //builddate// _ pertenecen ambas al paquete //about//, por ello //about:// precede sus nombres.
Las macros suelen contener instrucciones condicionales que se parecen a las cadenas de formato condicionales antes mencionadas, aunque su apariencia difiere un poco. El formato básico es _ //If// _ //(x,y,z)//, en que //x// es una condición, //y// es el contenido de la macro que se debe utilizar si esta condición se cumple, y //z// el contenido que se debe utilizar en caso contrario. Los operadores de comparación son los mismos que los operadores simples utilizados en Perl (menor que, mayor que, igual a, diferente de). El siguiente ejemplo procedente del archivo //base.dm// se utiliza para determinar cómo visualizar la parte superior de la página //acerca de// de una colección:
_imagecollection_ {
_If_("_iconcollection_" ne "",
,
_imagecollectionv_)
}
Esto puede parecer un poco críptico. La macro //_iconcollection// _ desemboca en la cadena vacía si la colección carece de icono, o en el nombre del archivo de una imagen. Haciendo la paráfrasis del código antes mencionado: si existe una imagen de colección, presentar el encabezado de página //acerca de esta colección// (al que se remite mediante //_httppageabout_//) y luego esa imagen; de otro modo, utilizar la presentación alternativa //_imagecollectionv_//.
Las macros pueden incluir argumentos. Hay aquí una segunda definición de la macro //_imagecollection_// que sigue inmediatamente la definición antes indicada en el archivo //base.dm//:
_imagecollection_[v=1]{_imagecollectionv_}
El argumento //[v=1]// especifica que la segunda definición se utiliza cuando Greenstone se ejecuta en modo “sólo texto”. Las macros de idiomas funcionan de la misma manera: todas especifican su lengua como argumento, salvo //english.dm// porque es el idioma por defecto. Por ejemplo:
_textimagehome_ {Home Page}
aparece en el archivo de macro de lengua inglesa, mientras que la versión alemana es:
_textimagehome_ [l=de] {Hauptaseite}
Las versiones inglesa y alemana se encuentran en el mismo paquete, aunque en archivos diferentes (las definiciones de paquetes pueden ocupar más de un archivo). Greenstone utiliza su argumento //l// en el momento de la ejecución para determinar qué idioma se debe visualizar.
package about
############################################
# about page content
############################################
_pagetitle_ {_collectionname_}
_content_ {
_navigationbar_
_query:queryform_
_iconblankbar_
_textabout_
_textsubcollections_
_help:textsimplehelpheading_
_help:simplehelp_
}
_textabout_ {
_textabcol_
_Global:collectionextra_
}
Por último, en la Figura se muestra un extracto del archivo de macros //about.dm// que se utiliza para configurar la página //acerca de// de cada colección. Este ejemplo muestra la definición de tres macros: //_pagetitle_//, //_content_// y //_textabout_//.
==== Utilización de las macros ====
Las macros son instrumentos de alta potencia que pueden parecer un poco complicados y crípticos. Sin embargo, con unos buenos conocimientos de HTML y un poco de práctica pueden convertirse en una manera rápida y fácil de personalizar su sitio Greenstone.
Supongamos, por ejemplo, que usted quería crear una página estática parecida a su sitio Greenstone actual. Puede usted crear un nuevo paquete, que se llamará //static// por ejemplo, en un nuevo archivo, e invalidar la macro _ //content_//. Agregue el nuevo nombre de archivo a la lista de macros situadas en //GSDLHOME/etc/main.cfg// que Greenstone carga cada vez que arranca. Por último, acceda a la nueva página utilizando su URL Greenstone normal y añada los argumentos //?a=p&p=static// (por ejemplo: //http:%%//%%servidor/cgi-bin/library?a=p&p=static//).
Para cambiar el “aspecto y estilo” de Greenstone puede modificar los paquetes //base// y //style (estilo)//. Para cambiar la página principal de Greenstone, modifique el paquete //home// (como se explica en la //Guía de Instalación de la Biblioteca Digital Greenstone//). Para cambiar la página de búsqueda, modifique //query.dm//.
Experimente sin miedo con las macros. Las modificaciones aparecen instantáneamente porque las macros se interpretan a medida que se visualizan las páginas. El lenguaje de macros es un instrumento útil que puede servirle para personalizar a su gusto el sitio Greenstone.
===== El directorio packages =====
|< - 132 217 180 >|
| | **Paquete** | **URL** |
| mg | MG, abreviación inglesa de “Managing Gigabytes” (gestión de gigabytes). Programa de compresión, indización y búsqueda que se utiliza para administrar la información textual en las colecciones Greenstone. | // www.citri.edu.au/mg // |
| //wget// | Programa de duplicación de Web (espejo) utilizado por Greenstone. Escrito en C++. | // www.tuwien.ac.at/~prikryl/ wget.html // |
| //w3mir// | Programa de duplicación de Web escrito en Perl. Este no es el programa de duplicación preferido por Greenstone porque se basa en una versión obsoleta de un módulo Perl (que se distribuye en el directorio //w3mir//). | // www.math.uio.no/~janl/w3mir // |
| //windows// | Paquetes que se utilizan cuando se funciona con Windows. | //-// |
| //windows/gdbm// | Versión del administrador de base de datos de GNU creada para Windows. GDBM viene con las versiones estándar de Linux. | //-// |
| //windows/crypt// | Programa de codificación utilizado para las contraseñas en las funciones administrativas de Greenstone. | //-// |
| //windows/stlport// | Biblioteca Estándar de Plantillas que se utiliza para compilar Greenstone con determinados compiladores de Windows. | //-// |
| //wv// | Convertidor del formato Word de Microsoft (para crear colecciones a partir de documentos Word), aligerado para Greenstone. | //sourceforge.net/projects/wvware// |
| //pdftohtml// | Convertidor del formato PDF que se utiliza para crear colecciones a partir de documentos PDF. | // www.ra.informatik.uni-stuttgart.de/ ~gosho/pdftohtml // |
| //yaz// | Programa cliente Z39.50 que se utiliza para lograr la compatibilidad de Greenstone con el protocolo Z39.50. El archivo //README.gsdl//. informa de los progresos al respecto. | // www.indexdata.dk // |
El directorio //packages// (paquetes), cuyo contenido se muestra en el Cuadro , es donde se guardan todos los códigos utilizados por Greenstone pero elaborados por otros equipos de investigadores. Todos los programas informáticos distribuidos con Greenstone cumplen los requisitos de la Licencia Pública General de GNU. Los ejecutables producidos por esos paquetes se colocan en el directorio //bin// de Greenstone. Cada paquete se guarda en su propio directorio. Sus funciones varían considerablemente, desde indizar y comprimir hasta convertir documentos de Word de Microsoft en el formato HTML. Cada paquete tiene un archivo README (LÉAME) que proporciona informaciones complementarias sobre el mismo.