Publishing ISIS-database on the WWW

Download Report

Transcript Publishing ISIS-database on the WWW

Publishing ISIS-databases on the
WWW
An introduction
by E. de Smet
Univ. of Antwerp
Why ?
 the WWW is the most wide-spread datamedium nowadays
 software to access the web is freely
available, very powerful and user-friendly


no software distribution problem
no training needed
 ‘everybody does it’
How ? 2 different ways :
 ‘static’ publication :




create HTML-PFT (e.g. WinISIS PFT-wizard)
print your database using that PFT to a file
put that file on a WWW-server
… That’s it !
 ‘dynamic’ publication : real-time access to
data in database and ‘on-the-fly’ generation
of database-pages
Static : exercise with WinISIS
 Open your database with WinISIS
 Use ‘Print Format Assistant’ to create PFT with
HTML-codes (add ‘<HR>’ at end)
 Print your whole database using this PFT



FILE/Current Browse Set
Output to ASCII-file (Windows-ANSI)
Use other options (e.g. sort) at choice
 Open result file with your browser : that’s it !
Static publishing
 Easy, simple solution, but :
 Problems :






whole database or each record in a web-page ?
updating of the data ?
do you want all your records to be indexed by the
WWW-search engines ?
do you want searching your database only possible as a
general WWW-search ?
providing only one print-format ?
…
Dynamic Publishing
 each web-page dealing with your database is
produced by a script which involves
accessing the database, retrieving the data
and formatting them into HTML-output
 sophisticated approach
 advantages : up-to-date, more flexible
The principles of dynamic
database-publishing on the web
 the user enters search specifications into a ‘form’ in
a webpage
 the variables in the form are transmitted as a string
to the server
 the (web-)server passes through to ISIS-server
 ISIS-server acts according to specifications and
delivers HTML-formatted data
 Webserver returns the HTML as a ‘normal’ page to
browser of the ‘client’
The ‘client-server’ architecture
 The client is the end-user’s PC running a
WWW-browser (IE, Netscape, Opera,
Mozilla/Firefox…)
 The server is a computer running a WWWserver (Apache, IIS, Xitami…)
 client and server interact using the CGIprotocol or ‘server-side scripts’ (ASP, PHP)
The CGI-protocol
 CGI = Common Gateway Interface
 a mechanism is agreed to put variables as
‘name/value-pairs’ into a string sent to the server
which puts them into the ‘environment memory
space’ for other applications to retrieve them
 a mechanism allows to run an executable software
on the server, e.g. wwwisis.exe or openisis.exe
 this CGI-compatible software can read the variables
from that memory and act upon them
e.g. : WWWISIS
 produced by BIREME, based on their CISIS-tools
(MX for Master/Xrf and MZ for IF manipulations)
 can read CGI-variables and puts them into a ‘virtual
ISIS-record’ where they become fields and
subfields with tags
 these fields can be used to process data, e.g. the
‘Boolean search command’ : “BOOL=“
 can format ISIS-data into HTML and send them
back to the requesting WWW-server (who forwards
to end-user)
WWWISIS : some history
 1st (and 2nd) generation needed ‘CGI-scripts’ to
translate CGI-variables into WWWISIS-commands
 v. 3 introduced ‘virtual record’ which reads directly
from CGI-environment
 v.4 and 5 : ‘WXIS’ uses own script language :
‘ISIS-scripting’ -> more powerful, controllable
 More general PHP-scripting is not possible
Implementation possibilities
 With wwwisis (Bireme) as the webdatabase-server :


GenISIS : full application generator available
WWWIRIS : JavaScript used to build HTML
 With isis3w (FAO/Poland) webdatabase-server :

WEBLIS with HTP-templates and ISISDLL
 With PHP/OpenISIS : PHP used to build the webpages and CGI-commands,

IGLOO
Application building : GENISIS
 GenISIS : French product, now provided by
