Documentos de Académico
Documentos de Profesional
Documentos de Cultura
0
WWWIsis XML IsisScript Server
Definicin
El WWWISIS XML IsisScript Server fue concebido e implementado especialmente para servir de interface entre bases de datos ISIS y servidores Web via CGI (Common Gateway Interface). Los registros de una base de datos ISIS pueden ser convertidos en documentos HTML dinmicamente, es decir, los resultados de una bsqueda o una parte de un archivo maestro pueden ser recuperados y enviados al cliente Web. La salida en HTML es generada via lenguaje de formato ISIS. Igualmente, los datos contenidos en un formulario de un cliente Web pueden ser utilizados para actualizar y controlar una base de datos ISIS.
Los registros nuevos o los registros modificados son agregados al final del archivo master
Revisin - Registro
Coleccin de campos de datos Layout - 3 componentes
Lder Longitud fija - datos sobre el registro Directorio Longitud variable - una entrada para cada campo de datos Datos Longitud variable - los datos propriamente dichos
Los campos son extrados del registro via lenguaje de formatacin: <nombre.pft>, etc
Revisin - Cliente-Servidor
servidor www - Netscape, Microsoft, Apache, Omnihttpd, etc cliente www - browser: Netscape Navigator, Internet Explorer, etc
Modo de operacin
Clientes solicitan documentos via: URL: uniform resource locator
protocolo://servidor/recurso
Revisin - CGI
CGI - documentos dinmicos ("on the fly")
Common Gateway Interface nuevo proceso Interface con base de datos bsqueda, formatacin en text/html o en text/plain, actualizacin, etc
Lenguaje de Formato...
Selector de Campos - v: v2, v1^b, v20[4], v10*0.4, v15(5,5) Literales - cadena - Literal Incondicional: Nombre: v10 - cadena - Literal condicional: Nombre: v10 - |cadena| - Literal condicional repetitivo: v20+|, | Comandos de espaciamiento - x<n> - Inserta n espacios: Nombre:,x5,v10 - c<n> - Se desplaza hacia la columna n en la lnea actual: Nombre:,c5,v10 - / - Comienza una nueva lnea siempre que no se encuentre ya en el inicio de una: v15/ - # - Salta a la lnea siguiente incondicionalmente: v15/# - %- Cancela las lneas en blanco previas, si las hubiera: v10#####% mfn, mfn(longitud) Devuelve el mfn de un registro. Longitud indica la longitud de la cadena retornada.
...Lenguaje de Formato
Grupo repetitivo - (<formato>): (v1,c15,v2,c35,v3/) Comando de modo - m<modo><conv>- mdl, mdu, mhl, mhu, mpl, mpu <mode> puede ser: - p - proof: los campos se visualizan tal como se almacenaron en los registros. - h - heading: los caracteres de control y los delimitadores de campo son ignorados, excepto los delimitadores de subcampo, que son reemplazados por signos de puntuacin. - d - dato: similar al modo encabezamiento, slo que agrega un punto al final del campo, seguido de dos espacios. <conv> puede ser: - u - convierte los datos a mayscula (u de upper case). - l - deja los datos como estaban (l de lower case). mpu,"Segundo autor: "v10[2]/ if then else fi p(<field selector>) - Retorna TRUE si el campo asociado est presente y FALSE en caso contrario: if p(v12) then v12 else v13 fi a(<field selector>) - Retorna TRUE si el campo asociado est ausente y FALSE en caso contrario: if a(v12) then v13 else v12 fi
...Lenguaje de Formato
Funciones numricas - val(<formato>) - Devuelve el valor numrico del argumento generado por <formato>. if val(v2)>5 then 'Error'/ else 'OK'/ fi - l([<nombre invertido>]<llave>) - Retorna el MFN del primer posting (si lo hubiera) usando la clave generada por el formato <llave> para buscar en el archivo invertido actual o el especificado en <nombre invertido>. if l(v15)<> 0 then |Trmino: |v15 fi
...Lenguaje de Formato
Funciones de Cadena - f(<formato>,<expr-1>,<expr-2>) - Convierte un valor numrico en cadena de caracteres. <formato> es la expresin numrica a convertir, <expr-1> y <expr-2> indican la longitud mnima de la salida y la cantidad de decimales: f(val(v1),1,0). - ref([<dbname>]<expr>,<formato>) - Ejecuta <formato> en el registro seleccionado mediante <expr>, que indica el MFN de un registro: ref(l(v3),v1/). - s(<formato>) - Devuelve la concatenacin de cadenas de caracteres generadas por <formato>: s(v1,v2,v3). - mid(<formato-1>,<formato-2>,<formato-3>) - Retorna la subcadena contenida en la cadena generada por <formato-1> a partir de la posicin generada por <formato-2> y con la cantidad de caracteres especificada en <formato-3>. mid(v1,instr(v1,'key'),size(v1))/ - replace(<formato-1>,<formato-2>, <formato-3>) - Devuelve una cadena de caracteres reemplazando <formato-2> por <formato-3> en <formato-1>. replace('Mara y Juan',Juan',JUAN')/
...Lenguaje de Formato
Funciones de grupo repetitivo
Scripts
pginas html scripts cgi WWWIsis C:\APACHE\HTDOCS\CURSO\ C:\APACHE\CGI-BIN\CURSO\ C:\APACHE\CGI-BIN\
Instalacin y ejecucin
El WWWIsis debe ser instalado en el directorio de scripts del webserver
Apache
Apache\
IIS / PWS
InetPub\
htdocs\ cgi-bin\
wwwroot\ scripts\
Instalacin y ejecucin
WWWISIS puede activarse en un proceso CGI de tres maneras diferentes: Llamando al mdulo ejecutable directamente del campo de edicin de direccin del Browser http://localhost/cgi-bin/wxis.exe?hello Llamando al mdulo ejecutable directamente de un elemento ancla HTML, como argumento del atributo href <a href="/cgi-bin/wxis.exe?IsisScript=example.xis"> WWWISIS anchor call</a>
Instalacin y ejecucin
Llamando al mdulo ejecutable directamente de un elemento de formulario HTML como argumento de accin
<form method=get action="/cgi-bin/wxis.exe"> <input type="hidden" name="IsisScript" value="example.xis"> <input type="submit" name="Enter" value=" Enter "> </form>
</section> </IsisScript>
Toda marca se define por pares, una que abre la funcin <...> y otra que la cierra </...>
Scripts
Primer script
<IsisScript> <section> <display> <pft>'Content-type: text/html'/#</pft> </display> <display>Hello world!</display> </section> </IsisScript>
Tareas en WXIS
<IsisScript> <section> <do task= ... > <parm name= .. > </parm> <parm name= ...> </parm> <parm name= ...> </parm> <loop>
Dentro del loop, se accede a los datos del registro; por cada ocurrencia del ciclo se apunta a cada uno de los registros recuperados.
Informa la tarea del WWWIsis Los parm name definen las caracterstica de la tarea (task=)
Posibles Tareas
Mfnrange: Recorre la base por mfn Search: Bsqueda Keyrange: Recorre el diccionario por claves Fullinvertion: Inversin del diccionario Import: Importacin de registros Invertedload: Carga archivo Invertido List: Lectura de los items de una lista Mastersort: Clasifica registros de una base Update: Actualizacin de registros
Elemento Field
<field action=replace tag=2><pft>v400^b</pft></field> Utilizado para agregar, modificar, eliminar, importar, exportar o definir campos. El atributo action indica el uso del elemento: - cgi, define, delete, export, import, occ, replace, add El atributo tag indica el campo afectado.
Visualizacin de registros
<IsisScript> <section> <do task=mfnrange> <parm name=db>CDS</parm> <parm name=from>1</parm> <parm name=to>3</parm> <loop> <display><pft>ALL</pft></display> </loop> </do> </section> </IsisScript>
Concepto de Scope
... <field action=cgi tag=1>base</field> <do task=mfnrange> <parm name=db><pft>v1</pft></parm> <parm name=from>1</parm> <parm name=to>3</parm> <loop> <field action=import tag=110>1</field> <display> <pft>mhl,v110': 'v24/#</pft> </display> </loop> </do> ...
Elemento Flow
Es utilizado para desviar la sequencia de ejecucin de las instrucciones de un script. El atributo action puede asumir los valores jump, skip o exit.
... <flow action=jump><pft>if p(v1) then 'GO' fi</pft></flow> <display>Campo 1 ausente</display> <flow action=exit>1</flow>
Ordenacin de Listas
. . . <do task=mfnrange> <parm name=db>CDS</parm> <loop> <list action=load type=sort> <pft>if p(v24) then '^k',mhu,v24.60,mpl,'^m',mfn fi</pft> </list> <display><pft>mfn(1),c10,v24.60/</pft></display> </loop> </do> <do task=list> <parm name=reverse><pft>On</pft></parm> <field action=define tag=1001>Isis_Current</field> <field action=define tag=1002>Isis_Itens</field> <field action=define tag=1>Isis_Item</field> <loop> <display> <pft>v1001,'/',v1002,c10,ref(['CDS']val(v1^m),v24.60/)</pft> </display> </loop> </do> . . .
Archivo CIPAR
Activa una tabla de correspondencias de nombres lgicos con nombres fsicos de archivos para la seccin actual. Cada lnea contiene una correspondencia, a la izquierda del caracter = se especifica el nombre lgico, y a la derecha el nombre fsico del archivo. El caracter * indica que la correspondencia es vlida para cualquer archivo de la base de datos.
Accediendo al Diccionario
<do task=keyrange> <parm name=db>CDS</parm> <parm name=from>water</parm> <parm name=count>10</parm> <parm name=reverse>On</parm> <field action=define tag=1001>Isis_Current</field> <field action=define tag=1>Isis_Key</field> <field action=define tag=2>Isis_Postings</field> <display><pft>No) POSTINGS',c15,'KEY'/#</pft></display> <loop> <display><pft>f(val(v1001),2,0),') ',v2,c15,v1/</pft></display> <field action=export tag=1031><pft>if val(v1001) = 1 then '1' fi</pft></field> <field action=export tag=1032>1</field> </loop> <display><pft>'***************'/,f(val(v1001),2,0),') ',v1031,' / ',v1032/</pft></display> </do>
Modificacin de registros
<do task=update> <parm name=db>CDS</parm> <parm name=mfn>1</parm> <parm name=lockid><pft>'Bloqueado'</pft></parm> <parm name=fst><pft>'10 0 v10'</pft></parm> <parm name=expire>60</parm> <field action=define tag=1002>Isis_Lock</field> <field action=define tag=1003>Isis_Status</field> <update> <write>Unlock</write> <flow action=jump> <pft>if val(v1003)<>0 then 'REGISTRO_BLOQUEADO' fi</pft> </flow> ... <label>REGISTRO_BLOQUEADO</label> </update> </do>
Borrado de registros
... <do task=update> <parm name=db>CDS</parm> <parm name=mfn>1</parm> <parm name=lockid><pft>'Bloqueado'</pft></parm> <field action=define tag=1003>Isis_Status</field> <update> <field action=delete tag=list>ALL</field> <write>Delete</write> </update> </do> ...
Funciones
Elemento Function El elemento <function> inicia un bloque de declaracin de una funcin. Los atributos action, tag y split se usan para recibir parmetros igual que en el caso del elemento <field>.
... <function name=Prueba action=replace tag=1> <diplay>Dentro de la funcin<br></display> <diplay><pft>'Campo 1 =',v1</pft></display> </function> ...
Inclusin de Archivos
<IsisScript> <include>otroscript.xis</include> <section> ... </section> </IsisScript>