Publishing ISIS-databases on the
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 print-format with embedded HTML (e.g. WinISIS
print your database using that format 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 databasepages
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 : ‘database-driven’
dynamic HTML-pages
 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
(HTML forms)
 the variables in the form are transmitted as a string
to the server
 the (web-)server passes through to database-server
(e.g. for ISIS : wwwisis, openisis or isis3w)
 database-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,
 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,
Application building : GENISIS
 GenISIS : French product, now provided by
UNESCO and also available in English
 2 versions : WWW and CD publishing
CD-publishing with stand-alone viewer but same
WWW-publishing needs web-server and browser,
installation best with Apache running
 Actual version : v3 (French, also English but
documentation lagging bit behind)
 Form creation by interactive form-editor, easy!
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 ‘’, with numbered folders in
‘wwwroot\wwwisis’-folder for each application
E.g. for list of your applications
 Make sure Apache is running (\Program Files\Apache
Group\Apache\apache.exe -> black window minised)
WWWIRIS : interface for
 web-version of IRIS-interface for ISIS/DOS
 main features :
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
 the WWWIRIS main form :
HTML written by JAVASCRIPT to generate forms
(language-, database-, format-, interface-and batchselection 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
JavaScript allows form to be dynamic
HTML forms
 Interactive input on webpages, e.g. to define a search
statement, with ‘action’ (e.g. <form name="paraForm" method="post"
 Input types :
<INPUT TYPE="text" SIZE=66 VALUE="" NAME="qString“>
<input type=button value=“GO!”>
<SELECT multiple name="descriptors">'
 '<option>listitem2</option>‘
back to 'principles'
 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’ :
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
 normal HTML is still ‘static’, e.g. to write a menu
on databases :
<select> <option>db1</option>
 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
 Adapt ‘wirmenu.htm’ with text-editor
Cgi-path in ‘action=‘ parameter
A HREF’s and logo, to ‘local taste’
 Create ldbnsh.pft (see given model)
 Create ldbnfu.pft (e.g. using WinISIS assistant)
 This file lists all database-specific variables into
JavaScript-arrays, e.g.
dbs[0][0]=new Array();
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][1] is second database for first language etc.
 WWWIRIS.HTM reads this file as first part of it
 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 ( {
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
writeln('<p><input type=button value="SEARCH"
The WWWIRIS-program logics
 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"
<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=''>
WWWIRIS program logics (3)
 dedicated scripts for dictionary, shortlist,
record-display and editing exist : resp.
edit.wis and upd.wis
 all defining their own ‘variables’, e.g. PFT
 Hidden variables imitate ‘interactive
WWWIRIS program logics (4)
 the dynamic pages are generated by ISIS-PFT’s
using :
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"
'<input type="hidden" name="sapid" value="',v1^a,v1^b'">',/
'<input type="hidden" name="title" value="'v200'">',/
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>'/
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|#|,

Publishing ISIS-database on the WWW