Бакстон Э. Руководство по использованию WWW ISIS / Пер. с англ. творч. коллектива муницип. информ. библ. системы г. Томска. — Томск, 2002.


The WWW ISIS Handbook
(For version 4 and 5)

Andrew Buxton
Information Systems Manager
Institute of Development Studies at the University of Sussex

March 2002


Руководство по использованию WWW ISIS
(версии 4 и 5)
(перевод на русский язык)

Перевод выполнен в муниципальной
информационной библиотечной системе города Томска
http://www.library.tomsk.ru

Проект “ИРБИС и CDS/ISIS в Томске”
http://www.irbis.tomsk.ru


Содержание

  • 1. Введение в CDS/ISIS и WWW ISIS
    • 1.1 CDS/ISIS
    • 1.2 Программное обеспечение BIREME
    • 1.3 Версии WWW ISIS
  • 2. Введение в web-публикации (Web publishing)
    • 2.1 Архитектура клиент-сервер
    • 2.2 Универсальный идентификатор ресурса (URL)
    • 2.3 Язык разметки гипертекста (HyperText Markup Language (HTML)
    • 2.4 Другие языки разметок
    • 2.5 The Common Gateway Interface (CGI) — oбщий шлюзовой интерфейс
  • 3. Установка WWW ISIS
    • 3.1 Параметры настройки IP
    • 3.2 Установка программного обеспечения web-сервера
    • 3.3 Лицензирование WWW ISIS
    • 3.4 Установка WWW ISIS
    • 3.5 Создание и загрузка баз данных ISIS
  • 4. Введение в IsisScripts
    • 4.1 Расширяемый язык разметок (Extensible Markup Language (XML)
    • 4.2 IsisScript
    • 4.3 Тип содержимого (сontent-type)
    • 4.4 Задачи
    • 4.5 Параметры
    • 4.6 Циклы (Loops)
    • 4.7 cipar
    • 4.8 gizmo
    • 4.9 Управление потоком данных
    • 4.10 Комментарии
  • 5. Переменные CGI и переменные среды
    • 5.1 Общий шлюзовой интерфейс (Common Gateway Interface (CGI)
    • 5.2 Входная форма
    • 5.3 Чтение значений
    • 5.4 Использование значений в IsisScript
    • 5.5 Контекст переменных
    • 5.6 Переменные среды
  • 6. Выполнение поиска и отображение результатов
    • 6.1 Простой сценарий поиска
    • 6.2 Расширение (улучшение вида) вывода результатов
    • 6.3 Расширение формы поиска
  • 7. Доступ к инвертированному файлу
    • 7.1 Форма вывода части индексного файла
    • 7.2 IsisScript для отображения индекса
  • 8. Создание и редактирование записей
    • 8.1 Задача модификации записей
    • 8.2 Блокировка записи
    • 8.3 Форма для создания новых записей
    • 8.4 IsisScript для создания новых записей
    • 8.5 Форма для редактирования существующих записей
    • 8.6 IsisScript для редактирования записей
  • 9. Интерфейс IAH
    • 9.1 Введение
    • 9.2 Установка
    • 9.3 Начальная конфигурация
    • 9.4 Поиск типовых баз данных
    • 9.5 Установка вашей собственной базы данных
    • 9.6 Порядок записей при отображении
    • 9.7 URL для поиска вашей базы данных


Глава 1
Введение в CDS/ISIS и WWW ISIS

1.1 CDS/ISIS

Micro CDS/ISIS — пакет для создания текстовых (библиографических) баз данных и управления ими. Он был создан UNESCO в 1985 году, и с тех пор дистрибьюторами в глобальной сети было выдано более 20,000 лицензий. Он подходит для библиографических приложений и используется для каталогов многих средних и маленьких библиотек. Созданы версии на арабском, китайском, английском, французском, немецком, португальском, русском, испанском и многих других языках. UNESCO делает программное обеспечение свободно-распространяемым для некоммерческих целей (хотя дистрибьюторам позволяют включать их расходы).

Версии Micro CDS/ISIS созданы для операционных систем MS-DOS, Unix и Windows. На момент написания этого документа последней версией была 1.4 для Windows. Больше информации и подробности работы о CDS/ISIS, включая список дистрибьюторов, можно найти на http://www.unesco.org.

Первый CDS/ISIS для IBM был разработан в середине 70-х годов г-ом Гиампаоло (Mr Giampaolo Del Bigio) Дель Биджио для системы компьютерной документации (Computerized Documentation System) UNESCO. В основе лежал внутренний ISIS (Integrated Set of Information Systems) язык в International Labour Office в Женеве. Исходный код был сделан доступным для разных некоммерческих организаций, и к 1983 году имелось 80 инсталляций во всем мире.

В октябре 1985 г-н Дель Биджио продемонстрировал версию CDS/ISIS для мини- и микрокомпьютеров, созданную на Pascal на Встрече Пользователей Латинской Америки и Карибского Бассейна, и версия 1 этого продукта была доступна для работы в декабре 1985 года. Она запускалась и работала на IBM XT с памятью 256K. В 1987 была выпущена версия 2 с улучшенной скоростью и защитой, а также с меню, дававшим доступ к главным функциям системы. С тех пор структура базы данных осталась неизменной, поэтому базы, созданные в одной версии можно использовать в другой без изменения. Версия 3 вышла в 1992 и позволила работать в сетях, также как вводить некоторые новые средства для обращения к данным (необходимые для интерфейса IAH описаны в Главе 9).

На Международной Конференции в Bogata, прошедшей в 1995, чтобы отметить 10 лет CDS/ISIS, г. Дель Биджио представил первые результаты перемещения системы на Microsoft Windows и Abel Packer из Regional Library of Medicine (BIREME), Sao Paulo, представил CISIS и ISIS_DLL. ISIS_DLL, разработанный совместно с UNESCO, позволил создавать и разрабатывать приложения, написанные на Windows-совместимых языках, например Visual Basic, для взаимодействия с базами CDS/ISIS.

1.2 Программное обеспечение BIREME

CISIS — это продукт для работы с базами данных CDS/ISIS, переписанный на языке программирования С. Для MS DOS и Windows он берет форму программы mx.exe и запускает оператор командной строки CDS/ISIS. Например, поиск в базе CDS для слова "water" с результатами, выведенный в формате SHORT, может быть представлен с использованием следующей команды:

mx cds bool=water pft=@short.pft

Также есть версия программы, написанная на языке С, которая располагается за Windows-версией CDS/ISIS (написанной на С++), и она также делает возможным представление работы CDS/ISIS на web-сервере через CGI-интерфейс. Этот продукт называется WWW ISIS. Программа версии 3 для 32-разрядного Windows — wwwi32.exe, и вы можете выполнять поиск по данным CDS/ISIS через браузер, используя URL

http://myserver/cgi-bin/wwwi32.exe/[in=ab.in]

Здесь “myserver” — адрес сервера, ab.in — файл параметра, включающий подобные(?) параметры для примера выше:

db=cds
bool=water
pft=@short.pft

Структура базы данных в WWW ISIS такая же, как в CDS/ISIS (версии DOS и Windows), так что базы могут строиться с теми версиями, а затем предлагаться для поиска WWW ISIS. Если вы пересылаете данные между DOS/Windows и Unix, они могут экспортироваться из одной версии как файл ISO и затем импортироваться в другую. Если требуется, инвертированный файл для WWW ISIS может строиться с использованием программы mx.

1.3 Версии WWW ISIS

Пример выше показывает, как работает WWW ISIS версии 3. Он использует файл параметра, имя которого имеет расширение .in и определяется как [in=ab.in]. Результат, который проходит к клиенту, определяется в этом файле в трех частях:

(а) prolog, который может содержать сообщение вида “Результаты вашего поиска” и устанавливать фон экрана

(b) print format, используемый для отображения записей, восстановленных (полученных) из базы данных. Эта часть пишется, используя смесь языка форматирования CDS/ISIS и зыка разметки гипертекста (HTML)

(c) epilog, который может содержать сообщения вида: “Конец вывода”.

Поиск (bool=…) обычно не должен записываться в файле IN как в примере выше, так как он всегда должен производить некоторый поиск. Лучше организовать поиск из окна на экране, заполняемого пользователем, через Общий шлюзовой интерфейс — Common Gateway Interface (CGI). Если вы еще не знакомы с ним, то подробнее узнаете в Главе 5.

Версия 3 свободно доступна с сайта UNESCO, но она не затрагивается в этом Руководстве. Здесь рассматриваются версии 4 и 5. Они доступны для загрузки с сайта BIREME, и если Вы хотите использовать их по сети, Вы должны будете купить лицензию от BIREME. (Для практики и проектирования Вы можете установить сервер и клиента на одном компьютере без лицензии.)

Версия 5 была реализована в 2001, и в нее добавили некоторые новые особенности. Она позволила осуществлять поиск со спецификаторами полей как в CDS/ISIS, например plants/(24), и с операторами скобок и близости. Она также вводит новый тэг <isisxml>, который может использоваться подобно <pft>. Это позволяет выводить записи ISIS в трех различных XML-форматах, один из которых проиллюстрирован ниже.

<cds mfn="1">
<field tag="44">
Methodology of plant eco-physiology
</field>
<field tag="26">
<subfield id="a">Paris</subfield>
<subfield id="b">Unesco</subfield>
<subfield id="c">1965</subfield>
</field>
</cds>


Глава 2
Введение в WEB-публикации (WEB Publishing)

2.1 Архитектура клиент-сервер

Существуют три части технологии World Wide Web (WWW):

Сервер — это большой и мощный компьютер со многими гигабайтами памяти на диске, содержащий обширный информационный узел. Однако почти любой компьютер способен действовать как web-сервер, и существуют различные бесплатные или недорогие программы, делающие ваш компьютер web-сервером. Сервер должен всегда быть подключен к Internet, чтобы пользователь в любое время мог получить необходимую информацию. Постоянное подключение к Интернет имеется в большинстве университетов и больших компаний, но может быть слишком дорого для маленькой организации или индивидуального пользователя. Для таких web-сайтов (без постоянного соединения с Интернет) лучше было бы сохранять сайт на компьютере Провайдера Internet (Internet Service Provider (ISP), который может обеспечить свободный доступ пользователей и дисковое пространство. Однако провайдеры могут не позволять выполнять программы типа WWW ISIS на их компьютерах.

Информация на сервере может быть представлена в виде статических или динамических страниц. Статические страницы поддерживаются как отдельные файлы на сервере, и выглядят одинаково каждый раз, когда их вызывают. Динамические страницы генерируются по требованию и не поддерживаются как отдельные файлы, например результаты поиска в БД. Информацией могут быть текст, изображения, звуки, видео и др. Собрание всей информации Internet, которая соединена как гипертекст (смотри Раздел 2.2), составляет Всемирную паутину (World Wide Web).

Клиентом может быть почти любой компьютер, с запущенным программным обеспечением браузера сети. Лучшие известные программы — Netscape Navigator и Microsoft's Internet Explorer. Navigator вышел из более ранней программы, называемой Mosaic. Существуют и другие, такие, как только текстовый браузер — Lynx или графические пакеты, как Opera.

Когда клиент обращается с запросом информации на сервер, он использует протокол передачи гипертекста (HTTP). Сервер обрабатывает запрос и снова использует HTTP, чтобы послать информацию назад клиенту. Клиент интерпретирует присланное сообщение и выводит его на экран пользователю.

Возможно, особенно для образования и исследований, установить сервер на одном компьютере с клиентом. В этом случае сеть не нужна, и клиент относится к серверу как localhost. Также некоторые организации организуют работу только внутренней сети: это известно как intranet.

2.2 Универсальный идентификатор ресурса (URL)

Путь, которым пользователь выбирает специфическую страницу во Всемирной Сети, определяется посредством ее Универсального идентификатора ресурса, например

http://www.ids.ac.uk/index.html

Этот запрос к серверу, чей адрес — www.ids.ac.uk, использует протокол передачи гипертекста (HTTP), послать файл index.html. В Internet существуют другие протоколы, которые использовались до создания World Wide Web, такие как протокол передачи файлов (FTP) и Telnet. Однако для WWW ISIS нам нужен только HTTP. Большинство современных браузеров принимают HTTP по умолчанию, не нуждаясь в том, чтобы Вы определили его, когда Вы вводите URL.

Как видно из названия, HTTP — это формат, используемый для передачи гипертекста, из которого состоит информация в сети. Это — части текста или других объектов, соединенные гиперсвязями (обычно называемыми просто ссылками). В напечатанной энциклопедии вы можете увидеть

ЭДИНБУРГ. Столица Шотландии и дом Эдинбургского Фестиваля.

Чтобы прочитать больше о Шотландии, вы должны обратиться к той записи. Однако на web-странице слово “Шотландия” может формировать ссылку к другой странице (или другому месту этой страницы), где содержится информация о Шотландии. Как и слова, ссылками могут быть изображения или части изображений. Например, это может быть карта Шотландии, на которой каждое название формирует ссылку к информации об этом месте.

Адрес www.ids.ac.uk определяет компьютер с именем ids.ac.uk в www, подобласть Internet, определяемая местонахождением в IDS (Institute of Development Studies). Это в свою очередь часть домена ac.uk — академическая сеть в Великобритании.

Если вы вводите только имя каталога в URL, например

http://www.ids.ac.uk/blds/,

то сервер настроится для пересылки страницы index.htm (или index.html) из того каталога, если такой файл существует. Если нет, сервер может послать листинг файлов в той директории или страницу о запрете доступа, если вебмастер (webmaster), выключил это средство из соображений безопасности.

В каталоге, как и имена файлов, могут быть различные уровни (или папки в терминологии Windows), например:

http://www.ids.ac.uk/blds/kenya/docdel/introduction.html

Файлы, сохраненные в корневом каталоге и его подкаталогах, формируют web-сайт IDS. Корневой каталог определяется хозяином сети при установке сервера.

Каждая web-страница определяется HTML-файлом. Имя файла может оканчиваться на .htm или .html. Первоначальным расширением было .html, допустимое в Unix, ОС ранних web-серверов. DOS и ранние версии Windows могли оперировать только с трехсимвольными расширениями, поэтому стали использовать .htm. Сегодня вы можете встретить оба, но для использования на собственном web-сайте лучше выбрать одно из них.

2.3 Язык разметки гипертекста (HyperText Markup Language)

Страницы гипертекста пишутся на языке, называемом Язык Разметки Гипертекста (HTML). Он состоит из текста, который пользователь видит на экране, и кодов, называемых тэгами, которые добавляют специальные эффекты к тексту, например

<H2>How to order documents</H2>.

Здесь тэг <H2> определяет, что следующий за ним текст должен быть выведен как заголовок второго уровня, а тэг </H2> закрывает это требование. Как точно должен быть отображен заголовок второго уровня, определяет браузер (или управляется таблицей стилей). Первоначальной задачей HTML было точное определение логических разделов текста и предоставление его внешнего вида на браузер, но теперь имеются параметры настройки для размера точки, цветов, шрифтов, и т.д., так что задача частично меняются.

Большинство тэгов используются в парах, как в примере выше, определяя начало и конец элемента. Элементы вкладываются друг в друга. Целая страница пишется между тэгами <HTML> и </HTML>. Главный раздел страницы находится в Head (который содержит Title и другую информацию) и в Body, например:

<HTML>
<HEAD>
<TITLE>My first web page </TITLE>
</HEAD>
<BODY>
Hello world!<BR>
This is your Webmaster speaking.
</BODY>
</HTML>

Пробелы и пустые строки в HTML не имеют никакого значения, так что пример выше можно было записать в одной строке. Так он был записан только для легкости прочтения. Пример тэга, используемого без пары — <BR>, который указывает конец строки. Тэги HTML не чувствительны к регистру символов, но использование верхнего регистра, позволяет выделить тэги из текста. В этом Руководстве мы используем верхний регистр частично, чтобы отличить тэги HTML от тэгов IsisScript.

Тэги часто имеют один или больше атрибутов, для определения свойств элемента, который следует за ними, например:

<FONT FACE="Arial" COLOR="red" SIZE="2">Some text</FONT>

Атрибуты могут размещаться в любом порядке. Двойные кавычки обязательны, если значение содержит пространственный или специальный символ.

Задачей Руководства не является обучение Вас всему, что Вы должны знать об HTML. Для этого существует множество других доступных книг.

2.4 Другие языки разметок

Язык разметки — способ размещения кодов в тексте, в известном смысле, чтобы их можно было выделить из текста (и определение того, чем являются эти коды и что они означают). HTML — один из примеров языков программирования: коды можно выделить, т.к. они заключены в <…>. Другой (ненормативный) способ кодирования текста должен бы использовать специальные символы, например * для "вывести следующее слово курсивом", и % для "вывести следующее слово полужирным ", так что мы бы получили:

Here is a *fictional %markup %language.

Стандартный Обобщенный Язык Разметок (SGML) был определен Международной Организацией стандартов в 1986 как ISO 8879. Он обеспечивает структуру для языков разметок, например то, каким образом коды выделяются из текста, но он не определяет, какие они. Если Вы знакомы с ISO 2709 и форматами MARC, используемыми в каталогизации библиотек, то это — подобный вид отношений. ISO 2709 определяет структуру, а форматы MARC определяют то, чем являются элементы данных в пределах этой структуры. HTML — одно из приложение SGML.

Другой язык, XML (Extensible Markup Language — Расширяемый Язык Разметок), появился из SGML. Это — простая версия SGML, которая может использоваться для написания программ. Скорее, это "матрица" для создания языков, чем сам язык. Одно из хорошо известных приложений XML — Channel Definition Format (Формат Определения Канала — CDF), который использовался для создания каналов в Internet Explorer 4. IsisScripts, который используются в WWW ISIS 4 версии, что будет описан далее или любое другое приложение.

2.5 The Common Gateway Interface (CGI) — общий шлюзовой интерфейс

Мы упоминали в Разделе 2.2, что статические web-страницы поддерживаются на сервере в корневом каталоге или в его подкаталогах. Обычно корневой каталог называется wwwroot или htdocs. Любые файлы, посылаемые клиенту, или страницы текста, изображения, звуковые файлы и т.д., должны сохраняться в нем. Корневой каталог должен быть определен при конфигурировании программного обеспечения web-сервера, и это определит, из чего будет состоять web-сервер.

Web-сервер также распознает другой каталог, обычно называемый cgi-bin (для двоичных файлов CGI). Этот каталог содержит программные файлы, и программы могут перемещаться на сервер с помощью определения их в URL, например

http://www.buxton.org/cgi-bin/myprog.exe

Обычно программа будет производить некоторый вывод в HTML, и это будет отсылаться сервером клиенту как динамическая страница. В следующий раз при выполнении программа может представить другой вывод, так как к ней могут быть посланы другие значения входных величин через CGI.

Межсетевые программы могут быть разных типов. Это могут быть программы, написанные на любом языке (например, C++ или Visual Basic) или выполняемые сценарии, написанные на специальных языках сценариев, таких как Perl, Cold Fusion или язык сценариев Isis.

При выполнении программы мы обычно хотим контролировать ее, определяя некоторые параметры, например "Найти мне книги о ЖЕЛЕЗНЫХ ДОРОГАХ и вывести результаты в ДЕТАЛЬНОМ формате". Пользователь может ввести эти параметры в форму, которая является особым видом HTML-страницы, и значения переслать через CGI-интерфейс. Они посылаются как пары имя-значение, разделяемые знаками &, например

searchterm=railways&format=detailed

Программа может нуждаться в некоторых других параметрах (например "В какой базе данных этот человек хочет искать? "). Они могут быть встроены в форму, но скрыты от пользователя, так, чтобы пользователь не знал, что они посланы наряду со значениями, которые он /она ввел в форму.

Мы будем иметь дело далее с формами и передачей значений через CGI в Главе 5.


Глава 3
Установка WWW ISIS

Установка WWW ISIS сама по себе очень проста, но существуют некоторые предварительные мероприятия, с которыми вам сначала предстоит иметь дело.

3.1 Параметры настройки IP

Как объяснено в Разделе 2.1, вы можете использовать один компьютер и как сервер, и как клиент, это удобно и возможно, для испытательных целей или пока Вы изучаете IsisScripts. В этом случае вам не потребуются сетевые параметры настройки и лицензия.

Однако, главное, для чего работает WWW ISIS — это дать другим людям доступ к вашей базе данных по intranet или по Internet. В этом случае вы должны быть уверены, что используемый в качестве сервера компьютер соединен с сетью, когда пользователи хотят обратиться к вашей базе. Обычно это подразумевает постоянное сетевое подключение. Каждый компьютер в Internet или в intranet, который работает с Internet Protocol (IP), идентифицирован IP-адресом, вида 139.184.17.25. Иногда IP-номер назначается только при подключении компьютера к сети. Такое динамическое распределение имеет преимущество сохранения в числах, так как один номер может использоваться для разных компьютеров, если они не подсоединены одновременно. Однако, это значит, что номер компьютера может меняться изо дня в день на тот, который менее нужен серверу. Таким образом, вы должны быть уверены, что ваш компьютер-сервер имеет постоянно назначенный (или “жестко закодированный”) IP-номер. (Обычные динамические системы — BOOTP и DHCP, хотя их использование не обязательно, подразумевают, что ваш IP-адрес будет меняться при каждом подключении.)

Сообщение IP-номера — это IP-адрес, например www.ids.ac.uk (или, фактически, на один IP-номер могут распределяться больше одного адреса). Это — форма, в которой пользователи обычно вызывают ваш web-сервер, хотя они могут использовать номер, если знают его. Адрес предпочтителен, потому что (a) он проще для запоминания и дает указание относительно того, чем является сайт и где находится, и (b) если служебный компьютер сломается или станет неадекватным, Вы можете использовать другой компьютер и сделать карту названия к IP-номеру нового компьютера.

Перед продолжением загрузки программного обеспечения сервера, Вы должны узнать некоторые подробности IP компьютера, который Вы планируете использовать. Если вы работаете с Windows NT, Вы можете ввести команду:

ipconfig /all

и это даст вам всю информацию. Если у вас другая операционная система, команда будет подобной; если необходимо, обратитесь за помощью к вашему сетевому администратору.

3.2 Установка программного обеспечения web-сервера

WWW ISIS будет работать с различным программным обеспечением web-сервера. Однако, он не работает с сервером O'Reilly WebSite.

3.2.1 Omni HTTPd

OmniHTTPd производится Omnicron Technologies Corporation. Существуют две версии, свободно загружаемые с их web-сайта

http://omnicron.ab.ca/httpd/download.html

Версия свободно распространяемого обеспечения работает только под Windows 95. она датирована 18 июня 1997, и не была модифицирована. Это может быть полезно для обучения или развития, но Windows 95 имеет только элементарную защиту и не должен использоваться, для предоставления услуги сети по internet.

Профессиональная версия выполнена под Windows 98/ME и Windows NT /2000.

После того, как была загружена инсталляционная программа, она может выполняться. По умолчанию она устанавливается в папку c:\httpd. Фактический программный файл — ohttpd.exe. Если вы работаете под Windows 95, вы можете установить строку в ваш файл autoexec.bat, всякий раз, когда запускается ваш компьютер:

C:\HTTPD\OHTTPD.EXE

В Windows NT или 2000 вероятно наиболее удобно запустить программу как службу. Когда выполняется программа, вы можете щелкнуть правой кнопкой мыши на панели задач и выбрать Свойства (Properties), чтобы приняться за подробности конфигурации. Несмотря на одиннадцать диалоговых окон, для начала понадобятся только два. В диалоговом окне Сервер (Server) вам нужно выбрать следующие параметры настройки:

Адрес узла (Site address). Введите здесь полный IP-адрес компьютера как объяснено в Разделе 3.1 выше, например: www.mycompany.org.

Если вы собираетесь работать как localhost, используйте IP-номер 127.0.0.1.

Server root. Это объяснено в Разделе 2.2. Все HTML-файлы, составляющие ваш сайт, должны находиться в этом каталоге или его подкаталоге. По умолчанию будет установлено C:\httpd\HTDOCS

Индекс по умолчанию (Default index). Это страница, которая будет отображаться, если пользователь набрал имя вашего сервера без указания имени файла. Обычно это index.htm или index.html.

Еmail администратора (Admin email). Это должен быть адрес электронной почты администратора web-сайта, используемый для каких-либо важных сообщений, например:

Andrew@mycompany.org.

Другое диалоговое окно для отметки — окно Стандарт CGI (Standard CGI; не путать с Windows CGI). Здесь устанавливается:

/CGI-BINc:\httpd\CGI-BIN

Это — каталог, используемый для программ CGI, как объяснялось в Разделе 2.5.

3.2.2 Apache

Программное обеспечение Apache — это пакет, используемый в серверах BIREME. Оно доступно для различных платформ с сайта Apache http://www.apache.org или с любого зеркального сайта. Версия для Microsoft Windows находится в директории /dist/httpd/binaries/win32, и на время написания последняя версия - apache_1.3.20_win32_no_src-r2.msi. После версии 1.3.17 она доступна как файл Microsoft Installer (расширение .MSI). Windows 2000 и МЕ идут с Installer Support, иначе Вы должны загрузить их.

Когда вы выполняете Инсталлятор (Installer), домен и имя вашего сервера и email- адрес берутся автоматически. (Вам может понадобиться исправить ваш email-адрес.) Если вы устанавливаете Apache под Windows NT, вы можете выбрать выполнять ли Apache как сервис или запускать его вручную.

По умолчанию он устанавливается в директорию /Program files/apache Group/Apache. Файл конфигурации httpd.conf находится в подкаталоге conf, и имеются другие подкаталоги cgi-bin и htdocs.

3.2.3 Internet Information Server (IIS — Информационный Сервер Internet)

IIS версии 3 идет вместе с операционной системой Windows NT Server. Версия 4 может использоваться с модулем опции NT 4, и версия 5 — с Windows 2000 Server. Мы не рекомендовали бы установить IIS специально для WWW ISIS, но если Вы уже имеете его, он может использоваться для WWW ISIS.

Когда Вы нажимаете значок Internet Service Manager, это вызывает "Microsoft Management Console", эта программа показывает сайты, управляемые вашим сервером. Нажмите правую кнопку мыши на “Web-сайт по умолчанию” ("Default Web Site"). Это вызовет набор диалоговых окон и одно для определения Домашнего каталога (Home Directory) сайта. Каталог CGI по умолчанию не создается, и вы можете создавать каталог или каталоги по желанию. Однако Вы должны щелкнуть правой кнопкой на имени каталога и установить разрешение Выполнять.

3.3 Лицензирование WWW ISIS

WWW ISIS версий 4 и 5 можно свободно загружать с web-сайта BIREME. Они будут работать, если у вас клиент (т.е. web-браузер) и сервер (т.е. WWW ISIS) на одном компьтере, и вы вызываете localhost на браузере. Однако если вы хотите использовать WWW ISIS по сети, будь то intranet или Internet, вам понадобится лицензия от BIREME. Это всего один файл. Он лицензирует программу на одном сервере на год и охватывает приложения, выпущенные в течение года. Программа фактически продолжит работать, и это законно, но любые новые функции, добавленные в течение года, больше не будут работать. Лицензия привязана к IP-адресу сервера, так что, обращаясь, вы должны указать IP-адрес.

Лицензия принимает вид файла wxis.lic, и это должно быть скопировано в тот же самый каталог, что и wxis.exe. При попытке обратиться к WWW ISIS по сети без этого представляющего файла, Вы получите сообщение об ошибке.

3.4 Установка WWW ISIS

Это очень легко.

Загрузите версию 4 или версию 5 WWW ISIS с web-сайта BIREME:

http://www.bireme.br/WWWISIS/I/download.htm

Заглавная I в имени каталога определяет англоязычную версию загружаемой страницы. Во время записи этой документации размер версии 4 — 295 КБ.

Выберете сохранить (save) программу (wxis.exe) на диске, не выполняя ее, и сохраните ее в папке, которую вы создали для программ CGI.

Если Вы купили лицензию для WWW ISIS, скопируйте файл wxis.lic, который Вам был послан с BIREME, в тот же самый каталог, что и wxis.exe.

3.5 Создание и загрузка баз данных ISIS

Как объяснялось в Главе 1, структура базы данных для WWW ISIS совместима со структурой CDS/ISIS. Поэтому Вы можете создавать базу данных в любой версии CDS/ISIS, чтобы использовать с WWW ISIS. Это, вероятно, наиболее удобный способ, если сначала вы обучаетесь WWW ISIS. Базы данных могут поддерживаться в любом каталоге на сервере, при условии, что:

(а) в вашем IsisScript есть параметр cipar, чтобы сообщать wxis, где найти базу данных (см. Раздел 4.7) и

(b) каталог имеет набор подходящих разрешений для предназначаемых вами действий над БД.

Если ваши данные содержат специальные символы, типа диакритических знаков, Вы должны будете установить файл gizmo (см. Раздел 4.8) для верного отображения их в web-браузере.

Утилита mx (см. Раздел 1.2) может использоваться, чтобы создать базу данных из файла ISO, включая индексные файлы. Это обеспечивает путь передачи данных между системой DOS или Windows и системой Linux или Unix — вам понадобится экспортировать базы данных из базы CDS/ISIS как файл ISO и импортировать его в систему WWW ISIS. Вы можете также создавать базу данных для использования с WWW ISIS из файла ISO, созданного другим библиотечным программным обеспечением. Заметим, что файл ISO должен быть в формате, создаваемом DOS-версией CDS/ISIS, т.е. с возвратом каретки после каждых 80 символов. Символы конца записи и конца поля могут быть значениями по умолчанию версии DOS, т.е. хэш символ (#), или значениями по умолчанию версии Windows (ASCII символы 30 и 29 соответственно).

Пакетный файл loadiso.bat нуждается в двух параметрах: название файла ISO и названия базы данных, которая будет создана, например

loadiso books jan.iso

Для базы данных WWW ISIS не нужна таблица определения полей (Field Definition Table). Однако, вам понадобится создать таблицу разделения полей (FST — Field Select Table), чтобы позволить поиск и один или больше форматов отображения данных. Они могут быть написаны в текстовом редакторе, если у Вас нет CDS/ISIS, и инвертированный файл может быть сформирован с другой утилитой, основанной на mx.exe, fullinv.bat. Здесь нужны три параметраДЕСЬ НЕОБХОДИМО ТРИ ПАРАМЕТРА: название базы данных, название FST и названия инвертированного файла. (Последние два имеют то же самое название, что и база данных в CDS/ISIS.) Например

fullinv books books.fst books


Глава 4
Введение в IsisScripts

Для ясности, в этой главе и Главе 5 тэги представлены полужирным шрифтом.

IsisScripts являются текстовыми файлами, и могут писаться только в текстовом редакторе или текстовом процессоре при условии, что Вы сохраняете файл как текст. Вы также можете использовать редактор, предназначенный для записи HTML или другого языка разметок, особенно если это позволит вам определять ваши собственные настроенные тэги.

4.1 Расширяемый Язык Разметок (XML)

Как объяснено в Разделе 2.4, IsisScript язык — приложение Расширяемого Языка Разметок (XML). Он похож на HTML, в котором элементы определяются с помощью тэгов, записанных в угловых скобках. Например в HTML заголовок второго уровня определяется как

<H2>Sources of further information</H2>

В IsisScript этот текст должен быть записан:

<display>Sources of further information</display>

Тэги IsisScript часто встречаются попарно, например <display> и <display>, указывающий начало и конец элемента. Тэги могут определять один или более атрибутов, каждый набор для некоторого значения со знаком “=”, например:

<field action=cgi tag=3020>

Тэги также могут быть вложены, то есть один элемент может формировать часть другого, например,

<display><pft>'Database name is ',v10</pft></display>

Здесь то, что должно выводиться определяется с помощью формата печати ISIS и заключено в тэги <pft> и </pft>. Если бы это не было записано как формат печати, символы v, 1 и 0 были бы выведены. Заметим в этом примере, что не допускается помещать текст между тэгами <display> и <pft> или между <display> и </pft>. Именно поэтому 'Database name is ' пишется как константа в формате печати.

4.2 IsisScript

Страница HTML является элементом, начинающимся с тэга <HTML> и заканчивающимся </HTML>. Isis Scripts начинается с тэга <IsisScript> и заканчивается </IsisScript>. Заметим, что в отличие от HTML, IsisScripts чувствителен к регистру — вы должны использовать прописные буквы I и S в тэгах.

Вы можете включить в тэг Isis Script имя, например:

<IsisScript name=MyFirstScript>

4.3 Тип содержимого (cоntent-type)

Любая программа CGI должна сообщить серверу, в каком виде она пытается отослать клиенту вывод. Обычно это документ HTML, т.е. text/html (хотя это могло бы быть например text/plain). Эта информация посылается как заголовок, определяющий "Content-type", который должен сопровождаться пустой строкой:

<display><pft>’Content-type: text/html’##</pft></display>

Эта инструкция должна быть записана в языке форматирования ISIS, с использованием ## (или /#) для создания пустой строки. Вы не можете использовать здесь элемент HTML <br>, потому что сервер еще не предполагает HTML.

Теперь Вы можете собрать законченный сценарий:

<IsisScript name=Hello>
<display><pft>’Content-type: text/html’##</pft></display>
<display>Hello World!</display>
</IsisScript>

Если вы сохраняете этот файл как hello.xis в вашем каталоге /cgi-bin, Вы можете попробовать его вывести, используя следующую web-страницу:

<HTML>
<BODY>
<A
HREF=http://localhost/cgi-bin/wxis.exe/?IsisScript=hello.xis>Run Hello
script</A>
</BODY>
</HTML>

4.4 Задачи

Сценарий может выполнять одну или несколько задач. Каждая задача начинается с тэга <do> и заканчивается тэгом </do>. Доступны следующие типы задач:

(а) <do task=mfnrange> проходит через базу данных запись за записью в пределах диапазона, указанного MFN;

(b) <do task=search> выполняет поиск в базе данных для указанного поискового выражения;

(c) <do task=keyrange> открывает доступ к инвертированному файлу. (Строки в инвертированном файле называются "ключами".);

(d) <do task=update> модифицирует базу данных, добавляя, удаляя или изменяя записи;

(e) <do task=list> оперирует на списке (например, полях, извлеченных из базы данных) быстрее, чем на обычной базе данных ISIS.

4.5 Параметры

В пределах задачи, Вы должны определить некоторые параметры, чтобы сообщить WXIS подробности задачи. Это делается с использованием тэгов <parm> и </parm>. Каждый параметр имеет атрибут имени и значение, указанное между тэгами, например:

<parm name=from>1</parm>

Критический параметр для большинства задач — название базы данных, которую нужно использовать, например

<parm name=db>cds</parm>

Справочное описание WWW ISIS сообщает Вам, какие параметры в какой задаче можно использовать.

4.6 Циклы (Loops)

Обычно в задаче, касающейся базы данных или списка, вы хотите применять одно и то же действие к каждому набору записей, например, отображать каждую запись, восстановленную (найденную) поиском или каждую строку в разделе инвертированного файла. Для задач mfnrange, search и keyrange это делается с использованием цикла — цикл возобновляется для каждой записи, пока не будет обработана последняя запись в наборе. Цикл определяется тэгами <loop> и </loop>. Для задачи модификация используются тэги <update> и </update>

Вы можете использовать цикл в сценарии hello.xis для вывода сообщения несколько раз (определяется параметром to). Это не нуждается в определении как задача, так как не работает на базе данных. Чтобы подчеркнуть начало и конец цикла, в примере он выровнен.

<IsisScript name=Hello>
<display><pft>’Content-type: text/html’##</pft></display>
<do>
<parm name = to>10</parm>
<loop>
<display>Hello world!<br></display>
</loop>
</do>
</IsisScript>

Простой сценарий для отображения MFN и первых десяти записей базы CDS, можно написать подобно этому.

<IsisScript name=ShowTen>
<display><pft>’Content-type: text/html’##</pft></display>
<do task = mfnrange>
<parm name=db>cds</parm>
<parm name=from>1</parm>
<parm name=to>10</parm>
<loop>
<display><pft>mfn,' — ',v24,'<br>'</pft></display>
</loop>
</do>
</IsisScript>

4.7 cipar

Пример выше предполагает, что база данных CDS сохраняется в том же каталоге, что и сценарий Isis. Обычно это не желательно — вы сохраняете базу (базы) в одном каталоге, а сценарии в каталоге /cgi-bin. Таким образом, Вам необходимо сообщить, где искать базу данных. Это делается с использованием параметра, называемого cipar. Удобнее поместить его в начале сценария перед задачей. Пример:

<parm name=cipar> cds.*=c:\bases\cds\cds.*</parm>

Это указывает, что когда файлы с именем cds и любым расширением упоминаются в сценарии, она должны быть найдены как файлы с тем же именем в каталоге c:\bases\cds. (В технических строках вы видите, что логическое имя cds.* эквивалентно физическому имени c:\bases\cds\cds.*) Любые другие файлы, не находящиеся в каталоге cgi-bin, должны быть определены таким же образом. Чтобы определить больше чем одного соответствие, вы можете использовать тэг <pft>, делая каждое константой, например:

<parm name=cipar>
<pft>
‘cds.*=c:\bases\cds\cds.*’/
‘short.pft=c:\bases\cds\short.pft’/
‘error.htm=c:\httpd\docs\error.htm’/
</pft>
</parm>

4.8 gizmo

Другой параметр — gizmo. Он создает ссылку к базе данных gizmo. Для примера, если у вас есть база данных gizmo, называемая GIZ1, строка должна читаться:

<parm name=gizmo>giz1</parm>

База данных gizmo используется для преобразования символа или строки символов в главной базе данных в другой символ или строку символов, чтобы вывести на экран. Чаще всего она используется для преобразования "специальных символов " типа й, з или é, ç, Ñ в текстовые представления, которые будут верно отображаться в HTML (&eacute; &ccedil; и &Ntilde;). Текстовая версия может быть найдена в книгах по HTML.

База данных gizmo является обычной вазой CDS/ISIS с этими двумя определенными полями:

1Входное значение (Input value)

2Выходное значение (Output value)

Рабочий лист ввода данных и форма отображения данных на дисплее могут быть самыми основными и вам не нужна будет Таблица Разделения полей. Каждый специальный символ и его текстовая версия вводятся затем в отдельную запись в базе данных, например:

MFN=1

1: é

2: &eacute;

MFN=2

1: ç

2: &ccedil;

Заметим, что размещение файла gizmo должно определяться параметром cipar, например:

<parm name=cipar> giz1.*=c:\bases\giz1.*</parm>

4.9 Управление потоком данных

Частое требование в IsisScripts, как в других компьютерных программах, — выполнять различные действия в зависимости от результата выполнения некоторой задачи (“условия”). Например, мы хотим предоставить пользователю на выбор два способа поиска: (а) вводя логическое выражение или (b) выбирая от индексного файла. Если выбран (a), мы представляем одну форму поиска (search.htm), если выбран (b), мы представляем другую форму (index.htm). Пользователь выбирает, нажимая кнопку, которая сообщает переменной “choice” (“выбор”) значение BOOL или значение INDEX. Это значение помещается IsisScript в поле 5001, используя инструкцию:

<field action=cgi tag=5001>choice</field>

Мы можем теперь переходить к соответствующей части сценария, используя элемент потока с набором атрибутов воздействий, для "jump", то есть:

<flow action=jump><pft>v5001</pft></flow>

Это вызывает переход к метке, чье название находится в поле 5001, то есть к BOOL или к INDEX. Метки обозначаются в сценарии как элементы label:

<label>BOOL</label>

(инструкция для отображения SEARCH.HTM)

<label>INDEX</label>

(инструкция для отображения INDEX.HTM)

Инструкции, для отображения формы слегка усложнены и здесь нет точки. Однако, мы должны удостовериться, что после того как отображен SEARCH.HTM , WXIS не продолжает обрабатывать сценарий и также отображать INDEX.HTM. Это осуществляется другим элементом потока — exit, который заканчивает выполнение IsisScript. Так что мы имеем структуру:

<flow action=jump><pft>v5001</pft></flow>
<label>BOOL</label>
(statement to display search.htm)
<flow action=exit>1</flow>
<label>
INDEX</label>
(statement to display index.htm)
<flow action=exit>2</flow>

(Аргумент элемента flow, 1 или 2 в этом примере, является кодом возврата, который посылается ОС.)

4.10 Комментарии

При написании IsisScripts хорошо включать в текст описание того, что происходит. Это поможет кому-либо еще понять ваши сценарии, так же как и вам, при попытке разобраться в них спустя некоторое время. Комментарии пишутся в тэге <!- — - — >, например:

<!- — Write the document header - — >
<display><pft>
’Content-type: text/html’##</pft></display>

Такие комментарии игнорируются WWW ISIS — они — только для человека!


Глава 5
Переменные CGI и переменные среды

5.1 Общий шлюзовой интерфейс (CGI)

Если вы хотите, чтобы сценарий всегда оперировал с теми же данными и производил те же результаты, Вы можете определить значения любых необходимых параметров непосредственно в сценарии. Пример в разделе 4.6 всегда работает на базе данных cds, всегда выводит записи с 1 до 10 и всегда использует формат вывода mfn, черточку и заголовок (поле 24).

Чаще вам нужно, чтобы пользователь мог управлять некоторыми параметрами, например, определять, какие строки выводить и, возможно, какой формат использовать. Для этого вам необходимо:

  1. представлять пользователю форму, написанную на HTML с некоторыми текстовыми полями или другими средствами управления;
  2. читать значения, которые он или она выбирает, и
  3. использовать их как параметры в IsisScript. Третья операция осуществляется с помощью среды CGI (Common Gateway Interface).

5.2 Входная форма

Форма, которая появляется как страница (или часть страницы) в web-браузере, будет написана на HTML. Она начинается с элемента FORM, который имеет атрибуты ACTION и METHOD и заканчивается </FORM>. Атрибут ACTION определяет, что должно произойти при представлении формы, т.е при выполнении wxis.exe с уместным IsisScript. METHOD определяет, каким образом данные формы посылаются серверу. Наиболее обычные значения — POST и GET; POST — теперь привилегированный метод, и использование GET осуждается.

Чтобы позволять ввод пользователем, форма должна содержать один или больше следующих средств управления.

( а) Текстовое поле

Это поле, в котором пользователь может набирать некоторый текст, например

Введите ваш поиск (Enter your search):

В HTML это должно быть закодировано:

Enter your search

<INPUT TYPE=text NAME=expression>

Независимо от того, что пользователь набирает в поле, существует значение, которое будет назначаться переменной CGI, названное “expression” (выражение).

Вы можете определить ширину текстового поля (в символах), например

<INPUT TYPE=text NAME=db SIZE=10>

( b) Текстовая область

Текстовое поле позволяет пользователю вводить только одиночную строку данных: нажатие клавиши ENTER перемещает к следующему элементу управления. Если вы хотите позволить вводить больше одной строки, как местонахождение повторяющегося поля, вам необходима текстовая область. Например:

Поле 2:

Это должно быть закодировано (строка HTML кода):

<TEXTAREA rows=3 cols=30 name=field2></TEXTAREA>

Текст, который пользователь вводит в текстовой области, будет назначен переменной “field2”. Rows=3 определяет высоту текстовой области, но текст прокручивается, так что можно вводить больше чем 3 строки. Cols=30 делает область шириной в тридцать символов.

(с) Список опций

Это — раскрывающийся список, в котором пользователь выбирать из определенного набора значений, например,

Выбор вашего формата отображения:

Когда пользователь нажимает на стрелку, открывается список

В HTML это должно быть записано:

Выбор вашего формата отображения:

<SELECT NAME=format>
<OPTION value=1> Short
<OPTION value=2 SELECTED> Medium
<OPTION value=3> Long
</SELECT>

Когда пользователь выбирает одну из опций, CGI-переменная “format” устанавливается в состояние 1, 2 или 3, сообщая выбранное название. То, что показывается до выбора пользователя, устанавливается атрибутом SELECTED.

Включая атрибут MULTIPLE в элемент SELECT, Вы можете позволить пользователю выбирать больше чем одно значение.

(d) Флажок (Check box)

Это поле, которое пользователь может “проверять” (т.е нажимать), чтобы выбрать да/нет (yes/no) или правда/ложь (true/false), например:

[ ] Искать только заголовки.(Search titles only)

Search titles only

В HTML это кодируется:

<INPUT TYPE=checkbox NAME=titles>Search titles only

( е) "Радио" кнопка

Это позволяет пользователю выбирать только что-то одно из предложенного списка опций. Поскольку форма должна показывать все параметры все время, она подходит только там, где немного возможностей. Например:

Boolean search
Index search

В HTML это выглядит так:

Boolean search

<INPUT TYPE=radio NAME=searchtype VALUE=BOOL CHECKED> Boolean search

Index search

<INPUT TYPE=radio NAME=searchtype VALUE=INDEX> Index search

Переменной CGI “searchtype” (вид поиска) будет присваиваться значение BOOL или INDEX в зависимости от того, какая опция установлена. Атрибут “CHECKED” означает, что эта кнопка выбирается по умолчанию.

(f) Скрытые переменные

Элемент INPUT с TYPE=hidden определяет невидимое входное поле, чье значение будет послано наряду с другими значениями формы, при ее представлении. Он может использоваться, чтобы посылать wxis.exe некоторые необходимые для выполнения значения (например, имя IsisScript):

<INPUT TYPE=hidden NAME=IsisScript VALUE=mysearch.xis>.

Другое использование должно передать информацию от одной формы к другой, без того, чтобы пользователь перепечатывал ее.

5.3 Чтение значений

Форма всегда должна содержать другое средство управления, кнопку Submi (представить на рассмотрение), чтобы посылать данные формы назад серверу и выполнить действие, указанное в элементе формы. Текст на кнопке пишется по вашему желанию, например:

В HTML это кодируется:

<INPUT TYPE=submit VALUE="proceed"<

5.4 Использование значений в IsisScript

Для использования значения форм в IsisScript, они должны читаться из среды CGI и сохраняться в " виртуальной записи" WWW ISIS . Это — запись, поддержанная в памяти, фактически не являющаяся частью базы, к которой обращаются, и которая может содержать любые выбранные вами поля. Каждое значение читается в используемом элементе field с атрибутом cgi action и атрибутом tag, для выбора номера поля, например:

<field action=cgi tag=3010> expression </field>
<field action=cgi tag=3020>format</field>

Это означает, что независимо от того, какое выражение ввел пользователь, оно будет сохранено в поле 3010 и формат, который он / она выбрал из списка опции, будет сохранен в поле 3020. Вы не можете использовать значения из CGI без предворителього чтения их в виртуальной записи. Переменные CGI могут читаться где-нибудь в IsisScript — Вам не нужно читать им все в начале.

Как только они прочтутся, вы можете использовать значения в элементе parm, используя формат вывода ISIS между тэгами <pft> и </pft>, например:

<parm name=expression><pft>v3010</pft></parm>

Таким образом, путь, по которому вводится значение в web-форму, действует на работу WWW ISIS так:

Текст в форме — > переменная CGI — > поле в виртуальной записи — > параметр IsisScript

5.5 Контекст переменных

Обычно вы читаете значения из среды CGI в поля виртуальной записи вне цикла. В пределах цикла Вы работаете через реальные записи базы данных, и не можете обращаться к виртуальной записи. Таким образом, Вы должны импортировать переменные, к которым желаете обратиться в пределах цикла, используя атрибут элемента поля action=import, например:

<loop>
<field action=import tag=3020>3020</field>

</loop>

Заметьте, что здесь символ v в определении поля 3020 должен быть опущен.

Значение поля 3020 может затем использоваться в цикле для контроля формата выводы, например:

<loop>
<field action=import tag=3020>3020</field>
<display><pft>
if v3020=’1’ then @short.pft else if v3020=’2’ then @medium.pft fi fi
</pft></display>
</loop>

(Чтобы работал этот пример, положение short.pft and medium.pft должно быть определено в параметре cipar.)

5.6 Переменные среды

Наряду с чтением значений из формы HTML, вы можете читать некоторые “переменные среды”, значения которых предоставляет WXIS во время работы. Вот некоторые примеры:

  1. Isis_Current. Это — текущий индекс обработки цикла, т.е после каждого прохождения цикла значение индекса увеличивается, принимая значения 1, 2, 3, и так далее. Если задача — mfnrange , то это будет эквивалентно MFN обрабатываемой записи, если же задача — search, 1 будет для первой восстановленной записи, 2 для второй и так далее.
  2. Isis_Total. Если задача — mfnrange, это будет число записей в базе данных. Если задача — search, то это будет общее число найденных записей. Для вывода результатов как “1-ая запись из 6”, “2 запись из 6”, вы можете использовать Isis_Current и эту переменную, как показано в Разделе 6.2е. Вы также можете проверять нулевые найденные записи и выводить соответствующее сообщение.
  3. Isis_Status. Эта переменная обеспечивает способ проверки того, что работа с WXIS завершена успешно. Это должно проверяться после завершения цикла. 0 означает успех, величина больше 0 — ошибку.

Подобно переменным CGI, переменные среды Isis должны копироваться в нумерованные поля. Это делается с помощью элемента field с набором атрибутов для определения, например:

<field action=define tag=1001>Isis_Current</field>
<field
action=define tag=1002>Isis_Total</field>
<field
action=define tag=1020>Isis_Status</field>

В WWW ISIS версии 3 переменные среды назначались пронумерованным полям автоматически. В версии 4 вы должны назначать их, как в примере выше. Нет ничего особого для тэгов 1001, 1002 и 1020 — только то, что они использовались для этих значений в версии 3.

Больше об использовании переменных среды мы увидим в Главе 6.


Глава 6
Выполнение поиска и отображение результатов

Вероятно, более частое использование WWW ISIS должно обеспечить пользователям интерактивный каталог для поиска по Всемирной паутине. Мы рассмотрим простой сценарий для выполнения поиска, и затем то, как можно внести некоторые усовершенствования.

6.1 Простой сценарий поиска

Мы уже видели в разделе 5.2, как создается форма в HTML. Для осуществления поиска будет текстовое поле для поискового выражения и кнопка представления. Страница поиска должна быть написана подобно этой:

<HTML>
<
HEAD>
<
TITLE>My search form</TITLE>
</HEAD>
<BODY>
<
H2>Простой пример поиска</H2>
Please enter your search......
<BR>
<
FORM ACTION="http://localhost/cgi-bin/wxis.exe/" METHOD=post>
<INPUT TYPE=hidden NAME=IsisScript VALUE="mysearch.xis">
<INPUT TYPE=text NAME=searchspec>
<
INPUT TYPE=submit NAME=mysubmit VALUE="Do search">
</FORM>
</BODY>
</HTML>

Тело программы содержит форму с набором действий для работы wxis.exe и метод обмена набора данных для переноса. Значение параметра IsisScrip, определяющее имя сценария, посылается как скрытое значение. Далее находится текстовое поле, и какую бы строку поиска пользователь ни набрал, полю будет назначена переменная CGI “searchspec”. И наконец — кнопка представления с надписью “выполнять поиск” (“Do search”).

IsisScrip может быть написан Блокноте или другом текстовом редакторе.

<IsisScript name=mysearch>
<display><pft>’Content-type: text/html’##</pft></display>
<parm name=cipar> cds*=c:/bases/cds/cds.*</parm>
<field action=cgi tag=3020>searchspec</field>

Объяснение к этим строкам дано выше: начало сценария, пересылка заголовка HTML, определение местонахождения базы и копирование значения переменной “searchspec” в поле 3020 виртуальной записи. Теперь приступим к поисковой задаче.

<do task=search>
<parm name=db>cds</parm>
<parm name=expression><pft>v3020</pft></parm>

Должны быть определены два параметра: db должен содержать имя базы данных, expression — поисковое выражение (читается из поля 3020 в виртуальной записи).

Теперь нам нужно, чтобы цикл выводил каждую восстановленную запись, используя формат печати CDS:

<loop>
<display><pft>@CDS.PFT</pft></display>
</loop>

В языке форматирования ISIS имя формата определяется приписыванием знака “@”. WXIS.EXE должен быть способен найти этот файл с помощью параметра cipar.

Теперь мы можем закрыть сценарий:

</do>
</
IsisScript>

Полный сценарий может быть сохранен в файле mysearch.xis в каталоге cgi, определенном для вашего сервера. При условии, что вы имеете базу данных CDS в каталоге c:\bases\cds с форматом печати CDS.PFT, вы должны быть способны использовать форму для поиска и вывода результатов в браузер. Удостоверитесь, что вы запускаете ваш web-сервер, и что используете в URL http://localhost, а не file://c.

6.2 Расширение (улучшение вида) вывода результатов

Если вы используете CDS.PFT (который датируется с дней DOS- версии CDS/ISIS), вы обнаружите, что результаты выглядят не очень привлекательно. Вы можете улучшать формат для использования в web-браузере, включая некоторые тэги HTML как константы.

(а) Интервал (Spacing)

Для создания новых или пустых строк, вы можете использовать следующие тэги:

<BR> для создания новой строки

<P> для создания нового абзаца

<HR> для создания горизонтальной строки

(b) Символьное форматирование

Вы можете выводить текст курсивом или полужирным шрифтом, используя эти тэги:

<B> и </B> для вывода полей или констант полужирным шрифтом

<I> и </I> для вывода полей или констант курсивом.

Для изменения вида текста вы также можете использовать атрибуты элемента FONT, например:

<FONT FACE=”arial” COLOR=”#00CC00”>

Это изменит шрифт на Ariel и цвет текста на голубой. (Обратите внимание на американское написание слова color). Таким образом, мы можем делать просмотр формата CDS.PFT немного более интересным, изменяя его:

'<B>',MFN(4),'</B> — ',V12,'<FONT FACE = arial COLOR=red>', V24,'</FONT>', (|(|V76^Z|: |,V76^*|) |),V70+|; |,V25,V26,V30,|(|V44|)|,V50,/|// |V71/|// |V72/|// |V74/

"<BR><I>KEYWORDS: “,V69, '</I><HR>'

Теперь мы отображаем MFN полужирным шрифтом, заголовок — красном в шрифте Arial (который отменяется после отображения поля 24), новую строку перед ключевыми словами (которые показываются с названием КЛЮЧЕВЫЕ СЛОВА курсивом) и горизонтальную строке между записями. Результаты в черно-белом виде выглядят так:

0005 — Anti-transpirants как исследовательский инструмент для изучения действия водяного давления на поведение растений. . Gale, J.; Poljakoff-Mayber, A. 1965. стр. 269-274, illus. (Методология эко-физики растения: слушания Симпозиума Монпелье) Incl. bibl.

KEYWORDS: физиология растений; влажность почвы; испарение растений; измерение и приборы.

Если вы хотите изменить шрифт на Times New Roman, вы должны писать его название (содержащее более одного слова) в кавычках:

<FONT face=”Times New Roman”>

Это хорошо работает в пределах безоговорочной константы (заключенной в одиночные кавычки). Однако, двойные кавычки также используются для обозначения условной константы в языке форматирования CDS/ISIS, и может быть лучше использовать </FONT>, для возврата к заданному по умолчанию шрифту.

(с) Фон

Вы можете менять цвет фона при выводе, используя атрибут BGCOLOR элемента BODY. Это должно быть сделано в IsisScript, сразу после заголовка HTML, например

<IsisScript name=mysearch>
<display><pft>'Content-type: text/html'###</pft></display>
<display><BODY BGCOLOR="FFFFCC"></display>

(d) Пролог (Prolog) и эпилог (Epilog)

Версия 3 WWW ISIS имела средство, чтобы определить формат для вывода чего-то перед результатами (Пролог) и после результатов (Эпилог). В IsisScript для вывода текста в любой точке вы можете использовать элемент DISPLAY, и вы можете создавать пролог и эпилог так:

<IsisScript name=mysearch>
<display><pft>'Content-type: text/html'###</pft></display>
<field action=cgi tag=3020>searchspec</field>
<parm name=cipar>cds.*=c:\isis\data\cds.*</parm>
<display><H2>Start of results</H2></display>
<do task=search>
<display><H2>End of results</H2></display>
</IsisScript>

(е) Нумерация результатов.

При желании вы можете пронумеровать найденные записи так: “1-ая запись из 6”, “2 запись из 6” и т.д. Для этого Вы можете использовать две Переменных среды, упомянутые в Разделе 5.6. Isis_Total — общее количество восстановленных записей, а Isis_Current — текущая запись, обрабатываемая циклом. Сначала переменные должны быть скопированы в пронумерованные поля:

<do task=search>

<field action=define tag=1001>Isis_Current</field>
<field action=define tag=1002>Isis_Total</field>

Они затем могут отображаться для каждой записи в цикле:

<loop>
<display><pft>’Record ‘,v1001,’ of ‘, v1002 </pft></display>

Заметьте, что вам нужен <pft>…</pft> в элементе отображения, чтобы получить содержания полей 1001 и 1002.

(f) Отображение числа нажатий

Вместо “1-ая запись из 6” вы, скорее захотите показывать перед отображением любых записей общее число нажатий. Так как это число доступно до начала выполнения цикла, вы должны выводить его только как часть первой записи. Подразумевая, что вы определили тэги 1001 и 1002, как показано выше, вы можете, глядя на значение v1001, проверить для первой записи:

<loop>
<display><pft>if val(v1001) = 1 then
'Records found: ',v1002,'<br>' fi </pft></display>
<display><pft>@cds.pft</pft></display>
</loop>

Значение в поле 1002 доступно после завершения цикла, так что, если вы хотите выводить число нажатий после всех записей, вы можете поместить элемент отображения после цикла.

(g) Вывод сообщения, если записи не найдены.

Если в результате поиска записи не найдены, то ничего отображаться не будет, и также не будет сообщаться в чем проблема. Так что после цикла, Вы можете поставить:

<display><pft>if val(v1002)=0 then

‘никаких записей не найдено’ fi</pft></display>

Если вы хотите, то можете выводить на экран полную информацию о том, почему это произошло (например, пользователь допустил ошибки в поисковой строке, или использовал неправильный формат и т.д.) Вы можете составить HTML-страницу для объяснения всего этого и назвать ее NOHITS.HTM. Тогда вы можете отображать ее вместо довольно краткого: “Никаких записей не найдено”.

Способ включать HTML страницу в пределах IsisScript состоит в том, чтобы использовать ключевое слово cat. (Это происходит от команды из Unix, которая используется для связи текстовых файлов.)

<display><pft>if val(v1002)=0 then cat(NOHITS.HTM) fi </pft> </display>

Не забудьте упоминать NOHITS.HTM в параметре cipar, иначе WXIS не сможет найти его.

(h) Вывод результатов в таблицу

Четкий способ отображать результаты поиска может быть подобен этому:

MFN:

3

Author:

Jones, John

Title:

Balliol College: a history

Publisher:

Oxford University Press

Вы можете делать это, применяя таблицу в вашем формате отображения. В вышеупомянутом примере, каждая строка таблицы содержит два элемента данных — константа, которая является названием поля и содержание поля. Самая простая форма отображения может быть написана так:

'<TABLE>
<TR> <TD> MFN: </TD> <TD>' mfn, '</TD> </TR>
<TR> <TD> Author: </TD> <TD>' v70, '</TD> </TR>
<TR> <TD> Title: </TD> <TD>' v24, '</TD> </TR>
<TR> <TD> Publisher: </TD> <TD>' v26, '</TD> </TR>
</TABLE>'

Заметьте, что все кроме переменных, указывающих поля данных — часть константы. Таблица заключается в <TABLE>…</TABLE>, каждая строка заключается в <TR>…</TR>, а ячейка данных в <TD>…</TD>. Вы можете улучшить формат, определяя повторения авторского поля и выравнивая метки над ячейками. Поскольку первый столбец одинаков для каждого отчета, вам не нужно устанавливать размеры столбца.

Или вы хотите выводить таблицу, в которой каждый отчет располагается в строке, например:

00011

Roberts, B.

Restaurant management

00012

Rimmington, E.

Singing in choirs

00013

Gough, M.P.

Space science

В IsisScript вы должны открыть таблицу перед циклом, и закрыть после него:

<display><TABLE BORDER></display>
<loop>
<display><pft>@tabular.pft</pft></display>
</loop>
<display></TABLE></display>

Размеры столбца могут меняться для каждого отчета. Поэтому вы должны установить в формате размеры столбца. (Использование процентов от допустимой ширины означает, что таблица будет выводиться корректно на экранах с разной разрешающей способностью). Табулированный формат печати можно записать так:

'<TR><TD WIDTH=10% ALIGN=left ALIGN=top>',mfn,'</TD>
<TD WIDTH=50% ALIGN=left VALIGN=top>', if a(v70)
then '-' fi, (v70 '<BR>') '</TD>
<TD WIDTH=40% ALIGN=left ALIGN=top>',v24,'</TD></TR>'

В этом примере также показано использование атрибутов ALIGN и VALIGN для позиционирования данных в ячейке. Проверка для отсутствия данных в поле 70 и вывод прочерка, если это так, значит, что ячейка будет всегда присутствовать во втором столбце. Повторяемая группа, состоящая из v70 и постоянной <BR>, используется, чтобы поместить каждое поле на отдельной строке — обычная в форма CDS/ISIS (v70 /) не будет работать в WWW ISIS.

6.3 Расширение формы поиска

Вместо одного поля, куда пользователь вводит свое поисковое выражение, было бы хорошо иметь поля для каждой строки и выплывающее меню операторов, т.е.

Term 1: Term 2:

Код для создания этой формы:

<HTML>
<BODY>
<FORM action="http://localhost/cgi-bin/wxis.exe/" method=post>
<INPUT type=hidden name=IsisScript value="mysearch2.xis">
Term 1:<INPUT type = text NAME = term1>
<SELECT NAME=operator>
<OPTION VALUE=* SELECTED>AND
<OPTION VALUE=+>OR
<OPTION VALUE=^>AND NOT
</SELECT>
Term 2:<INPUT type = text NAME = term2>
<INPUT TYPE=SUBMIT VALUE = "Search">
</FORM>
</BODY>
</HTML>

Три значения, выбранные пользователем, передаются среде CGI: term1 — первый поисковый термин, term2 — второй поисковый термин, и operator — оператор, выбираемый в выплывающем списке. В коде HTML для этого списка VALUE — значение, передаваемое CGI, а текст после тэга — то, что выводится на экран.

Программу wxis.exe связывают с IsisScript mysearch2.xis. Это выглядит так:

<IsisScript name=mysearch2>
<display><pft>'Content-type: text/html'###</pft></display>
<field action = cgi tag = 3020>term1</field>
<field action = cgi tag = 3021>operator</field>
<field action = cgi tag = 3022>term2</field>
<parm name=cipar>cds.*=c:\isis\data\cds.*</parm>
<display><H2>Start of results</H2></display>
<do task=search>
<parm name = db>cds</parm>
<parm name = expression><pft>v3020,if v3022<>'' then ' ',v3021,'
',v3022 fi</pft></parm>
<loop>
<display><pft>'mfn=',mfn,'<BR><B>',v24'<HR><B>'</pft></display>
</loop>
</do>
<display><H2>End of results</H2></display>
</IsisScript>

Значения трех переменных CGI устанавливается в поля 3020, 3021 и 3022. они используются для формирования поискового выражения, с пробелом до и после оператора. В случае, если term2 не представляется, условие “if” используется чтобы добавить оператор и term2 только, если term2 не пуст.

Другое расширение для поисковой формы должно иметь различные текстовые поля для разных полей, например:

Author
Title     

Вы можете захотеть создать условие для различных операторов, используемое чтобы связать те строки, но пока мы предположим, что они должны быть связаны только AND. Содержанию полей будут назначены на переменные, которые мы назовем “author” и “title”. В базе данных CDS они сообщаются полям 70 и 24.

В IsisScript мы копируем их в поля 3070 и 3024:

<field action = cgi tag = 3070>author</field>
<field action = cgi tag = 3024>title</field>

В построении поискового выражения, мы должны проверить, было ли заполнено каждое текстовое поле. Нам нужен только оператор AND, если присутствуют оба поля. Мы можем сделать это, как показано ниже:

<parm name=expression><pft>
if v3020<>'' then v3020,'/(70)' fi,
if v3020<>'' and v3024<>'' then '*' fi
if v3024<>'' then v3024,'/(24)'
</pft></parm>

заметьте, что спецификаторы полей, такие как /(70), не поддерживаются в версии 4 WWW ISIS.


Глава 7
Доступ к инвертированному файлу

Эта глава описывает простой сценарий для отображения инвертированного (или индексного) файла, позволяющий пользователю где запускать файл и сколько строк выводить.

7.1 Форма для отображения части индексного файла.

Это — простая форма, позволяющая пользователю вводить:

(а) где начинать отображение (назначается переменной startterm )

(b) сколько строк выводить (назначается переменной howmany)

При представлении формы, она wxis.exe со сценарием myindex.xis

<HTML>
<HEAD>
<TITLE>My index form</TITLE>
</HEAD>
<BODY>
<H2>Show part of index</H2>
<FORM ACTION="http://localhost/cgi-bin/wxis.exe" METHOD=post>
<INPUT TYPE=hidden NAME=IsisScript VALUE="myindex.xis">

Где начинать:

<input type=text name=startterm>
<p>

Сколько строк выводить:

<input type=text name=howmany>
<p>
<INPUT TYPE=submit value="Show index">
</FORM>
</BODY>
</HTML>

7.2 IsisScript для отображения индекса

Сценарий начинается обычным способом. Значения startterm и howmany читаются из среды CGI в поля 4001 и 4002. затем выводится заголовок.

IsisScript name=myindex>
<display><pft>'Content-type: text/html'/#</pft></display>
<parm name=cipar><pft>'cds.*=c:\isis\data\cds.*'/ </pft></parm>
<field action=cgi tag=4001>startterm</field>
<field action=cgi tag=4002>howmany</field>
<display><h2>Часть индексного файла</h2></display>

Задача для работы индексного файла — "keyrange.

<do task=keyrange>

Значения, назначаемые параметрам, для этой задачи — db, from и count:

<parm name=db>cds</parm>
<parm name=from><pft>v4001</pft></parm>
<parm name=count><pft>v4002</pft></parm>

Ключ непосредственно (т.е строка в индексе) назначается полю1, а номер позиции — полю 2:

<field action=define tag=1>Isis_Key</field>
<field action=define tag=2>Isis_Postings</field>

Чтобы выровнять номера регистраций, отображение сделано в форме таблицы:

<display><table></display>

Теперь мы через цикл определяем ключи, и для каждого выводим строку в таблице (между<tr> и </tr>) с двумя ячейками (между<td> и </td>). Первая ячейка содержит значение поля 1, и вторая — значение поля 2 (как определено выше, не в записях базы данных).

<loop>
<display><pft>'<tr><td>',v1,'</td><td>',v2,'</td></tr>'</pft></display>
</loop>

Это завершает таблицу и сценарий:

<display></table><h2>Конец отображения</h2></display>
</do>
</IsisScript>

Вот пример вывода:

Часть индексного файла
PACIFIC ISLANDS1
PAKISTAN8
PAR 2
PARASITES 2
PART 1
PART-TIME COURSES 1
PATEL, A.M.1
PAYS3
PECS1
PERDU1
Конец вывода


Глава 8
Создание и редактирование записей

Наряду с поиском базы данных через интерфейс WWW, WWW ISIS позволяет пользователям добавлять новые записи или редактировать существующие. Добавление новых библиографических записей может быть полезно, если вы имеете объединенную систему каталогизации, или может использоваться для web-пользователей, чтобы добавить их имена и адреса в базу данных для размещения заказов или в список адресатов. Редактирование записей будет полезным, если Вы хотите, чтобы библиотеки могли добавлять свои записи к списку периодических изданий, или добавлять комментарии или обзоры к отчетам документа. Если позволить пользователям добавлять или менять библиографические записи, вероятно, будет необходима некоторая защита с использованием пароля.

8.1 Задача модификации записей

Создание и редактирование записей в WWW ISIS достигается использованием задачи Модификации (Update). Она начинается с <do task=update>, затем должны быть определены три параметра: имя базы, имя Таблицы Выбора Полей (FST) для модификации инвертированного (индексного) файла и MFN записи. Для новых записей, которые еще не расположены в MFN, используется значение "New". В CDS/ISIS FST должен иметь то же имя, что и база данных, но определение его здесь гарантирует, что новые и измененные записи будут инвертированы. Пример создания новой записи приведен ниже:

<do task=update>
<parm name=db>cds</parm>
<parm name=fst><pft>cat('cds.fst')</pft></parm>
<parm name=mfn>New</parm>

Команды модификации для этой записи написаны между тэгами <update> и </update> (а не <loop> и </loop>, так как выполнение цикла не включается).

8.2 Блокировка (захват) записей

Если Вы имеете многопользовательскую базу данных, важно удостовериться, что, когда один пользователь делает изменения в записи, другой пользователь не может вводить противоречивые изменения. Первый пользователь должен блокировать (lock) запись, в то время как он или она делает изменения так, чтобы другие пользователи были исключены. Когда изменения закончены, запись снова должна быть разблокирована (uplocked). Если это новая запись, команда блокировки не нужна, но требуется разблокировка. Блокировка достигается с помощью тэга<write>:

<write>Lock</write>дает монопольный доступ к записи

<write>Unlock</write>освобождает запись

<write>NoUnlock</write>не удаляет блокировку, если она есть — оставляет заблокированную информацию такой, какая она есть.

<write>Delete</write>удаляет запись.

Команда <write> применима даже в системе с одним пользователем. В базе не делается ни каких изменений, если они не включены.

Блокировка информации обычно записывается в поле 1101 записи, но это можно менять. Поле 1101 не является повторяющимся полем, и может поддерживать только одно значение. Вы также можете контролировать длительность блокировки в секундах:

<parm name=expire>3600</parm>

Вы можете запрашивать логин пользователя на форме модификации и затем использовать ID пользователя как блокировку, или получать значение из переменной среды REMOTE_ADDR:

<parm name=lockid><pft>getenv('REMOTE_ADDR')</pft></parm>

Механизм блокировки отличается от того, что используется в CDS/ISIS или Winisis, так что вы не должны использовать эти пакеты для модификации базы данных одновременно с WWW ISIS.

8.3 Форма для создания новых записей

Мы рассмотрели простые примеры, где пользователю позволено только изменять записи двух полей — 24 для Title и 70 для Author (повторяющееся), — но можно легко добавить больше записей:

<HTML>
<HEAD>
<TITLE>My data entry form</TITLE>
</HEAD>
<BODY>
<H2>Enter a new record — </H2>
<FORM ACTION="http://localhost/cgi-bin/wxis.exe" METHOD=post>
<INPUT TYPE=hidden NAME=IsisScript VALUE="dentry.xis">
Title:
<INPUT TYPE=text NAME=field24 SIZE=40>
<p>
Author(s):
<TEXTAREA ROWS=3 COLS=40 NAME=field70> </TEXTAREA>
<p>
<INPUT TYPE=submit value="Create record">
</FORM>
</BODY>
</HTML>

Эта форма не очень отличается от поисковой формы в Разделе 6.1. Она содержит строку, куда пользователь вводит Заголовок (Title) и текстовую область высотой в три строки для ввода Авторов (Authors). (Можно ввести более трех авторов, так как поле можно прокручивать.) Внешний вид формы можно улучшить, поставив подсказки и окна так, чтобы они выстроились в линию. Выбор названий переменных "field24" и "field70" произволен — они могут называться "fred" and "Jean", но выбранные имена напоминают, в какие поля входят данные. Как и в поисковой форме, имя IsisScript пересылается как скрытая переменная.

8.4 IsisScript для создания новых записей

Сценарий начинается с некоторого довольно стандартного материала:

<IsisScript name=dentry>
<display><pft>'Content-type: text/html'/#</pft></display>
<parm name=cipar><pft>'cds.*=c:\isis\data\cds.*',/
'htm.pft=c:\isis\data\web.pft'</pft></parm>

Затем идет задача модификации:

<do task=update>
<parm name=db>cds</parm>
<parm name=fst><pft>cat('cds.fst')</pft></parm>
<parm name=mfn>New</parm>
<field action=define tag=1102>Isis_Status</field>

Имени базы данных назначается параметр "db". Параметр "fst" необходим, чтобы определить, какая Таблица выбора Полей должна использоваться, чтобы инвертировать новую запись. Параметр "mfn" устанавливается для New — чтобы создать новую запись. Затем чтобы содержать переменную среды Isis_Status, определяется поле с отметкой 1102 (см. Раздел 5.6).

Теперь мы можем действия модификации для новой записи:

<update>
<field action=cgi tag=24>field24</field>
<field action=cgi tag=70>field70</field>
<field action=replace tag=70 split=occ><pft>(v70/)</pft></field>
<write>Unlock</write>

Данные для полей 24 и 70 получены из среды CGI (использование тех же самых названий, что и в поле ввода данных!). Существует сложность с полем 70 в том случае, если оно может содержать несколько строк. Action=replace разбивает данные в отдельные местонахождения, используя концепцию повторяющихся групп CDS/ISIS (v70 сопровождается новой строкой). Наконец мы создаем новую запись, используя тэг <write> для ее разблокировки. Если мы не сделаем этого, то запись не будет добавлена к базе данных.

Теперь мы проверяем значение поля 1002, т.е состояния операции, и в случае успеха выводим сообщение: "Created!" (“Создано”). В случае неудачи мы также должны вывести сообщение об ошибке.

<display>
<pft>if val(v1102) = 0 then '<b>Created!</b><hr>' fi </pft>
</display>

Теперь мы выведем новую запись с ее MFN для подтверждения. Мы быдем отделять повторения поля 70 точкой с запятой и пробелом.

<display><pft>'<font face=arial>
MFN: ',MFN,'<br>
Author: ',v70+|; |,'<br>
Title: ',v24,'</font></pft></display>

Завершим модификацию и добавим закрывающие тэги:

</update>
</do>
</IsisScript>

Чтобы воспользоваться формой в Разделе 8.1, этот сценарий должен быть сохранен в каталоге /cgi-bin с именем dentry.xis.

8.5 Форма для редактирования существующих записей

Мы снова возьмем простой пример, чтобы показать, как она включается. Сначала форма запрашивает ID пользователя, который используется при блокировке записи. Это позволяет пользователю определять, какие записи редактировать, вводя их MFN. Затем он или она может ввести некоторые данные в поле 900, заменяя то, что там может находиться.

<HTML>
<HEAD>
<TITLE>My editing form</TITLE>
</HEAD>
<BODY>
<H2>Select record to be edited — </H2>
<FORM ACTION="http://localhost/cgi-bin/wxis.exe" METHOD=post>
<INPUT TYPE=hidden NAME=IsisScript VALUE="recedit.xis">

Please enter your userID:
<INPUT TYPE=text NAME=userid>
<p>

Please enter the MFN:
<INPUT TYPE=text NAME=whichmfn>
<p>

Please enter data for field 900:
<INPUT TYPE=text NAME=field900>
<p>

<INPUT TYPE=submit value="Add new data">

</FORM>
</BODY>
</HTML>

8.6 IsisScript для редактирования записей

Сценарий начинается аналогично сценарию в Разделе 8.4:

<IsisScript name=recedit>
<display><pft>'Content-type: text/html'/#</pft></display>
<parm name=cipar><pft>'cds.*=c:\isis\data\cds.*',/
'htm.pft=c:\isis\data\web.pft'</pft></parm>

Дальше мы должны читать значения whichmfn, field900 и userid из интерфейса CGI:

<field action=cgi tag=3001>whichmfn</field>
<field action=cgi tag=900>field900</field>
<field action=cgi tag=2002>userid</field>

Теперь мы можем запустить задачу модификации. Мы используем userid, поддерживаемый в поле 2002, как lockid.

<do task=update>
<parm name=db>cds</parm>
<parm name=lockid><pft>v2002</pft></parm>
<parm name=mfn><pft>v3001</pft></parm>
<parm name=fst><pft>cat('cds.fst')</pft></parm>
<field action=define tag=1101>Isis_Lock</field>
<field action=define tag=1102>Isis_Status</field>

Фактическая операция модификации весьма проста. Мы блокируем запись, удаляем все содержание поля 900, записываем новые данные в и затем разблокируем запись снова:

<update>
<write>Lock</write>
<field action=delete tag=900>all</field>
<field action=cgi tag=900>field900</field>
<write>Unlock</write>

(Вы можете удалять только первое местонахождение поля, определяя 1 вместо всех.) Теперь, чтобы проверить запись, мы отобразим ее, используя формат HTM.PFT, с новым добавленным полем и горизонтальной линейкой:

<display><pft>@htm.pft,'New data = ,v900,'<hr>'</pft></display>

Мы также проверим значение поля 1102 (Isis_Status), и будем печатать подтверждение, если его значение — ноль:

<display><pft>if val(v1102)=0 then
'<b>Update successful!</b>' fi</pft></display>

Завершим модификацию и добавим закрывающие тэги:

</update>
</do>
</IsisScript>


Глава 9
Интерфейс IAH

9.1 Введение

Интерфейс IAH (Interface Alan Hopkinson) — приложение, разработанное в IsisScript BIREME, чтобы позволить поиск баз данных CDS/ISIS по intranet или Internet. Поиск можно осуществить или набирая поисковые сроки, или выбирая сроки из инвертированного файла. Для поиска используется WWW ISIS, но обеспечивается уже готовый сценарий с притягивающим интерфейсом, что позволит вам не изучать язык сценариев и писать сценарии самим. Он работает с английским, португальским и испанским языками.

Пример поисковой формы на английском языке показан на Рисунке 9.1 ниже.

Рис. 9.1 Основная поисковая форма.

BIREME требует US$500 за пакет или $ 2,500 с удовлетворением требованиям заказчика. Поскольку использует WWW ISIS, для работы по сети требуется файл лицензии, основанный на IP-номере сервера.

Включаются две типовые базы данных: LILACS и SeCS.

9.2 Установка

Пакет снабжен двумя гибкими дисками. Вставте первый диск в дисковод, и запустите программу a:\iah.exe. Предложенная папка, куда будут установлены файлы — c:\iah. Если Вы согласны, структура папки будет установлена, как показано ниже:

C:\IAH



BASES DATA CGI-BIN


IAH IAH

WXIS.EXE IAH

Файлы, которые находятся в этой структуре, должны быть скопированы в структуру каталога вашего web-сaйта. Если Вы используете web-cервер Omni, они будут по умолчанию установлены в каталог C:\HTTPD с подкаталогами HTDOCS для HTML-файлов документа и CGI-BIN для программ CGI. Вы должны продолжить следующим образом:

(a) создайте папку BASES под C:\HTTPD и скопируйте папку IAH из C:\IAH\BASES в C:\HTTPD\BASES. Она содержит образцы баз данных.

(b) скопируйте папку C:\DATA\IAH в C:\HTTPD

(c) скопируйте папку IAH и файл WXIS.EXE из C:\IAH\CGI-BIN в папку сервера CGI-BIN (C:\HTTPD\CGI-BIN)

9.3 Начальная конфигурация

Конфигурация делается через файл iah.def, который будет скопирован в папку C:\HTTPD\HTDOCS\IAH\, если Вы используете сервер Omni (или любую папку IAH, которую Вы используете для HTML документов). Это — текстовый файл и его можно отредактировать в текстовом редакторе типа Блокнот (Notepad). Пример показан ниже:

[PATH]
PATH_DATA=/iah/
PATH_CGI-BIN=/httpd/cgi-bin/iah/
PATH_DATABASE=/httpd/bases/iah/

[APPEARANCE]
BODY BACKGROUND COLOR=#E0EBEB
BODY BACKGROUND IMAGE=
BODY TEXT COLOR=black
BODY LINK COLOR=blue
BODY VLINK COLOR=blue
BAR BACKGROUND COLOR=#A5BDAD
BAR TEXT COLOR=black
ERROR TEXT COLOR=
WARNING TEXT COLOR=

[HEADER]
LOGO IMAGE=^pbvsp.gif^ebvse.gif^ibvsi.gif
LOGO URL=www.bireme.br
HEADER IMAGE=^ponlinep.gif^eonlinee.gif^ionlinei.gif

[IAH]
MANAGER E-MAIL=scielos@bireme.br
MAINTENANCE=OFF
REVERSE MODE=OFF
MULTI-LANGUAGE=ON

Важная часть для запуска — раздел [PATH]. PATH_DATA должен показывать путь папки, где находятся статические страницы HTML относительно корня web-сервера (так что /iah/ правильный, если он установлен, как показано выше). PATH_CGI-BIN должен показывать полный (абсолютный) путь папки CGI-BIN (в который установлен WXIS.EXE ). PATH_DATABASE должен показывать полный путь папки, в которой зафиксированы базы данных IAH.

Другие параметры не влияют при запуске интерфейса и могут быть изменены позже. Однако, стоит установить MANAGER E-MAIL в разделе [IAH] для вашего email-адресу так, чтобы пользователи могли связаться с Вами в случае любых ошибок.

9.4 Поиск типовых баз данных

При условии, что web-сервер загружен, вы должны быть способны теперь открыть начальную страницу Установочного модуля, используя URL

http://servername/iah/setup.htm

где servername — адрес вашего сервера. Если браузер и сервер установлены на одном компьютере, это будет выглядеть:

http://localhost/iah/setup.htm

Должен появиться установочный экран, показанный на Рисунке 9.2. Выберите язык, на котором Вы желаете работать, отметьте "Setup del sistema" и нажмите "aplicar". Через некоторое время Вы должны получить список найденных файлов, созданные базы данных, и сообщение " Системная установка, законченная успешно ". Если установка не была успешной, проверьте, скопировали ли Вы правильно все файлы и есть ли у вас должным образом сконфигурированный файл iah.def .

Теперь вы можете вернуться к первой странице установки и установить типичные базы данных, LILACS и SeCS. Снова нажмите "Setup del sistema" и затем "aplicar". В следующей форме выберете "Test data base ( LILACS format )" и нажмите "aplicar". Вам придется немного подождать, прежде чем вы получите сообщение "Data base setup finished successfully" ("Установка базы завершена успешно"), так как должны быть сгенерированы индексный и другие файлы. Затем вы можете вернуться и повторить процесс для второй базы — LILACS.

Рисунок 9.2 Первый установочный экран

Теперь Вы можете пробовать обратиться к испытательным базам данных. Откройте страницу

http://servername/iah/bases.htm

( http://localhost/iah/bases.htm)

Эта страница позволит вам выбирать одну из двух баз данных, которые Вы установили. Нажмите одно из названий, и вы получите поисковый экран. Чтобы перейти к английскому языку, нажмите кнопку"config" ("конфигурации"). Экран конфигурации поиска показан на Рисунке 9.3.

Рисунок 9.3 Экран конфигурации поиска

Вы можете выбрать используемый язык, выводить или нет навигационную область, сколько документов показывать на странице и какой формат использовать для отображения записей. Нажмите "aplicar", и вы должны вернуться к экрану поиска на выбранном языке; на рисунке 9.4 показан пример поиска для фразы heart disease (“причины болезни”). Выбрав "All words" ("Все слова"), вы будете искать HEART и DISEASE, выбрав "Any word" — HEART или DISEASE.

Нажмите "search", и появятся результаты поиска. Вы можете обнаружить, что некоторые значки изменяются, при подведении к ним курсора (предполагается, что ваш браузер сконфигурирован для JavaScript).

Фактически существуют две поисковые формы: основная форма и свободная форма. Основная форма имеет одно текстовое поле для ввода поискового выражения. Свободная форма имеет три поля для поисковых строк и поля, позволяющие выбрать логические операторы для их соединения с искомыми полями. Вы также можете выбрать отображать части указателя (“словарь терминов” в CDS/ISIS) только для указанного поля (или всех типов индексных терминов) и отделять поисковые термины от них.

Рисунок 9.4 Пример поиска в LILACS

9.5 Установка вашей собственной базы данных

Принимая, что типовые базы данных работают правильно, вы, вероятно, теперь хотите сконфигурировать вашу собственную базу данных, которую вы создали в CDS/ISIS. Это требует хорошего знания CDS/ISIS, и если вы их не имеете, то лучше использовать сервис BIREME.

Хотя у вас будет указатель и форматы отображения для вашей базы данных в CDS/ISIS, они вряд ли будут подходящими для IAH, и вам понадобиться создать новые, как объяснено ниже. Вам также понадобится знать, как писать URL, ведущий к поисковой странице для вашей базы данных.

9.5.1 Перемещение записей базы данных

Записи базы данных непосредственно помещаются в IAH как файл ISO. Вам необходимо экспортировать ваши записи из CDS/ISIS, как файл ISO и сохранить их в директории bases\iah\isos.

9.5.2 Написание Таблицы Выбора Полей (Field Select Table)

Таблица Выбора Полей (FST) определяет то, какие поля из записи передать в указатель, и в какой форме учитывать прямой поиск. Чтобы позволить для поиска в пределах указателя только по определенным полям в IAH, вы должны установить FST, которая помещает префикс (prefix) перед каждым поисковым термином, указывающий из какого поля он взят. Это можно сделать, используя методы индексации 5,6,7 и 8. Эти методы описаны в документации для поздних версий CDS/ISIS для DOS (не в Справочном описании для версии 2.3 DOS).

Каждая строка в FST состоит из трех параметров с пробелами между ними:

ID, который идентифицирует тип индексного термина (обычно тот же, что и отметка поля из которого он выбран).

Indexing Technique. Например, 0 означает извлечение целого поля как одного термина, тогда как 4 извлекает каждое слово ("ключевое слово") индивидуально, для передачи на индекс.

Extraction Format, написанный на языке форматирования CDS/ISIS, который определяет поле, поля, или части полей, из которых берутся термины и возможно добавление других данных к данным, извлеченным из записи. Так что требуемый префикс может быть добавлен к терминам, извлеченным из данного поля.

Вот простой пример строки в FST:

70 0 v70

Этот код программы извлекает все поле из записи и помещает его в индекс с ID 70.

Строка

70 0 'AU_' V70

должна установить префикс AU_ вначале извлекаемых из поля 70 данных. Если поле 70 — повторяемое поле, вы можете генерировать префикс для каждого повторения, используя строку

70 0 MHU, ('AU_' v70/)

Более сложный пример:

24 8 '*TI_*' V24

Это извлекает данные из поля 24. Здесь используется метод 8, который, подобно методу 4, извлекает отдельно каждое слово, но ставит префикс вначале каждого термина. (Если бы вы использовали 4, префикс появился бы с первым термином.) Префикс — константа TI. Кавычки включают константу в CDS/ISIS, но методы 5, 6, 7 и 8 требуют другого разделителя вокруг повторяющегося префикса. Здесь в качестве этого разделителя используется звездочка (*). Так что входы в индексе для заголовка " Принципы штатного синтеза ", принимая, что OF — слово остановки, будут:

TI_ORGANIC
TI_PRINCIPLES
TI_SYNTHESIS

Сначала поле 70преобразуется к Верхнему Регистру Режима заголовка, в случае, если имеются данные или отметки подполей в <…>. Это создает повторяющуюся группу префикса AU _, местонахождения поля, и новой строки. Каждое местонахождение поля генерирует индексный термин с префиксом AU_.

Таким образом, вам необходимо написать FST, которая извлекает данные из полей, которые вы хотите сделать доступными для поиска в IAH, в той форме, в какой вы хотите (целые поля, каждое подполе, текст между <…>, или каждое слово), и с префиксом. В отличие от SDC/ISIS, FST для создания инвертированного файла не должна иметь то же название, что и база данных, но должна иметь расширение .FST. При желании вы можете писать ее в текстовом редакторе, а не в CDS/ISIS. FST должна сохраняться в каталоге bases\iah\fsts.

9.5.3 Запись формата вывода данных

Вам необходим один или несколько форматов вывода данных для просмотра записей в IAH. Это — файлы с расширением .PFT. Кое-что о написании форматов вывода данных для использования в сети, включая использование языка форматирования CDS/ISIS и HTML, обсуждалось в Разделе 6.2.

Файл(ы) формата должны сохраняться в папке bases\iah\pfts\i для форматов, использующих английский язык. Для испанского языка используется подобная папка с e и с p – для португальского.

9.5.4 Редактирование конфигурационного файла

Теперь вам необходимо создать копию файла dblil.def (в папке IAH ниже корня web-сайта) и дать ему имя вашей базы данных с расширением .DEF. Для примера мы назовем базу JANE, так что этот файл будет — jane.def. Затем вам нужно отредактировать его (используя текстовый редактор) для вашей собственной базы данных. Это довольно сложный файл, и мы рассмотрим его раздел за разделом.

(a)[FILE_LOCATION]
FILE BASE.*=%path_base%jane.*
FILE INVERTED.*=%path_base%jane.*
FILE short.pft=%path_base%pfts%lang%janes.pft
FILE long.pft=%path_base%pfts%lang%janed.pft
FILE title.pft=%path_base%pfts%lang%janet.pft

Строки FILE BASE= и FILE INVERTED= определяют положение базы данных и инвертированного файла. Это им показывает переменная %path_base%, была установлена в файле IAH.DEF или могла быть написана вами

FILE_BASE.*=/bases/iah/jane.*

Следующие три строки определяют логические названия для трех форматов печати, определенных для этой базы данных. Фактические имена файлов — janes.pft, janed.pft и janet.pft. Параметр %lang% может принимать значения P (португальский), E (испанский) или I (английский) — смотри выше — и форма вывода может быть на любом языке. Хотя в примере показаны три формата, вы можете использовать больше или меньше.

(b) [INDEX DEFINITION]

INDEX Tw=^iKeywords^ePalabras^pPalavras^d*^xTW ^yINVERTED^uTW_^mTW_^fB
INDEX Ti=^iTitle words^ePalabras de titulo^pPalavras do titulo^xTI ^yINVERTED
^uTW_^mTW_^fB
INDEX Au=^iAuthor^eAutor^pAutor^xAU ^yINVERTED^uAU_^mAU_^fB

Здесь определяется каждый индекс, доступный для поиска (как показано в свободной форме). Для каждого индекса может быть отдельная FST или единственная FST с префиксами для каждого вида термина. Подполя на определение следующие:

^i Название индекса по-английски
^e Название индекса по-испански
^p Название индекса по-португальски
^d значение * определяет, что это — заданный по умолчанию индекс
^x Префикс этого индекса в FST
^y Логическое название инвертированного файла (определенный в разделе FILE_LOCATION )
^u Префикс индекса в FST с пунктуацией
^m Префикс индекса в FST с пунктуацией (зарезервированный для перспективного использования)
^f Указывает, будет ли индекс доступен в основной форме
^t Тип индекса. Значение "short" производит короткий индекс, то есть все термины отображаются без необходимости пользователю выбирать начальный символ

(c) [APPLY_GIZMO]

GIZMO=ASC2HTML

Если вы используете данные, содержащие “специальные символы”, такие как à, ñ или ü, вам понадобится база данных gizmo для преобразования их в коды, при отправлении на web-браузер. База данных gizmo описана в разделе 4.8. База данных ASC2HTML обеспечивается пакетом IAH и конвертирует символы в расширенном ASCII к их текстовым версиям в HTML. Вам также нужно определить нахождение файлов gizmo в разделе [FILE_LOCATION].

(d) [FORMAT_NAME]

FORMAT short.pft=^iCitation^eCitation^pCitação
FORMAT long.pft=^iDetailed^eDetallado^pDetallhado
FORMAT title.pft=^iTitle^eTitulo^pTitulo
FORMAT DEFAULT=short.pft

Этот раздел определяет логические названия форматов вывода данных и их названия на каждом из трех языков: ^i для английского названия, ^e для испанского названия и ^p для португальского. Заданный по умолчанию формат определен в FORMAT DEFAULT.

(e) [HELP_FORM]

HELP FORM FREE=^ihelpformi.htm^ehelpforme.htm^phelpformp.htm
HELP FORM BASIC=^ihelpformi.htm^ehelpforme.htm^phelpformp.htm
HELP FORM ADVANCED=^ihelpformi.htm^ehelpforme.htm^phelpformp.htm

Этот раздел определяет справочные файлы для организации поиска — FREE для свободной поисковой формы, BASIC для основной формы поиска и ADVANCED для расширенной формы поиска (учитывая, что все три определены — смотри (f) ниже). Файлы должны быть написаны на HTML и сохранены в папке \iah\hlps корневого каталога сервера. Такой же файл может быть определен для каждого типа поиска — как в примере выше. Файлы могут быть определены для каждого языка так где-либо в другом месте.

(f) [DISPLAY_FORM]

AVAILABLE FORMS=F,B

Этот раздел содержит параметр AVAILABLE FORMS, указывающий доступную поисковую форму. Возможные значения: F (Свободная форма), B (Основная форма) и A (Расширенная форма). Первая из перечисленных будет форма, заданная по умолчанию.

9.6 Порядок записей в отображении

Когда у вас есть действующая база данных, вы можете ее усовершенствовать. Допустим, ваша база данных состоит из записей, введенных в течение какого-то периода времени, и вы хотите отображать их, начиная с последней по времени. Для этого отредактируйте последнюю строку файла iah.def: REVERSE=ON. Это будет применено ко всем базам данных, использующим IAH на вашем сервере, так что если какие-нибудь базы были отсортированы по алфавиту, не делайте это изменение — они будут выглядеть очень странно в обратном алфавитном порядке.

9.7 URL для поиска вашей базы данных

URL для поиска базы данных JANE будет:

http://servername/cgi-bin/wxis.exe/iah/?IsisScript=iah/iah.xis&base=jane&lang=e

Вы должны заменить "servername" именем вашего сервера и устанавливать параметр "lang" для языка поисковой формы, которую вы хотите отобразить. На странице, содержащей ссылку, это будет выглядеть так:

<A HREF="/cgi-bin/wxis.exe/iah?IsisScript=iah/iah.xis&base=jane&lang=e"> JANE</a> The Jordan and Near East database


Книга "Руководство по использованию WWW ISIS" в формате DOC

© ИРБИС и CDS/ISIS в Томске
[Last accessed 25.05.2003]