UNESCO
 2 versions : WWW and CD publishing


CD-publishing with stand-alone viewer but same
application-interface
WWW-publishing needs web-server and browser,
installation best with Apache running
 Actual version : v3 (French, also English but
documentation lagging bit behind)
GenISIS :
implementation procedure
 Installation form install-file for Web or CD
 Application building with ‘GenISISWEB’ (or GenISISCD, but in
French) executables

Three elements in ‘creation’ :




Query form (fields, indexes and page lay-out)
List-format (internal default available !)
Detailed format (internal default available !)
‘Exporting’ or saving application to finalise
 Testing on ‘localhost’ or ‘127.0.0.1’, with numbered folders in
‘wwwroot\wwwisis’-folder for each application

E.g. http://127.0.0.1/wwwisis/appli.htm for list of your applications
 Make sure Apache is running (\Program Files\Apache
Group\Apache\apache.exe -> black window minised)
WWWIRIS : interface for
WWWISIS
 web-version of IRIS-interface for ISIS/DOS
 main features :






multi-lingual
multi-database
3 interfaces (form, Q&E, command)
multi-stage presentation : shortlist->details
Z39.50 -like ‘interaction’ simulated
can also allow data-entry (create, edit, delete) - password
protected and logged
WWWIRIS
 the WWWIRIS main form :



HTML written by JAVASCRIPT to generate
forms (language-, database-, format-, interfaceand batch-selection and search statement)
two frames : left=static (‘remembers’ interaction
variables), right=dynamic data display
this is the only ‘normal’ static HTML-file on the
server
HTML forms
 Interactive input on webpages, e.g. to define a search
statement, with ‘action’ (e.g. <form name="paraForm" method="post"
action="wwwi32.exe/[ctttype=text/html]/[in=wis.in]/">)
 Input types :






<INPUT TYPE="text" SIZE=66 VALUE="" NAME="qString“>
<input type=button value=“GO!”>
<INPUT TYPE=TEXTBOX NAME=“abstract” SIZE="78" ROWS="2"
WRAP="ON" >
<TEXTAREA NAME=“ABSTRACT” ROWS=22 WRAP=ON COLS=64>
<INPUT TYPE=“hidden” NAME=“USERID”>
<SELECT multiple name="descriptors">'
'<option>listitem1</option>'
 '<option>listitem2</option>‘
</SELECT>

WWWIRIS (2)
 all form-variables are sent to ‘WWWISIS-scripts’
(*.wis) which list the command-line variables on
which WWWISIS operates into external (small)
files, e.g. ‘WIS.WIS’ :








'db='v4000/,
'cipar='v4000'.cpr'/,
'uctab=ansi.tab'/,
'gizmo='v4001/,
if v3003='index' then @indx.wis else if v3003='editrec' then @edit.wis
else if v3003='newrec' then @newrec.wis else if v3003='deleterec' then
@delete.wis else if v3003='record' then @record.wis else @list.wis
fi,fi,fi,fi,fi
Why JAVASCRIPT ?
 normal HTML is still ‘static’, e.g. to write a menu
on databases :
<select> <option>db1</option>
<option>db2</option>
</select>
 in JS : db1, db2..dbi are stored in array-variables
and these can be written as :
for (i=0; i<dbs.length; i++) {
dbOG=dbOG+'<option'+ ' value='+dbs[i][0]+'>'+dbs[i][6]+'</option>';
}
WWWIRIS : implementation
 Adapt ‘wirvars.js’ with text-editor


Messages for each language
Database-parameters for all db’s/languages in arrays, see
wwwiris.doc
 Adapt ‘wirmenu.htm’ with text-editor


Cgi-path in ‘action=‘ parameter
A HREF’s and logo
 Create ldbnsh.pft (see given model)
 Create ldbnfu.pft (e.g. using WinISIS assistant)
WIRVARS.JS
 This file lists all database-specific variables into
