====== 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 . Los conectores se escriben en lenguaje Perl. Todos proceden de un conector básico denominado //BasPlug//, que realiza todas las operaciones necesarias como crear un nuevo documento en el Formato de Archivo Greenstone con que trabajar, asignar un identificador de objeto (OID) y manejar las secciones de un documento. Los conectores se guardan en el directorio //perllib/plugins//. Para saber más sobre un conector cualquiera, escriba //pluginfo.pl nombre-de-conector// en la línea de comandos. (Es preciso que active primero el guión de configuración – //setup// --adecuado, si aún no lo ha hecho, y en Windows ha de teclear //perl  –S pluginfo.pl nombre de conector// si su sistema no está configurado para reconocer los archivos que terminan en //.pl// como ejecutables de Perl). Aparece entonces en la pantalla la información sobre el conector: qué opciones específicas admite y qué opciones generales se autorizan. Puede usted escribir fácilmente nuevos conectores para tratar formatos de documentos que los conectores existentes no manejan, formatear documentos de determinada manera o extraer un nuevo tipo de metadatos. ==== Opciones generales ==== En el Cuadro se muestran las opciones que admite cualquier conector derivado de BasPlug. |< - 132 397 >| | ''input_encoding'' | Codificación de los caracteres utilizados en los documentos de origen. Por defecto Greenstone averigua automáticamente la codificación de cada documento. Sin embargo, algunas veces conviene definir este valor. Por ejemplo, si se sabe con certeza que todos los documentos están en ASCII, el hecho de establecer la codificación de los datos de entrada en //ascii// incrementa considerablemente la velocidad de importación y creación de la colección. Hay muchos valores posibles: teclee //pluginfo.pl BasPlug// para obtener una lista completa. | | ''default_encoding'' | Codificación utilizada si //input_encoding// está en //auto// y falla la detección automática de la codificación. | | ''process_exp'' | Expresión regular en Perl para detectar los nombres de archivo (por ejemplo, para localizar un tipo determinado de extensión de archivo). Esto determina qué archivos debe tratar un conector. Todo conector tiene una extensión por defecto (el valor por defecto de //HTMLPlug// es //(?i).html?//, o sea, cualquier archivo con la extensión //.htm// o //.html//). | | ''block_exp'' | Una expresión regular para detectar los nombres de archivo que no van a pasarse a otros conectores. Esta operación puede evitar la aparición de mensajes de error molestos sobre archivos que no interesan. Algunos conectores tienen expresiones de bloqueo por defecto, por ejemplo, //HTMLPlug// bloquea los archivos con extensiones //.gif//, //.jpg//, //.jpeg//, //.png//, //.rtf// y //.css//. | | ''cover_image'' | Busca un archivo //.jpg// (con el mismo nombre que el archivo en curso de tratamiento) y lo asocia con el documento como imagen de portada. | | ''extract_acronyms'' | Extrae siglas de los documentos y las añade como metadatos a los correspondientes documentos en el Formato de Archivo Greenstone. | | ''markup_acronyms'' | Añade información sobre las siglas al texto del documento. | | ''extract_language'' | Identifica la lengua de cada documento y la asocia como metadato. Obsérvese que esto se hace de forma automática si la opción //input_encoding// está en posición //auto//. | | ''default_language'' | Si falla la extracción automática de la lengua, el metadato de lengua adopta este valor. | | ''first'' | Extrae una lista separada por comas de la primera porción de texto y la incorpora como metadato //FirstNNN// (se utiliza a menudo como sustituto del //Title//). | | ''extract_email'' | Extrae las direcciones electrónicas y las añade como metadatos del documento. | | ''extract_date'' | Extrae las fechas relacionadas con el contenido de documentos históricos y los incluye como metadatos de tipo //Coverage//. | ==== Conectores de tratamiento de documentos ==== |< - 60 72 236 85 76 >| | | | **Objetivo** | **Tipos de archivo** | **Ignora archivos** | | **Generales** | ArcPlug | Trata los archivos mencionados en el archivo //archives.inf//, que se utiliza como vector de comunicación entre los procesos de importación y de creación. Debe incluirse (a menos que no se vaya a utilizar //import.pl//) | //-// | //-// | | | //RecPlug// | Explora recursivamente una estructura de directorios para comprobar si un nombre de archivo corresponde a un directorio y, de ser así, insertar todos los archivos del directorio en la secuencia de los conectores. Asigna metadatos si la opción //–use_metadata_files// está activada y los archivos //metadata.xml// están presentes. | //-// | //-// | | | //GAPlug// | Trata los archivos en el Formato de Archivo Greenstone generados por //import.pl//. Debe incluirse (a menos que no se vaya a utilizar //import.pl//). | //.xml// | //-// | | | //TEXTPlug// | Trata texto sin formato colocándolo 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 . Es preciso utilizar un procedimiento recursivo para recorrer transversalmente jerarquías de directorios. Aunque los programas de importación y creación no efectúan una recursión explícita, algunos conectores provocan una recursión indirecta al introducir nombres de archivos o de directorios en la secuencia de los conectores. Por ejemplo, el modo estándar de recursión a través de una jerarquía de directorio consiste en especificar //RecPlug//, que realiza exactamente esta operación. Si está presente, debería ser el último elemento en la secuencia. Sólo los dos primeros conectores del Cuadro provocan una recursión indirecta. Algunos conectores están escritos para colecciones específicas que tienen un formato de documento que no se encuentra en ninguna otra parte, como el texto electrónico utilizado en la colección Gutenberg. Estos conectores específicos de una colección se encuentran en el directorio //perllib/plugins// de la colección. Los conectores específicos de colección pueden utilizarse para invalidar los conectores generales que llevan el mismo nombre. Algunos conectores de tratamiento de documentos utilizan programas externos que analizan determinados formatos patentados, como por ejemplo Word de Microsoft, y los transforman en texto normal o en HTML. Un conector general denominado //ConvertToPlug// activa el programa de conversión correspondiente y pasa el resultado a //TEXTPlug// o a //HTMLPlug//. Más adelante se explicará más detalladamente esta operación. Algunos conectores disponen de opciones específicas que permiten controlar sus operaciones de manera más precisa que las opciones generales. Véase al respecto el Cuadro . |< - 132 132 265 >| | | **Opción** | **Objetivo** | | HTMLPlug | //nolinks// | No guarda enlaces dentro de la colección. Esto acelera el proceso de importación/creación, pero se pierden todos los enlaces de la colección. | | | //description_tags// | Interpreta los archivos de documentos etiquetados como se explica en la subsección siguiente. | | | //keep_head// | No quita los encabezados HTML. | | | //no_metadata// | No busca ningún metadato (esto puede acelerar el proceso de importación/creación). | | | //metadata_fields// | Toma una lista separada por comas de tipos de metadatos (cuyo valor por defecto es //Title//) que se han de extraer. Para cambiar el nombre de los metadatos en el archivo en el Formato de Archivo Greenstone, utilice //tag//, en que //tag// es la etiqueta HTML buscada y //nuevo_nombre// su nuevo nombre. | | | //hunt_creator_metadata// | Encuentra el mayor número posible de metadatos sobre la autoría del documento y los consigna en el documento en el Formato de Archivo Greenstone como metadatos //Creator//. Se debe incluir también //Creator// mediante la opción //metadata_fields//. | | | //file_is_url// | Utilice esta opción si se ha usado un programa de duplicación o espejo Web para crear la estructura de los documentos por importar. | | | //assoc_files// | Asigna una expresión regular de Perl que define los tipos de archivos que se han de tratar como archivos asociados. Los tipos por defecto son: //.jpg//, //.jpeg//, //.gif//, //.png//, //.css.// | | | //rename_assoc_files// | Cambia el nombre de los archivos asociados con los documentos. Durante este proceso, la estructura de directorio de todo archivo asociado reducirá mucho su volumen (opción útil si se ha de almacenar la colección en un espacio limitado). | | //HTMLPlug// y
//TEXTPlug// | //title_sub// | Expresión de sustitución Perl para modificar los títulos. | | //PSPlug// | //extract_date// | Extrae la fecha de creación del encabezado PostScript y la almacena como metadato. | | | //extract_title// | Extrae el título del documento del encabezado PostScript y lo almacena como metadato de título. | | | //extract_pages// | Extrae los números de página del documento PostScript y los incluye en las secciones adecuadas como metadatos con la etiqueta //Pages//. | | //RecPlug// | //use_metadata_files// | Asigna metadatos desde un archivo, como se explica en la subsección siguiente. | | //ImagePlug// | Diversas opciones | Véase //ImagePlug.pm//. | | //SRCPlug// | //remove_prefix// | Especifica en forma de expresión regular de Perl, un patrón inicial que debe eliminarse del nombre del archivo. El comportamiento por defecto es suprimir toda la ruta. | ==== Conectores de importación de formatos patentados ==== Los formatos patentados plantean serias dificultades para cualquier sistema de biblioteca digital. Aunque se disponga de documentación sobre su funcionamiento, pueden ser modificados sin aviso y resulta difícil mantenerse al tanto de los cambios. Greenstone ha optado por utilizar las aplicaciones de conversión publicadas según los términos de la GPL (Licencia Pública General de GNU) y elaboradas por personas dedicadas a esta tarea. Los instrumentos para convertir formatos Word y PDF se encuentran en el directorio //packages//. Estos convierten los documentos en texto normal o en HTML. Se utilizan posteriormente //HTMLPlug// y //TEXTPlug// para convertirlos en el Formato de Archivo Greenstone. //ConvertToPlug// sirve para incluir los instrumentos de conversión y, al igual que //BasPlug//, nunca se activa directamente, sino que los conectores de tratamiento de formatos específicos derivan o heredan de él, como se ilustra en la Figura . //ConvertToPlug// emplea el sistema de herencia dinámico de Perl para heredar de //TEXTPlug// o de //HTMLPlug//, según el formato en el que se ha convertido el documento de origen. {{..:images:dev_fig_9.png?206x229&direct}} Cuando //ConvertToPlug// recibe un documento, acude a //gsConvert.pl// (que se encuentra en //GSDLHOME/bin/script//) para activar el instrumento de conversión adecuado. Una vez convertido, el documento es devuelto a //ConvertToPlug//, que aplica el conector texto o HTML, según convenga. Todo conector derivado de //ConvertToPlug// dispone de una opción //convert_to// (convertir en), cuyo argumento es //text// o //html//, para especificar el formato intermedio que se prefiere. El formato texto es más rápido, pero HTML suele tener una mejor presentación e incluye imágenes. Existen a veces varios instrumentos de conversión para un formato particular y //gsConvert// puede probar varios de ellos en un documento. Por ejemplo, el instrumento de conversión más común de Word, //wvWare//, sólo funciona con Word 6, y para convertir los documentos Word 5 se utiliza un programa denominado //AnyToHTML//, cuya principal función es extraer todas las cadenas de texto que puede encontrar. Las etapas necesarias para agregar un nuevo programa de conversión de documentos externos son las siguientes: - Instale el nuevo programa de conversión para que sea accesible por Greenstone (colóquelo en el directorio //packages//). - Modifique //gsConvert.pl// para utilizar el nuevo programa de conversión. Esto implica añadir una nueva cláusula a la instrucción //if// de la función //main//, y agregar una función que active el programa de conversión. - Escriba un conector de nivel superior que herede de //ConvertToPlug// para interceptar el formato y luego dejarlo “pasar adelante”. ==== Asignar metadatos desde un archivo ==== El conector estándar //RecPlug// incorpora asimismo la posibilidad de asignar metadatos a los documentos a partir de archivos XML creados manual o automáticamente. Vamos a explicar detalladamente el proceso para que pueda usted crear archivos de metadatos en el formato adecuado. Si se especifica la opción //use_metadata_files//, //RecPlug// utiliza un archivo de metadatos auxiliar llamado //metadata.xml//. En la Figura se muestra la Definición de Tipo de Documento (DTD) XML para el formato de archivo de metadatos, mientras que la figura muestra un ejemplo de archivo //metadata.xml//. ]>                             nugget.*                                       Nugget Point Lighthouse                    Nugget Point                                               nugget-point-1.jpg                                              Nugget Point Lighthouse, The Catlins                           Lighthouse                             El archivo de ejemplo contiene dos estructuras de metadatos. En cada una de ellas, el elemento //filename// describe los archivos a los que se aplican los metadatos en forma de expresión regular. Así pues, nugget.*  indica que el primer registro de metadatos se aplica a todos los archivos cuyo nombre empieza por “ //nugget// ”((Obsérvese que en Greenstone, las expresiones usuales se interpretan en lenguaje Perl, que difiere levemente de otras convenciones. Por ejemplo, “*” corresponde a cero o más apariciones del carácter anterior, mientras que “.” corresponde a cualquier carácter, por lo tanto //nugget.*// corresponde a toda cadena que comienza por el prefijo “nugget”, seguido o no por un punto. Para insistir en la presencia de un punto sería necesario añadir un caracter de escape y escribir en su lugar //nugget\...*//.)). Para estos archivos, el metadato //Title// se aplica a “Nugget Point Lighthouse”. Los elementos de metadatos se tratan en el orden en que aparecen. La segunda estructura establece que el metadato //Title// para el archivo //nugget-point-1.jpg// se aplica a “Nugget Point Lighthouse, The Catlins” e invalida la especificación anterior. Añade asimismo un campo de metadatos //Subject//. Algunas veces los metadatos poseen varios valores y los nuevos valores deben acumularse en vez de invalidar los anteriores. El atributo //mode=accumulate// activa esta opción. Se aplica al metadato //Place// en la primera especificación que, por consiguiente, podrá adoptar múltiples valores. Para volver a un metadato simple, teclee New Zealand //.// De hecho, se podría omitir esta especificación de modo porque todo elemento invalida el anterior, salvo si se indica lo contrario. Para acumular metadatos en un campo particular, se debe especificar //mode=accumulate// en cada aparición. Cuando se activa la opción //use_metadata_files//, //RecPlug// comprueba en cada directorio de entrada la presencia de un archivo XML denominado //metadata.xml// y aplica su contenido a todos los archivos y subdirectorios del directorio. El mecanismo //metadata.xml// incorporado a //RecPlug// es sólo un modo de especificar los metadatos para los documentos. Es fácil escribir diferentes conectores que aceptan especificaciones de metadatos con formatos completamente diferentes. ==== Etiquetado de los archivos de documentos ==== Los documentos de origen necesitan a menudo estructurarse en secciones y subsecciones, y es preciso comunicar esta información a Greenstone a fin de que pueda mantener la estructura jerárquica. Asimismo, se pueden asociar metadatos –en particular el título– con cada sección y subsección. La manera más sencilla de efectuar esta operación suele ser modificando los archivos de origen. El conector HTML dispone de una opción //description_tags// que trata las etiquetas en el texto como sigue: //(el texto de la sección va aquí)// Se utilizan los marcadores %!-- ... --% porque indican comentarios en formato HTML; en consecuencia, estas etiquetas de sección no afectarán al formateo del documento. En la parte //Description// se pueden especificar otros tipos de metadatos, pero esto no ocurre para el estilo de colección que mencionamos aquí. Asimismo, las etiquetas pueden subdividirse, de tal modo que la línea anterior señalada por marcadores //el texto de la sección va aquí// pueda incluir a su vez otras subsecciones, como por ejemplo: //(el texto de la primera parte de la sección va aquí)// //(el texto de la subsección va aquí)// //(el texto de la última parte de la sección va aquí)// Cualquier conector que utilice HTMLPlug hereda esta función. El conector Word, en particular, convierte en formato HTML los datos que recibe y por ello se pueden especificar los metadatos exactamente de la misma manera en los archivos Word (y RTF). (Esto supone un poco de trabajo “entre bastidores”, porque cuando los documentos Word se convierten en HTML, el programa por lo general procura neutralizar la interpretación especial que suele hacer HTML de los signos sueltos “<” y “>”; nos las hemos arreglado para invalidar esto en el caso de las especificaciones antes mencionadas.) Obsérvese que se utiliza exactamente el mismo formato que antes, incluso en los archivos Word, así como los signos de comentarios “%!--” y “--%”. El tipo de letra y el espaciado no se tienen en cuenta. ===== Clasificadores ===== Los clasificadores sirven para crear los índices de consulta de la colección. Valgan como ejemplos el índice //títulos A-Z// de la colección //dlpeople//, así como los índices //tema//, //cómo...//, //organizaciones// y //títulos A-Z// de la Biblioteca sobre Aspectos Humanitarios y de Desarrollo, de la que la colección de demostración es un subconjunto. La barra de desplazamiento que aparece en la parte superior de la pantalla en las Figuras 3 y 8a incluye la función //búsqueda//, que siempre está disponible, seguida de botones correspondientes a todos los clasificadores que se han definido. La información utilizada para facilitar la consulta se encuentra en la base de datos de informaciones de la colección, donde es colocada por los clasificadores activados durante la fase final del programa //buildcol.pl//. {{..:images:dev_fig_11.png?604x245&direct}} Los clasificadores, al igual que los conectores, se especifican en el archivo de configuración de la colección. Todos tienen una línea que empieza por la palabra clave //classify// seguida del nombre del clasificador y las opciones que admite. El archivo básico de configuración de la colección mencionado en la Sección [[#import_and_build_processes|import_and_build_processes]] comprende la línea //classify AZList –metadata Title//, que crea una lista alfabética de títulos reuniendo todos aquéllos que están provistos del campo de metadatos //Title//, y los clasifica y divide por orden alfabético. En la Figura se muestra un ejemplo. {{..:images:dev_fig_12.png?605x280&direct}} Un clasificador más simple, llamado //List//, que se muestra en la Figura , crea una lista clasificada de un elemento de metadato determinado y lo presenta sin ninguna subsección alfabética((Debe darse cuenta de que las versiones más recientes de la colección Demo usan un clasificador de Jerarquía para mostrar el metadato Cómo. En este caso se mostrará ligeramente diferente de cómo aparece en la Figura .)). Un ejemplo es el metadato //cómo// de la colección de demostración, que es generado por la línea //classify List –metadata Howto// en el archivo de configuración de la colección. Otro clasificador general es //DateList//, ilustrado en la Figura , que genera una lista de selección de intervalos de fechas. (El clasificador //DateList// se utiliza también en la colección “Archivos de Greenstone”.) {{..:images:dev_fig_13.png?604x304&direct}} Otros clasificadores generan estructuras de consulta que son explícitamente jerárquicas. Las clasificaciones jerárquicas son útiles para las clasificaciones y subclasificaciones temáticas, así como para las jerarquías relativas a organizaciones. El archivo de configuración de la colección de demostración incluye la línea //classify Hierarchy –hfile sub.txt –metadata Subject –sort Title//, y en la Figura se muestra la jerarquía de temas que esta línea produce. El estante que lleva un título en negrita es el que se está examinando en este momento; encima de él se puede ver la clasificación temática a la que pertenece. En este ejemplo la jerarquía de clasificación se guarda en un formato de texto sencillo que lleva el nombre de //sub.txt//. {{..:images:dev_fig_14.png?605x321&direct}} Todos los clasificadores generan una estructura jerárquica que se utiliza para mostrar un índice de consulta. Normalmente, los niveles inferiores de la jerarquía (esto es, las hojas) son los documentos, pero en algunos clasificadores son las secciones. Los nodos internos de la jerarquía son //Vlist//, //Hlist// o //Datelist//. Una //Vlist// es una lista de elementos dispuestos verticalmente en la página, como el índice “ //cómo...// ” de la colección de demostración (véase la Figura ). Una //Hlist// tiene una presentación horizontal. Por ejemplo, la //AZList// de la Figura es una jerarquía de nodos internos de dos niveles compuesta por una //Hlist// (que da el selector A-Z) cuyos elementos secundarios son nodos //Vlists// ; los documentos son a su vez elementos secundarios de esta última lista. Un nodo //Datelist// (Figura ) es un tipo especial del nodo //Vlist// que permite efectuar selecciones por año y por mes. Las líneas que se utilizan para especificar los clasificadores en los archivos de configuración de colección contienen un argumento //metadata// que identifica los metadatos mediante los cuales se clasifican y seleccionan los documentos. El clasificador omitirá todo documento de la colección para el que no se haya definido este metadato (pero se lo indizará y, por consiguiente, la función búsqueda lo tendrá en cuenta). Si no se especifica un argumento //metadata//, todos los documentos se incluyen en el clasificador, en el orden en que aparecieron durante el proceso de creación. Esto es útil si desea obtener una lista de todos los documentos de su colección. |< - 132 92 305 >| | | **Argumento** | **Finalidad** | | //Hierarchy// | | Clasificación jerárquica | | | //hfile// | Archivo de clasificación | | | //metadata// | Elemento de metadato para cotejar con el identificador //hfile// | | | //sort// | Elemento de metadato utilizado para clasificar los documentos en las hojas (el valor por defecto es //Title//) | | | //buttonname// | Nombre del botón utilizado para acceder a este clasificador (el valor por defecto es el valor del argumento //metadata//) | | List | | Lista alfabética de los documentos | | | //metadata// | Incluye los documentos que contienen este elemento de metadato | | | //buttonname// | Nombre del botón utilizado para acceder a este clasificador (el valor por defecto es el valor del argumento //metadata//) | | //SectionList// | | Lista de las secciones en los documentos | | //AZList// | | Lista de documentos dividida por intervalos alfabéticos | | | //metadata// | Incluye todos los documentos que contienen este elemento de metadato | | | //buttonname// | Nombre del botón utilizado para acceder a este clasificador (el valor por defecto es el valor del argumento //metadata//) | | //AZSectionList// | | Como //AZList// pero incluye cada sección del documento | | //DateList// | | Similar a //AZList// pero ordenada por fechas | La lista de los clasificadores actualmente disponibles aparece en el Cuadro . Al igual que se puede utilizar el programa //pluginfo.pl// para obtener información sobre cualquier conector, el programa //classinfo.pl// le facilita información sobre cualquier clasificador y las opciones que ofrece. Todos los clasificadores aceptan el argumento //buttonname//, que define el contenido del botón de consulta de Greenstone que activa el clasificador (el valor por defecto es el nombre del argumento //metadata//). Existen botones para cada tipo de metadato del sistema Dublin Core y para algunos otros tipos de metadatos. Cada clasificador recibe un nombre implícito con arreglo a su posición en el archivo de configuración. Por ejemplo, el tercer clasificador especificado en el archivo se denomina CL3. Esos nombres se emplean para nombrar los campos de la base de datos de informaciones de la colección que definen la jerarquía de los clasificadores. Se pueden escribir clasificadores específicos para una colección, que se almacenan en el directorio //perllib/classify// de la colección. La Biblioteca sobre Aspectos Humanitarios y de Desarrollo tiene un clasificador específico de colección que se llama //HDLList//, que es una variante menor de //AZList//. ==== Clasificadores de listas ==== A continuación figuran los diversos tipos de clasificadores de listas: * //SectionList// : es como //List// pero las hojas son secciones y no documentos. Se incluyen todas las secciones del documento excepto las del nivel superior. Este clasificador sirve para crear listas de secciones (o de artículos, capítulos, etc.), como en la colección //Computists’ Weekly// (el semanario de los informáticos, disponible en el sitio Web // nzdl.org //), en la que cada número es un solo documento que comprende varios artículos independientes, cada uno en su propia sección. * //AZList// : genera una jerarquía de dos niveles que comprende un nodo //Hlist// cuyos elementos secundarios son nodos //Vlists//, cuyos elementos secundarios, a su vez, son documentos. El nodo //Hlist// es un selector A-Z que divide los documentos en intervalos alfabéticos. * //AZSectionList// : es como AZList pero las hojas son secciones y no documentos. * //DateList// : es como //AZList// excepto que el nodo //Hlist// de nivel superior permite seleccionar por año y sus elementos secundarios son nodos de tipo //DateList// y no de tipo //Vlist//. El valor por defecto del argumento //metadata// es //Date//. ==== El clasificador hierarchy ==== Todos los clasificadores son jerárquicos. Sin embargo, los clasificadores de listas antes mencionados disponen de un número fijo de niveles, mientras que los clasificadores “ //hierarchy// ” (jerárquicos) tratados en esta sección pueden crear una serie arbitraria de niveles y son más complejos de especificar que los clasificadores de listas. 1      1      "General reference" 1.2    1.2    "Dictionaries, glossaries, language courses, terminology 2      2      "Sustainable Development, International cooperation, Pro 2.1    2.1    "Development policy and theory, international cooperatio 2.2    2.2    "Development, national planning, national plans" 2.3    2.3    "Project planning and evaluation (incl. project managem 2.4    2.4    "Regional development and planning incl. regional profil 2.5    2.5    "Nongovernmental organisations (NGOs) in general, self- 2.6    2.6    "Organisations, institutions, United Nations (general, d 2.6.1  2.6.1  "United Nations" 2.6.2  2.6.2  "International organisations" 2.6.3  2.6.3  "Regional organisations" 2.6.5  2.6.5  "European Community - European Union" 2.7    2.7    "Sustainable Development, Development models and example 2.8    2.8    "Basic Human Needs" 2.9    2.9    "Hunger and Poverty Alleviation" 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.