JavaScript-arrays, e.g.
dbs[0][0]=new Array();
dbs[0][0][0]='ARTIC';
dbs[0[[0][6]='ARTICLES';
dbs[0][0][1]=new Array();
dbs[0][0][2]=new Array();
dbs[0][0][1][0]='TW=';dbs[0][2][0]='Title words';
dbs[0][0][1][2]='AU=';dbs[0][2][1]='Authors';
dbs[0][0][1][2]='TI=';dbs[0][2][2]='Title';
dbs[0][0][1][3]='DE=';dbs[0][2][3]='Descriptors';
 WWWIRIS.HTM reads this file as first part of it
WWWIRIS.HTM
 WWWIRIS is the starting page, containing the
main search form (form, Q&E or command) and all
the JS-functions for the interface, e.g. editRec puts
‘edit-modus’ and queryString into left frame-vars :
function editRec(n) {
with (window.menu.document.paraForm) {
elements[3].value='editrec';
elements[5].value=queryString();
elements[6].value=n;
target='cont';
submit();
}
}
HTML-forms in JavaScript
 example : the ‘command’-interface writes a
‘textarea’ input object :
if (curIT=="Command") {
writeln("<p><textarea name='qString' rows=5 cols=60 wrap=virtual
onChange='top.advSearch=value'>");
writeln(advSearch+"</textarea><BR>");
writeln('<p><input type=button value="SEARCH"
onClick="top.runQuery();"><br><hr>');
writeln(dbs[curDB][10]);
}
The WWWIRIS-program logics
(1)
 the user selects language, database, interface,
display format and batch-no.
 according to interface selected, the user
specifies the search command, possibly
consulting search-dictionary
 the ‘form’ interface allows multiple Boolean
search commands to be combined
The form interface
The command-interface
The Quick & Easy interface
WWWIRIS program logics (2)
 after the search command has been ‘sent’, the
interface decides whether a dictionary-window, a
shortlist-window, a full record-window or an
editing window is requested
 all variables are either sent as ‘normal’ (i.e. shown
on the left frame lMENU.HTM) or as ‘hidden’ :
<form name="paraForm" method="post"
action="/../wwwi32.exe/[ctttype=text/html]/[in=wis.in]/">
<input type=hidden name='n^t4000'>
<input type=hidden name='lang^t5000' value='e'>
<input type=hidden name='b^t3005' value=''>
<input type=hidden name='mfn^t3006' value=''>
</form>
WWWIRIS program logics (3)
 dedicated scripts for dictionary, shortlist,
record-display and editing exist : resp.




indx.wis
list.wis
record.wis
edit.wis and upd.wis
 all defining their own ‘variables’, e.g. PFT
WWWIRIS program logics (4)
 the dynamic pages are generated by ISIS-PFT’s
using :





HTML-tags
HTML-forms
hyperlinks (A HREF=http://|mailto:// etc.)
pictures <IMG>, background <BGCOLOR> etc.
other calls, e.g. to PHP/MySQL :




'<form method="POST" action="/SAPPHP/newrequest.php"
TARGET="_top">',
'<input type="hidden" name="sapid" value="',v1^a,v1^b'">',/
'<input type="hidden" name="title" value="'v200'">',/
'</form>'
WWWIRIS logics (5)
 data entry : ISIS MFN’s are displayed with all
fields in text-input elements of a form, e.g. :
'<B>TITLE ARTICLE</B> [200]<P>Enter full title of the article<BR>'/
'<INPUT TYPE=text NAME=TITLE^t6200 size=85 value="'V200'"><P>'/
'<P>‘

note : quotes ‘_’ because they are actually PFT-literals !
 vars are sent to WWWISIS with ‘new’, ‘proc’ and
‘update’ commands‘,

e.g. ‘proc=‘ parameter :
proc= ‘D022D310','A022#'date'#','A062#'v6062'#',|A310#|v6310|#|,