Использование технологий WWW для доступа к базам данных

         

к гл Конструкции языка HTML для построения форм


<FORM атрибуты>...</FORM>

использование: предназначен для получения информации от клиента

и определяет начало и конец формы.

атрибуты:

Обязательные

ACTION - определяет URI (Universal Resource Identifier-адрес

или место расположения документа) CGI-скрипта

METHOD - определяет метод передачи информации скрипту.

Возможные значения GET или POST.

Необязательные

[ENCTYPE] - определяет тип MIME декодирования информации

(значение этого атрибута по умолчанию - "application/x-www-form-urlencoded").

[SCRIPT] - используется для передачи URI скрипта. Язык

скрипта и интерфейс пользователя при этом не являются частью

спецификации HTML 3.0

Важно: Формы не могут быть вложенными!

Для реализации формы используются следующие теги.

<INPUT>

использование: предназначен для создания различных по своей функциональности

полей ввода.



атрибуты:

Обязательные:

TYPE - определяет тип поля формы.

Допустимые значения:

TEXT - позволяет символьный ввод.

PASSWORD - предназначено для "скрытого" ввода

символов (вводимые символы не отображаются).

CHECKBOX - поле, позволяющее два состояния ("есть",

"нет"). Должен применяться с атрибутами NAME и VALUE

RADIO - поле, позволяющее выбор "один из всех"

SUBMIT - кнопка инициирующая передачу информации из формы

обрабатывающему скрипту, определенному в ACTION в соответствии

с методом,

определенным атрибутом METHOD.

RESET - кнопка, сбрасывающая все введенные ранее значения.

IMAGE - поле позволяющее воспроизвести событие SUBMIT при

помощи вашего изображения, при этом

возвращается два значения: name.x = координата

Х и name.y = координата Y, где Х и Y

координаты положения курсора мыши на изображении

в момент щелчка.

HIDDEN - поле создающее неотображаемое значение.

RANGE - определяет поле позволяющее ввести

цифровое значение с определенными допустимыми верхним и нижним

пределами.


Используется вместе с атрибутами MAX и

MIN определяющими область допустимых значений (например: TYPE=RANGE


MIN=1 MAX=10).



NAME - значение этого атрибута определяет

идентификатор поля.

VALUE - значение этого атрибута определяет

что будет передано в качестве значения по умолчанию для данного

поля при инициации формы.

SRC - определяет URI файла изображения.

Используется только с типом поля IMAGE.

[CHECKED] - позволяет установить начальное

значение поля типа CHECKBOX.

SIZE - определяет размер поля.

[MAXLENGTH] - определяет максимальное количество

символов, допустимое для ввода в поле.

[ALIGN] - позволяет позиционирование

Допустимые значения:

по вертикали

TOP - выравнивание по верху.

MIDDLE - выравнивание по середине.

BOTTOM выравнивание по низу.

Эти значения используются только с TYPE=IMAGE.

по горизонтали

[LEFT] - выравнивание слева

[RIGHT] - выравнивание справа

[DISABLED] - определяет поле как "read

only" - только для чтения. Значение в поле не может

быть изменено пользователем.

[ERROR] - определяет сообщение об ошибке,

объясняющее, почему введенное значение в поле не верно.

<TEXTAREA атрибуты>...</TEXTAREA>



использование: предназначен для определения области ввода

текста. Размер поля определяется атрибутами.

атрибуты:

NAME - значение этого атрибута определяет идентификатор

поля. Возвращается при инициации формы.

ROWS - определяет количество строк в текстовой

области.

COLS - определяет количество столбцов в текстовой

области.

[VALUE] - задает значение по умолчанию.

[DISABLED] - определяет поле как "read only"

- только для чтения. Значение в поле не может быть изменено пользователем.

[ERROR] - определяет сообщение об ошибке, объясняющее,

почему введенное значение в поле не верно.

<SELECT атрибуты>

<OPTION > значение1

...

<OPTION > значениеN

</SELECT>

использование: предназначен для определения области выбора из

нескольких значений (меню).

Атрибуты:

NAME - значение этого атрибута определяет идентификатор

поля. Возвращается при инициации формы.

[SIZE] - определяет количество видимых возможных значений.

[MULTIPLE] - определяет возможность множественного выбора.

[DISABLED] - определяет меню как "read only"

- только для чтения. Значения в меню не может быть выбрано пользователем

и показывается серым цветом.

<OPTION атрибуты> значение

использование: используется только с <SELECT> для определения

пунктов меню.

атрибуты:

SELECTED - определяет значение по умолчанию

VALUE - определяет возвращаемое значение

Примечание: в [ ] даны необязательные атрибуты

[]

[]

[]


Опыт построения WWW - интерфейса к БД "Телефонный справочник НГУ"


БД "Телефонный справочник НГУ" была создана в СУБД "Paradox4.5"

и состоит из трех таблиц:SPIS.DB, STR.DB, PODR.DB.

STR.DB - структурные подразделения НГУ (справочник)

Имя поляОписание

ПодразделениеНазвание подразделения

PODR.DB - подразделения НГУ

"нижнего уровня" (справочник)

Имя поляОписание

ПодрНазвание подразделения

SPIS.DB - Список телефонных номеров

Имя поляОписание

ПодразделениеНазвание подразделения "1-го уровня"

ПодрНазвание подразделения "2-го уровня"

ДолжностьНазвание должности

ЗваниеНаучное звание
ФИОФамилия имя отчество
Сл# телефонСлужебный телефон

Дом# телефонДомашний телефон

МестоФизическое месторасположение телефона

В пользовательском интерфейсе базы данных предусмотрены следующие

возможности:

Поиск по фамилии;

Поиск по номеру телефона;

Поиск по подразделению;

Добавление новых абонентов;

Добавление новых подразделений;

Редактирование информации;

Печать телефонного справочника.

Ввиду крайне слабой нормализации базы данных и того,

что справочные таблицы использовались лишь для копирования информации,

все данные оказались сосредоточены в одной таблице - SPIS.DB.

Для организации WWW - интерфейса

к БД был использован пакет WOW [См.

Главу . "Использование пакета WOW"],

обеспечивающий взаимодействие WWW

- сервера с SQL - сервером

фирмы Oracle.

Перенос таблицы SPIS.DB базу

данных Oracle был осуществлен

с помощью пакета Microsoft Query,

используя технологию ODBC.

Был создан запрос на все поля таблицы ( select * from SPIS.DB), и

результат его выполнения был сохранен ("Файл/Сохранить

как") в базу данных Oracle

как таблица с именем TEL_SPIS

с сохранением имен для всех полей.

Непосредственно сам интерфейс взаимодействия с БД "Телефонный

справочник НГУ" реализован на языке PL/SQL

в виде пакета процедур,

хранимых в базе данных Oracle.

В этом интерфейсе реализованы следующие возможности (см. рисунок

):

Просмотр абонентов по подразделениям НГУ (см. рисунки ,);

Просмотр абонентов, сгруппированных

по первой букве фамилии (см. рисунки , , );

Поиск по фамилии, имени и отчеству (см. рисунок ).


Рисунок П 3-3


Рисунок П 3-5


Рисунок П 3-6

[]

[]



Применение тега DBSET для создания переменных


С помощью тега DBSET можно

создавать переменные непосредственно в самом шаблоне и использовать

их. Приведем пример, в котором создается переменная #UserId#

и ей присваивается значение 10.

<DBSET #UserId#=10>

В правой части операции присваивания в DBSET,

может находиться как число, текст (заключенный в кавычки), так

и любые параметры доступные в шаблоне, например #CGI.SCRIPT_NAME#.

Обращаясь к этим переменным, следует использовать префикс Variable,

например #Variable.UserId#.



Примеры cgi-модулей


В качестве примера рассмотрим работу тестовых программ поставляющихся

вместе с программным обеспечением сервера НТТРD стандарта NCSA.

Для тестирования работы форм поставляются программы :

post-query - для тестирования работы форм с методом запроса

POST

query - для тестирования работы форм с методом запроса

GET

util.c - описание функций для обработки входного потока

(используется query и post-query).

Рассмотрим простой пример формы на языке HTML использующую программу

query.

<HTML>

<HEAD>

<TITLE>Пример использования CGI</TITLE>

</HEAD>

<BODY>

<FORM ACTION="http://iceman.cnit.nsu.ru/cgi-bin/post-query"

METHOD="POST">

<B>Введите свое имя<I>(Фамилию Имя Отчество)</I>:</B>

<INPUT name=RealName type=text size=40 maxlength=60 value="Петров

Иван Сидорович"><P>

Пол: <INPUT name=Sex type=Radio value="Мужской" CHECKED>-

мужской <INPUT name=Sex type=Radio value="Женский">-женский<P>

<INPUT name=Submit type=submit value="Послать запрос"><BR>

<INPUT name=Reset type=reset value="Сброс">

</FORM>

</BODY>

</HTML>

После инициации формы путем нажатия кнопки "Послать запрос"

WWW сервер обрабатывает поток

данных от формы (заменяет все пробелы в именах и значениях на

символ "+", заменяет все символы с десятичным кодом

большим 128 на символ "%" и следующим за ним шестнадцатеричным

кодом символа (например "И" в %С8)).

Выходной поток примет следующий вид:

RealName=%CF%E5%F2%F0%EE%E2+%C8%E2%E0%ED+%D1%E8%E4%EE%F0
%EE%E2%E8%F7&Sex=%CC%F3%E6%F1%EA%EE%E9&Submit=%CF%EE%F1
%EB%E0%F2%FC+%E7%E0%EF%F0%EE%F1

В момент передачи управления модулю post-query сервер присваивает

значения переменным окружения и аргументам командной строки:

argc = 0. argv =

SERVER_SOFTWARE = NCSA/1.5.1

SERVER_NAME = iceman.cnit.nsu.ru



GATEWAY_INTERFACE = CGI/1.1

SERVER_PROTOCOL = HTTP/1.0

SERVER_PORT = 80

REQUEST_METHOD = POST

HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,*/*

PATH_INFO =

PATH_TRANSLATED =

SCRIPT_NAME = /cgi-bin/test-cgi

QUERY_STRING =

REMOTE_HOST = fwa.cnit.nsu.ru

REMOTE_ADDR = 193.124.209.74

REMOTE_USER =

AUTH_TYPE =

CONTENT_TYPE = application/x-www-form-urlencoded

CONTENT_LENGTH = 142
Результат работы post-query:

<H1>Query Results</H1>You submitted the following
name/value pairs:<p>

<ul>

<li> <code>RealName = Петров Иван Сидорович</code>

<li> <code>Sex = Мужской</code>

<li> <code>Submit = Послать запрос </code>

</ul>
И на экране браузера

Query Results

You submitted the following name/value pairs:

RealName = Петров Иван Сидорович

Sex = Мужской

Submit = Послать запрос

Ниже приведен исходный текст программы post-query.
#include <stdio.h>
#ifndef NO_STDLIB_H
#include <stdlib.h>
#elsechar *getenv();
#endif
#define MAX_ENTRIES 10000

typedef struct {
char *name;
char *val;
} entry;

char *makeword(char *line, char
stop);
char *fmakeword(FILE *f, char
stop, int *len);
char x2c(char *what);
void unescape_url(char *url);
void plustospace(char *str);
main(int argc, char *argv[])
{
entry entries[MAX_ENTRIES];
register int x,m=0;
int cl;
printf("Content-type:
text/html%c%c",10,10);
if(strcmp(getenv("REQUEST_METHOD"),"POST"))
{ printf("This
script should be referenced with a METHOD of POST.\n");
printf("If you don't
understand this, see this "); printf("<A HREF=\"http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/fill-out-forms/overview.html\">
forms overview</A>.%c",10);
exit(1);
} if(strcmp(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded"))
{printf("This script
can only be used to decode form results. \n");


exit(1);
}
cl = atoi(getenv("CONTENT_LENGTH"));
for(x=0;cl && (!feof(stdin));x++)
{m=x;entries[x].val
= fmakeword(stdin,'&',&cl); plustospace(entries[x].val);
unescape_url(entries[x].val);
entries[x].name = makeword(entries[x].val,'=');
}
printf("<H1>Query
Results</H1>");
printf("You submitted
the following name/value pairs:<p>%c",10);
printf("<ul>%c",10);
for(x=0; x <= m; x++)
printf("<li>
<code>%s = %s</code>%c",entries[x].name,
entries[x].val,10);
printf("</ul>%c",10);
}

Надо отметить, что post- query не обрабатывает имена, поэтому в
примере они даны на английском языке. Если Вы используете русские
названия имен, то вы должны обработать имена также как и значения,
т.е. заменить все символы "+" на пробелы и преобразовать
шестнадцатеричные коды кириллических символов в сам символ.
Приведем также исходный текст функций используемых post-query
char *makeword(char *line,
char stop) {
/*
Предназначена для выделения
части строки, ограниченной "стоп-символами"*/
int x = 0,y;
char *word = (char *) malloc(sizeof(char)
* (strlen(line) + 1));
for(x=0;((line[x]) &&
(line[x] != stop));x++)
word[x] = line[x];
word[x] = '\0';
if(line[x]) ++x;
y=0;

while(line[y++] = line[x++]);
return word;
}

char *fmakeword(FILE *f,
char stop, int *cl) {
/*
Предназначена для выделения
строки,
ограниченной "стоп-символом" stop,
из потока f
длиной cl.
*/
int wsize;
char *word;
int ll;

wsize = 102400;
ll=0;
word = (char *) malloc(sizeof(char)
* (wsize + 1));

while(1) {
word[ll] = (char)fgetc(f);
if(ll==wsize) {
word[ll+1] = '\0';
wsize+=102400;
word = (char *)realloc(word,sizeof(char)*(wsize+1));
}
--(*cl);
if((word[ll] == stop)
(feof(f)) (!(*cl))) {
if(word[ll] != stop)
ll++;
word[ll] = '\0';
return word;
}
++ll;


}
}

char x2c(char *what) {
/* Предназначена для преобразования
шестнадцатиричного кода символа в код символа
*/
register char digit;

digit = (what[0] >= 'A'
? ((what[0] & 0xdf) - 'A')+10 : (what[0] - '0'));
digit *= 16;
digit += (what[1] >= 'A'
? ((what[1] & 0xdf) - 'A')+10 : (what[1] - '0'));
return(digit);
}

void unescape_url(char
*url) {

register int x,y;

for(x=0,y=0;url[y];++x,++y)
{
if((url[x] = url[y])
== '%') {
url[x] = x2c(&url[y+1]);
y+=2;
}
}
url[x] = '\0';
}

void plustospace(char
*str) {
/*замена символов "+"
на символ "пробел"*/
register int x;

for(x=0;str[x];x++) if(str[x]
== '+') str[x] = ' ';
}

Для демонстрации реализации формы с методом запроса GET воспользуемся
той же самой формой, что и для метода POST и программой query.
Для этого изменим значение атрибутов ACTION и METHOD в теге FORM.
<FORM action="http://iceman.cnit.nsu.ru/cgi-bin/query"
METHOD=GET>
После инициации формы сервер установит следующие значения для
переменных окружения и аргументов командной строки:

argc = 0. argv is =
SERVER_SOFTWARE = NCSA/1.5.1
SERVER_NAME = iceman.cnit.nsu.ru
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.0
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
*/*
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING = RealName=%CF%E5%F2%F0%EE%E2+%C8%E2%E0%ED+%D1%E8
%E4%EE%F0%EE%E2%E8%F7&Sex=%CC%F3%E6%F1%EA%EE%E9&Submit=%CF%EE
%F1%EB%E0%F2%FC+%E7%E0%EF%F0%EE%F1
REMOTE_HOST = fwa.cnit.nsu.ru
REMOTE_ADDR = 193.124.209.74
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =

Как мы видим, выходной поток от формы появился в значении переменной
QUERY_STRING.
Результат работы query полностью совпадает с результатом работы
post-query.

Процедура установки сервера NCSA


Для запуска процедуры сборки и установки сервера необходимо в

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

утилиту make. Для сборки сервера необходимо указать

команде make аббревиатуру операционной системы:

aix3, aix4, sunos, sgi4, sgi5, hp-cc, hp-gcc, solaris, netbsd,

svr4, linux, next, ultrix, osf1, aux, bsdi. Полный список

поддерживаемых систем можно получить,

выполнив команду make без параметров. Каждая аббревиатура ассоциирована

с конкретной операционной системой. Появление дополнительных параметров

после дефиса указывает на специфику конкретной конфигурации в

одной и той же ОС. Например, hp-cc и hp-gcc

указывают на общий тип ОС - HP-UX, однако ориентированы на использование

разных компиляторов - базового C - компилятора (cc) или GNU C

(gcc). Для сборки сервера под ОС UnixWare необходимо использовать

команду make svr4.

Ряд основных параметров сервера - пути файлов, режимы работы задаются

по умолчанию на этапе сборки. В случае, если нужна их корректировка

под конкретные условия, необходимо отредактировать файл src/config.h.

После сборки сервера необходимо разместить его компоненты в файловой

системе. Исполняемый модуль сервера httpd размещается

в каталоге серверных программ - /usr/local/sbin

или /usr/sbin. Файлы конфигурации, журналы и стандартные

cgi-программы размещаются в подкаталогах каталога, определяемого

параметром ServerRoot. Обычно это /usr/local/etc/httpd,

однако его можно изменить либо изменив параметр HTTPD_ROOT файла

src/config.h, либо указав ключ -d

при запуске сервера.

Например:

/usr/local/sbin/httpd -d /var/httpd

В каталоге, определяемом параметром ServerRoot, размещаются три

подкаталога:

conf/ - содержащий файлы конфигурации сервера

logs/ - содержащий журналы работы сервера

cgi-bin/ - содержащий стандартные cgi-программы,

поставляемые с сервером.



Программные пакеты для Apple Macintosh


Платформа Apple Macintosh издавна славилась своей ориентированностью на графику и настольные издательства. Пользователям доступны пакеты Adobe Photoshop и Adobe Freehand, а также многие другие. К сожалению, автор не имел возможности испытать графические программы для Mac, поэтому список остается неполным.



Программные пакеты для MS Windows x, MS Windows и MS Windows NT


Основная масса дизайнеров, работающих в среде MS Windows, предпочитает Adobe Photoshop как средство создания и обработки растровых изображений. Кроме ставших уже легендарными фильтров и подключаемых модулей, Photoshop умеет устранять зазубренности для всех основных примитивов, поддерживает большое количество графических форматов.

Для создания эффектов с форматом GIF лучше всего подходит программа Gif Construction Set for Windows (GIFCON) компании Alchemy Mindworks. С ее помощью можно делать с GIF-файлами практически все что угодно! На примере GIFCON можно понять, что даже для MS Windows бывают по настоящему хорошие программы.

Настоящим хитом является пакет CorelXARA компании Corel (Рис. ). Этот пакет использует не растровую, а векторную графику, так же, как и известный шедевр той же компании под названием CorelDRAW!. В отличие от CorelDRAW!, CorelXARA ориентирован именно на Web-дизайнеров. Он умеет устранять зазубренности, имеет множество средств для деформирования. Обладает уникальной возможностью компоновки растровых и векторных данных, позволяя создавать потрясающие эффекты. Последние версии пакета умеют даже создавать анимированные GIF-файлы.


Рис. П1.1.1: CorelXARA. Потрясающие возможности для Web.

Для работы с трехмерной графикой очень удобно использовать такие профессиональные (и сложные в изучении) пакеты, как Autodesk 3D Studio и 3D Studio MAX, равно как и более простые пакеты вроде Caligari trueSpace. Компания Caligari (http://www.caligari.com) предлагает также комплект средств для создания трехмерных сцен в формате VRML (Virtual Reality Modelling Language).

Очень полезной при работе с изображениями в формате GIF оказывается программа gifblast, работающая в среде MSDOS и различных UNIX. Она оптимизирует GIF-файлы, уменьшая их байтовый размер. Уменьшение размера происходит из-за того, что многие производители программ, работающих с файлами в формате GIF, плохо оптимизируют свои продукты.



Программные пакеты для ОС UNIX


Для некоторых версий ОС UNIX, таких как SUN Solaris или SGI IRIX существуют версии пакета Adobe Photoshop. Кроме того, в Internet бесплатно доступно несколько бесплатных пакетов для работы с графикой: General Image Manipulating Package (GIMP), XPaint, и т.д. К сожалению, они по своим возможностям пока не сравнимы с коммерческими пакетами для ОС UNIX и MS Windows.



Программы преобразования форматов


Для многих популярных форматов данных существуют программы преобразования

в HTML, позволяющие быстро и эффективно публиковать в Internet уже существующую

информацию, не прибегая к медленному процессу ручного преобразования.

Хорошим примером такого типа программ может служить серия Microsoft Internet

Assistants для всех программ, входящих в пакет Microsoft Office.

Microsoft Internet Assistant for Word мы уже рассматривали ранее (см. главу

про редакторы HTML).

Поиск конвертеров из нужного формата оставляется читателям в качестве

упражнения на использование Web-браузера.



Простые массивы


Perl позволяет произвольно удлинять массив путем обращения к элементу, индекс

которого больше, чем последний индекс массива. Так же можно произвольно

уменьшить длину массива.

@day = ('a','b');

$day[3] = 'c';

Теперь массив day содержит три элемента: ('a','b','c').

@day = (); или, что то же самое: $#day = -1;

Теперь массив day пуст.

(@day, @month, &SomeSub) содержит в себе элементы массива day, за ними

следуют элементы массива month, а за ними результат выполнения подпрограммы

SomeSub.

Пустой массив обозначается (). Массив ((),(),(),()) эквивалентен пустому

массиву. Последний элемент массива может быть массивом или хэшэм:

($a, $b, @c)= split;

($a, $b, %c)= @_;

Любой элемент массива может быть массивом.



Простые операторы


Последовательность простых операторов может следовать за отдельным

модификатором. В Perl-е простыми модификаторами являются:

if (EXPR)

unless (EXPR)

while (EXPR)

until (EXPR)

В операторах while и until проверка условия происходит перед выполнением

тела блока, за исключением одного случая, когда используется do-оператор:

do {

$_ = <STDIN>;

...

} until $_ eq ".\n";

в котором проверка условия происходит после выполнения блока.

Операторы цикла, которые будут описаны далее, не будут работать в этой

конструкции, так как отсутствует метка цикла.



Протокол HTTP


Протокол HTTP определяет язык запросов от WWW - клиента к WWW

- серверу. Сам запрос состоит из следующих компонент:

<Заголовок>

<Метод> <Источник / Данные>

где


Заголовок - определяет версию

протокола HTTP и другие служебные параметры;

Метод - одно из ключевых слов:


GET - для передачи запросов на выдачу документов

PUT, POST - для передачи данных от клиента к серверу

(например, из форм)

Пример запроса:

HTTP/1.1


GET /index.html

Описывает запрос на получение файла index.html из корневого каталога

документов сервера.



Протокол MIME


Протокол MIME - многоцелевое расширение электронной почты,

был создан как способ передачи нетекстовой информации: изображений,

звука, видео в письмах электронной почты. Механизм оказался удачным,

и его перенесли и в on-line сервисы, в том числе WWW. Здесь MIME

используется для передачи документов от сервера к клиенту.

В общем виде MIME основывается на передаче вместе с основными

данными дополнительной информации, описывающей что это и в каком

виде передается. Эта дополнительная информация называется заголовок

MIME. Базовой частью заголовка является строка, описывающая

тип передаваемого сообщения. Формат строки:

Content-Type: <тип_MIME>

Перечень типов MIME (т.е. видов передаваемых данных) постоянно

пополняется и может быть дополнен даже пользователем для описания

своего собственного вида данных. Формат типа MIME:

<Тип> / <Подтип> [ ;

<параметры> ]

Где <Тип> - определяет общий тип данных:

Audio - для звуковых данных


Application - данные, являющиеся входными для какого-либо приложения

(программы)


Image - для графических образов

Message - для сообщения, которое само по себе является MIME -

документом


Multipart - для сообщения, состоящего из нескольких MIME - документов


Text - для текстовых данных в различном виде

Video - для видеоданных.

<Подтип> - указывает на специфический формат данных типа

<Тип>

Например:

text/html - текстовые данные в формате HTML

image/giff - графические данные в формате gifF

<Параметры> - список параметров, необходимых для интерпретации

данных.

Для ведения специфичной обработки файлов различных типов и форматов

на клиентской и серверной частях поддерживаются списки соответствий

типов MIME и расширений файлов. Формат записи такого списка:

<Тип>/<Подтип> <расширение1>

... <расширениеN>

Эти списки сопоставляют всем файлам, имеющим определенные расширения,

определенные типы MIME.

Например:

image/giff gif giff

text/html html htm

В первой строке всем файлам с расширением gif и giff приписывается

тип содержимого image/giff. Если для типа содержимого image/giff

определены специальные правила обработки (например,

отображение на экране в определенной области), то так будут обрабатываться

все файлы с расширениями gif и giff.



Проверка корректности данных в полях формы


В Cold Fusion предусмотрен

механизм проверки корректности заполнения полей формы. Этот механизм

основан на добавлении в форму дополнительных полей типа HIDDEN

(скрытые), с именем, составленным из имени поля, значение

которого нужно проверить и одного из допустимых в Cold

Fusion суффиксов, задающих контекст проверки.

В следующей таблице приведен список всех суффиксов используемых

для проверки:

Суффикс

Значение атрибута VALUE

Описание

_required

Текст сообщения об ошибкеПроверяется произведен ли ввод в поле формы.

_integer

Текст сообщения об ошибкеПроверяется, является ли значение, введенное пользователем, целым числом.

_float Текст сообщения об ошибкеПроверяется, является ли значение, введенное пользователем, числом.

_range MIN = Минимальное_Значение

MAX = Максимальное_Значение

Проверяется, находится ли введенное число в определенных границах.

_date Текст сообщения об ошибкеПроверяется, находится ли введенная пользователем дата в одном из следующих форматов: DD/MM/YY, DD/MM/YYYY, DD/MM (используется текущий год). В качестве разделителя можно, также, использовать тире (т.е. DD-MM-YY).

Пример

Ниже приведен фрагмент описания формы, состоящий из двух текстовых

полей: обязательное для заполнения

поле FullName и поле типа

дата Birthday, и для каждого

из этих полей описано поле типа HIDDEN

задающее контекст проверки.

Фамилия Имя Отчество :

<INPUT TYPE="TEXT" NAME="FullName">

<INPUT TYPE="HIDDEN"

NAME="FullName_required"

VALUE="Фамилия Имя Отчество

должны быть заданы!">

Дата рождения : <INPUT TYPE="TEXT"

NAME="Birthday">

<INPUT TYPE="HIDDEN"

NAME="Birtday_date"

VALUE="Дата рождения должна

быть в формате DD/MM/YYYY (например, 20.08.1968)">



Рамки (фреймы)


Мощным визуальным средством являются так называемые рамки или фреймы (frames).

С помощью рамок область отображения браузера может быть разделена

на отдельные части, содержащие различные документы. При этом возможно

задание связей между рамками так, что выбор ссылки в одной рамке может

приводить к отображению запрошенного документа в другой. Это позволяет

создавать очень удобные в использовании документы (при неправильном

применении можно также создать и очень неудобные).

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

как Netscape Navigator (начиная с версии 2.0) и MS Internet Explorer (версии

3.0 и выше), но популярность применения

рамок растет, и похоже, что вскоре к этим браузерам добавятся новые.

Рамки описываются в специальном HTML-документе, называемом

Документом Описания Рамок. Этот документ содержит описание

числа, размеров и положения рамок, а также URL-и их содержимого.

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

оно должно находиться в отдельных документах.

При описании рамок тег <BODY> заменяется на тег

<FRAMESET параметры>

...

описания содержимого рамок

...

</FRAMESET>

Тег будет игнорироваться браузером, если перед ним встретятся

любые теги, в обычном случае встречающиеся внутри тега <BODY>.

Теги <FRAMESET> могут быть вложенными, что позволяет, как Читатель

увидит далее, создавать очень сложные конструкции.

Параметры тега <FRAMESET> могут быть следующими:

ROWS=``x1,x2,... или x1%,x2%,... или x1*,x2*,...'' - этот параметр

описывает рамки как строки различной высоты. Высоты рамок задаются

списком разделенных запятыми значений. Высоты измеряются в точках, процентном

отношении от общей высоты области отображения, либо как относительные величины.

Сумма высот всех рамок должна быть равна высоте всей области отображения.

Если этого не происходит, браузеры сами корректируют значения.

COLS=``x1,x2,... или x1%,x2%,... или *'' - используется для

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

параметр ROWS.

Примеры:

<FRAMESET ROWS="3*,*">

задаст две горизонтальные рамки, причем первая (верхняя) будет в три

раза выше второй (нижней).

<FRAMESET ROWS="100,*,50">

задаст три горизонтальные рамки, причем первая (верхняя) будет иметь

высоту 100 точек, третья (нижняя) будет иметь высоту 50 точек, а вторая

(средняя) займет все оставшееся пространство.

<FRAMESET COLS="70%,30%">

задаст две вертикальные рамки, причем первая (левая) будет иметь

ширину 70% общей ширины области отображения, а вторая (правая) -- 30%.

Для задания содержимого рамки используется тег <FRAME параметры>.

Параметры могут быть следующими:

SRC - указывает URL документа, который должен быть отображен в рамке. Если параметр не указан, рамка останется пустой.

NAME - значение этого параметра определяет имя для рамки. Впоследствии по этому имени на рамку можно будет сослаться с помощью параметра TARGET тега <A>.

SCROLLING - показывает, можно ли проматывать содержимое документа в рамке. Может принимать следующие значения:

YES - содержимое рамки МОЖЕТ проматываться.

NO - содержимое рамки НЕ может проматываться.

AUTO - браузер решает, отображать линейку прокрутки или нет (исходя из длины документа). Это значение иcпользуется по умолчанию.

NORESIZE - если этот параметр указан, пользователь не сможет изменить размеры рамки. По умолчанию пользователь МОЖЕТ изменять размеры отображаемых рамок (например, таская границу рамки указательным устройством).

MARGINWIPH - указывает на величину горизонтального отступа внутри рамки.

MARGINHEIGHT - указывает на величину вертикального отступа внутри рамки.

Пример:

<FRAME SRC="file1.html" NAME="myframe1" SCROLLING=NO\

MARGINWIDTH=5>

дает рамке имя myframe1 и отображает в ней файл file1.html,

причем линейка прокрутки не отображается, ширина горизонтального отступа

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



рамки.

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

<FRAMESET ROWS="50%,50%">

<FRAMESET COLS="150,*,150">

<FRAME SRC="frame1.html" NAME="Frame1">

<FRAME SRC="frame2.html" NAME="Frame2">

<FRAME SRC="frame3.html" NAME="Frame3">

</FRAMESET>

<FRAMESET COLS="50%,50%">

<FRAME SRC="frame4.html" NAME="Frame4">

<FRAME SRC="frame5.html" NAME="Frame5">

</FRAMESET>

</FRAMESET>

соответствует примерно следующей раскладке рамок в области отображения:



Рис. 2.2.2: Вот так будут располагаться рамки из примера

Что же происходит, если браузер не понимает рамок?

Пользователь видит абсолютно чистый экран и не может добраться до нужной

ему информации.

Как сделать так, чтобы такая ситуация не возникала?

Разработчики расширений предусмотрели такую ситуацию и придумали тег,

содержимое которого никогда не отображается в браузере, понимающем рамки,

тогда как ``глупый'' браузер, увидя незнакомый тег, честно отобразит его

содержимое без применения каких-либо хитростей.

Такой тег называется
<NOFRAMES>
Внутри него рекомендуется

располагать ссылки на документы, не содержащие рамок.

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

параметр TARGET для тега <A>. Он также может применяться

в тегах <BASE>, <AREA> и <FORM>.

[]

[]

[]


Расширения MS Internet Explorer


Компания Microsoft оснастила свой продукт очень сложными эффектами

и возможностями. Примеры: плавающие рамки, ``летающий текст'', встраиваемые компоненты

ActiveX. К сожалению, большинство дополнительных возможностей программы

Internet Explorer тесно связано с использованием Microsoft Windows, и являются

непереносимыми. Так же как и о расширениях Navigator, читайте фирменные

руководства по расширенному языку HTML на узле



Расширения Netscape Navigator


Расширения Netscape Navigator в массе своей нашли отражение в проекте

стандарта HTML 3.2. Тем не менее, компания Netsacape Communications Corp

продолжает оснащать свой браузер все новыми

и новыми возможностями. Мы не будем их здесь описывать так как браузер

постоянно совершенствуется и меняется, поэтому рекоммендуется просто

получать информацию о всех новейших возможностях прямо с узла .



Редакторы HTML


Хотя все без исключения HTML-документы могут быть созданы при помощи простого

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

специализированные программы для редактирования документов для Web.

Большинство существующих редакторов HTML представляет собой простые

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

Web-документов, например, диалоговыми окнами вставки изображений. К таким

редакторам относятся программы Webber, DarekWare HTML Author для системы Windows,

asWedit, xHTML для UNIX и другие.

Вторая категория, называемая ``полу-WYSIWYG'' (What You See Is What You Get),

включает программы, обеспечивающие просмотр конечного вида документа по мере

его подготовки. При этом документ отображается встроенным браузером редактора

в дополнительном окне. К этой категории относится, например, WebEdit для

Windows.

Третья и самая популярная среди начинающих Web-дизайнеров категория --

полные-WYSIWYG редакторы. Они обеспечивают полное (максимальное) приближение

внешнего вида редактируемого документа к его конечному виду в браузере.

При этом пользователю совершенно не нужно разбираться в тегах языка HTML.

Очень часто такие редакторы встраиваются непосредственно в Web-браузеры.

Примеры:

Netscape Navigator Gold для всех систем. Позволяет набирать

документ прямо в окне браузера.

Microsoft FrontPage. Решение компании Microsoft. Обеспечивает

создание документов в режиме WYSIWYG.

SoftQuad HoTMetaL для Windows и Sun Solaris for Sparc. Несмотря

на кажущуюся бедность, очень хорошо сделаный редактор.

Microsoft Internet Assistant for Word - продукт из серии

Internet Assistant компании Microsoft. Практически незаменим для

тех, кто привык работать с Microsoft Word или просто хочет перенести

в Web уже существующие документы в формате Word.

W3 Amaya - новая разработка W3 Consortium. Представляет собой

спарку редактора и браузера, подобную Netscape Navigator Gold.

У разных подходов есть различные преимущества и недостатки.


Знатоки и ценители системы LaTeX никогда не будут использовать

WYSIWYG-редакторы для подготовки своих страниц, также как и многие

опытные разработчики документов для Web. Дело в том, что за внешней

простотой и красотой визуальных средств разработки скрывается некоторая

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

информации, добавляемой редактором в документ. Кроме того, теряется

контроль над использованием расширений.



Рис. П1.3.2: Microsoft Internet Assistant for Word. Идеальное решение для любителей Word

Автор считает разумной достаточностью использование опытными пользователями

редакторов принадлежащих к первой категории, так как присущий им сервис

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

Для тех же, кто интенсивно работает в Microsoft Word, лучшим решением

будет, несомненно, являться Microsoft Internet Assistant for Word.


Регулярные выражения


Perl позволяет использовать регулярные выражения.

Для того чтобы пояснить, что же представляет из себя регулярное выражение

приведем несколько примеров:

/SWAP.*/ - соответствуют все слова начинающиеся со SWAP и заканчивающихся

произвольным набором символов. Точка обозначает произвольный символ, звездочка -

то, что символ, стоящий перед ней, входит в слово 0 и более раз. Все метасимволы,

которые будут описаны ниже, бозначают вхождение того, что стоит перед ними.

/\w*/ - соответствуют слова состоящие только из алфавитных, цифровых

символов и символа подчерк. \w - соответствует алфавитным, цифровым

символам и символу подчерк, звездочка - тому, что эти символы могут входить

произволное количество раз.

Здесь мы приведем

только основные метасимволы. Для более подробной информации смотрите

соответствующие страницы man по Perl.

?

* соответствует 0 или более вхождений

+ соответствует 1 или более вхождений

? соответствует 1 или 0 вхождений

{n} соответствует ровно n вхождений

{n,} соответствует по крайней мере n вхождений

{n,m} соответствует по крайней мере n,

но не более m вхождений

Метасимвол * эквивалентен {0,}, + эквивалентен

{1,} и ? эквивалентен {0,1}. Ограничений на величину m и n

нет. Эта стандартная конструкция работает в ``жадном'' режиме, то есть:

регулярному выражению a.*b будет соответствовать всевозможный набор слов начинающихся

с символа a и кончающихся символом b, в том числе слова типа abcab. В таких

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

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

?, то подобные последовательности будут опускаться.

Шаблоны обрабатываются как строка в двойных кавычках, поэтому приведенные ниже

последовательности также будут обрабатываться:

?

\l - передвижение на символ вниз

\u - передвижение на символ вверх

А также все перечисленные ранее бакслэш-последовательности.

В Perl-е определены также:

?

\w - соответствуют алфавитные и цифровые


символы а также символ подчерк

\$W - соответствуют все символы не входящие

во множество символов w

\s - символы пробела, табуляции, возврата каретки

\S - все символы не входящие во множество символов

s

\d - цифровые символы

\D - нецифровые символы

Обратите внимание, что \w отмечает только отдельные

символы, а не все слово. Чтобы отметить все слово нужно использовать \w+.

Также определены следующие команды:

?

\b - соответствуют границы слова

\B - соответствуют не-границы слова

\A - соответствуют только начало строки

\Z - соответствуют только конец строки

При использовании конструкции типа ( ... ), \<digit> подставляет

подстроку из скобок с номером digit. Можно использовать скобки для

отделения подшаблона. Если в скобках имеется более, чем 9 подстрок, то

переменные $10, $11, ... содержат соответствующие подстроки.

$+ возвращает то, чему соответствует последняя конструкция в скобках. $&

возвращает подставленную строку. $` возвращает все перед подставленной

строкой, $' возвращает все после подставленной строки.

$_ = 'abcdefghi';

/def/;

print "$`:$&:$'\n"; - напечатает abc:def:ghi

На этом мы закончим описание регулярных выражений, для более подробной

информации читайте manual page.


Рекомендуемые графические программные пакеты


При подготовке графических материалов для WWW можно применять любые программы, однако некоторые графические пакеты особенно для этих целей удобны либо имеют уникальные свойства, облегчающие работу Web-иллюстраторам.



Сценарии


В состав специфики конкретной БД входят как технологические основы,

такие как тип СУБД, вид интерфейсов, связи между таблицами, ограничения целостности, так

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

При обеспечении WWW-доступа к существующим БД, возможен

ряд путей - комплексов технологических и организационных решений. Практика использования WWW-технологии

для доступа к существующим БД предоставляет широкий спектр технологических

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

и т.д. Выбор конкретных решений при обеспечении доступа зависит от специфики конкретной СУБД и от ряда других факторов,

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

ветвь технологических решений, существование других БД, WWW-доступ к которым

должен осуществляться с минимальными дополнительными затратами и т.д.

WWW - доступ к существующим базам данных может осуществляться по одному из трех основных сценариев.

Ниже дается их краткое описание и основные характеристики.



СЕРВЕР NCSA


Национальный Центр по Суперкомпьютерным Приложениям (NCSA) Иллинойского

университета стал второй организацией после ЦЕРН, интенсивно взявшейся

за развитие WWW - технологии. Семейство ПО WWW - серверов NCSA

прошло длинный путь развития. Последние версии поддерживают все

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

доступом, параллельную обработку запросов и т.п.



Шрифты


Другими средствами шрифтового оформления текста являются выделения

курсивом и жирным шрифтом. Таким способом очень удобно

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

очень удобно заголовки первого и второго уровней оформлять с помощью тегов

<Hn>, а заголовки третьего уровня выделить жирным шрифтом. Выделение

курсивом осуществляется с помощью тега <I> (от слова Italic),

а жирным шрифтом -- с помощью тега <B> (от слова Bold).

В HTML есть также понятие emphasis - обобщенное выделение.

Оформляется оно с помощью тега <EM>...</EM>. Такое выделение - средство

описания логической структуры документа. Обычно выделенный таким способом текст отображается курсивом.

Другим средством логического выделения можно считать тег

<STRONG>...</STRONG>

Он используется для усиления участков текста. Содержимое тега обычно отображается жирным шрифтом.

Изменить размеры и цвет шрифтов можно с помощью тега

<FONT параметры>...</FONT>

Параметры могут быть следующими:

SIZE=``value или value'' - задает абсолютный или относительный размер шрифта. Относительный размер задается по отношению к базовому размеру (см. далее). Диапазон принимаемых значений -- от одного до семи.

COLOR - указывает цвет для текста.

FACE - расширение Microsoft Internet Explorer и Netscape Navigator. Позволяет задать гарнитуру (или список гарнитур, из имеющихся в системе шрифтов будет выбран наиболее подходящий) для текста. Конечный результат зависит от количества и разнообразия шрифтов, установленных в системе. Пример:

<FONT FACE="Arial, Times Roman">

Пример выделения текста другой гарнитурой.

</FONT>

Базовый размер шрифта для всего документа можно задать с помощью тега

<BASEFONT параметры>. Параметр всего один:

SIZE - задает размер шрифта.

Для того чтобы действительно привлечь пользователя, иногда может потребоваться

мигающий текст. Заставить текст мигать можно, заключив его внутрь тега

<BLINK>...</BLINK>

Пользоваться этим тегом надо с некоторой осторожностью, так как не всегда приятно наблюдать мигающие объекты.



Символьные ссылки


Мы рассмотрели, что происходит, если величина, используемая в качестве ссылки, не

была определена ранее. Что же происходит, если она уже определена и не является

жесткой ссылкой? В таком случае она обрабатывается как символьная ссылка. То есть

значение скаляра рассматривается как имя переменной, а не прямая ссылка на

переменную.

?

$name = "foo";

$$name = 1; - то же самое, что $foo = 1;

${$name} = 2; - то же самое, что $foo = 2;

${$name x 2 } = 3; -то же самое, что $foofoo = 3;

$name->[0] = 4; -то же самое, что $foo[0] = 4;

@$name = (); - обнуляет массив @foo

&$name(); - вызывает &foo



Символьные унарные операторы


Унарный ! означает логическое отрицание. Унарный минус, в случае числового

значения переменной, обозначает обычное арифметическое отрицание. Если операндом

является идентификатор, то возвращается строка, состоящая из знака минус и

идентификатора. Если строка начинается со знака + или -, то возвращается

строка, начинающаяся с противоположного знака.

Унарная тильда ``~'' обозначает побитовое отрицание.

Унарный плюс не имеет влияния даже на строки. Он используется для отделения

имя функции от выражения заключенного в скобки, которое иначе рассматривается

как список аргументов.

rand (10) * 20; - (rand10) * 20;

rand +(10) * 20; - rand(10 * 20);

Унарный бэкслэш ``'' обозначает ссылку на то, что стоит за ним.



Скалярные величины


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

числа, строки или ссылки. Они не могут содержать сложные типы, но могут содержать

ссылку на массив или хэш. В булевском контексте скаляр принимает значение

TRUE, если он содержит не нулевое число или не пустую строку.

В Perl существует несколько способов записи чисел:

?

12345

12345.67

.23E-10

0xffff шестнадцатеричная запись

0377 восьмеричная запись.

1_234_567_890 подчерк для удобства чтения.

Строки заключаются в одинарные или двойные кавычки. Использование кавычек

в Perl такое же как в bourne shell-е: строка в двойных кавычках

обрабатывается и вместо переменных подставляются их значения, а также

обрабатываются бакслэш-последовательности, строки в одинарных кавычках

рассматривается просто как последовательности символов. Используются также:

?

\t табуляция

\n перевод строки

\r возврат каретки

\b пробел

\e символ Escape

\033 восьмеричный формат

\x1b шестнадцатеричный формат

\c[ управляющая последовательность (control)

\a сигнал (alarm)

\f переход на следующую страницу



Состав


Структурно, WOW

состоит из ряда исполняемых программ,

соответствующих спецификации CGI

и набора пакетов PL/SQL

(см. рис.

7-2).

Пакет htp

содержит процедуры и функции,

облегчающие формирование HTML

- документа. Пакет

htf

содержит описание различных констант

и функций, используемых

при формировании HTML - документов.



Состав дистрибутива сервера NCSA Варианты дистрибуции


Сервер NCSA поставляется как в виде исходных текстов, так и в

виде исполняемых модулей для различных операционных систем. Распакованный

дистрибутив размещается в каталоге httpd_<номер версии>-<модификация>

где <номер версии> - версия программного обеспечения

WWW сервера, <модификация> - модификация текущей версии.

Например:

httpd_1.5.1-export

В этом каталоге содержатся следующие файлы и подкаталоги:

README - текстовый файл для первоначального ознакомления.

Содержит список всех значимых файлов и каталогов с объяснением

их назначения.

COPYRIGHT - текстовый файл с описанием лицензионного

соглашения на использование ПО WWW - сервера NCSA.

CHANGES - текстовый файл со списком изменений между

различными версиями ПО сервера.

Makefile - файл верхнего уровня для утилиты make.

Содержит список команд, которые необходимо выполнить для сборки

и установки ПО WWW - сервера.

src - каталог с исходными текстами ПО сервера.

conf - каталог, содержащий примеры конфигурационных

файлов ПО сервера.

icons - каталог, содержащий иконки, необходимые

для работы сервера.

cgi-bin - каталог, содержащий примеры CGI - программ.

cgi-src - каталог, содержащий исходные тексты примеров

CGI - программ.

support - каталог с программным обеспечением, не

являющимся часью ПО сервера, но полезным при работе с ним.



Составные операторы


if (EXPR) BLOCK

if (EXPR) BLOCK else BLOCK

if (EXPR) BLOCK eslif (EXPR) BLOCK else BLOCK

LABEL: while (EXPR) BLOCK

LABEL: while (EXPR) BLOCK continue BLOCK

LABEL: for (EXPR; EXPR; EXPR;...) BLOCK

LABEL: foreach VAR(LIST) BLOCK

LABEL: BLOCK continue BLOCK

В отличие от C и Pascal все определяется в терминах блоков, а не операторов:

то есть фигурные скобки являются обязательными.

Метка состоит из идентификатора и двоеточия. Она ставится в начале цикла и

служит указателем для операторов цикла next, last и redo (их описание смотри

ниже). Если это continue блок, то он выполняется перед тем, как условие будет

проверено снова, как третья часть for оператора в C. Правильность условия

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

$i = 1;

while ($i < 10){

...

} continue {

$i++;

}

или, что тоже самое:

for ($i = 1; $i < 10; $i++;) {

...

}

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

можно изменять в цикле, посредством операций над переменной. Если переменная

опускается, то по умолчанию в качестве нее используется $_.

foreach \$elem(@elements) \{\$elem = \$elem * 2;\}

-- цикл по всему содержимому

массива @items.

Пример:

for ((1,2,3,4,5,6,7,8,9,10,'boom')) {

print $_,"\n"; sleep(1); }

for (1..15) { print "Merry Christmas\n"; }

foreach $item (split(/[\/\*\\n]/,$ENV{'TERMCAP'})) {

print "Item: $item\n"; }

Блок семантически эквивалентен циклу, который исполняется один раз. Поэтому в

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

его еще раз.



Создание информационного хранилища


В этом варианте предлагается использование технологии,

получившей название "информационного хранилища" (ИХ). Для

обработки разнообразных запросов, в том числе и от WWW-сервера, используется промежуточная БД высокой производительности

(см. ). Информационное наполнение промежуточной БД осуществляется

специализированным программным обеспечением на основе содержимого

основных баз данных (см. рис.1-4).

Этап 1 - перегрузка данных

Этап 2 - обработка запросов

Данный вариант свободен ото всех недостатков предыдущей схемы.

Более того, после установления синхронизации данных информационного хранилища с основными БД

возможен перенос пользовательских интерфейсов на информационное хранилище, что существенно

повысит надежность и производительность, позволит организовать распределенные рабочие места.

Несмотря на кажущуюся громоздкость такой схемы, для задач обеспечения WWW-доступа

к содержимому нескольких баз данных накладные расходы существенно

уменьшаются.

Основой повышения производительности обработки WWW-запросов

и резкого увеличения скорости разработки WWW-интерфейсов является использование внутренних языков СУБД информационного

хранилища для создания гипертекстовых документов.

Для загрузки содержимого основной БД в информационное хранилище

могут использоваться все перечисленные решения (языки программирования, интегрированные

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

с SQL-сервером и продукты поддержки информационных хранилищ.



Специальные символы


Некоторые общеупотребимые символы не имеют своих мест на клавиатуре,

например значок ©. Другие же трактуются браузерами как

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

заключаются теги языка HTML. Очевидно, должен быть способ набора таких

символов в текст. В HTML существует набор макропоследовательностей,

которые превращаются браузерами в соответствующие им ``непечатные''

символы. Очевидно, что не во всех шрифтах есть полный набор символов,

и браузер не во всех ситуациях будет способен их корректно отобразить.

Но для полного описания документа все особые символы должны быть

правильно закодированы.

Приведем список специальных символов и соответствующие им

макрокоманды языка.

&

&amp; Амперсанд
< &lt; Левая угловая скобка
> &gt; Правая угловая скобка


Table 2.2.1: Специальные символы

Полный перечень всех специальных символов вместе с их кодами приведен

в Приложении П1 к отчету.


-

&#09; Горизонтальная табуляция
- &#10; Перевод строки
- &#13; Возврат каретки
&#32; Пробел
^ &#94; Крышка
_ &#95; Подчерк
` &#96; Мягкое ударение
{ &#123; Левая фигурная скобка
&#124; Вертикальная черта
} &#125; Правая фигурная скобка
~ &#126; Тильда
&#160; Неразрывный пробел &nbsp;
? &#161; Перевернутый восклицательный знак
c &#162; Значок цента
? &#163; Фунт стерлингов
Y &#165; Йена
§ &#167; Параграф
? &#168; Умляут (dieresis)
© &#169; Символ копирайта &copy;
&#171; Левая кириллическая кавычка
&#172; Значок отрицания
- &#173; Дефис
R &#174; Зарегистрированная торговая марка

?

&#175; Акцент (Macron accent)
&#176; Градус
&#177; Плюс-минус
&#178; Квадрат
&#179; Куб
? &#180; Акцент (Accute accent)
&#181; Микро (мю)
&#182; Абзац
&#183;
? &#184; Цедилла
&#185; Первая степень
&#187; Правая кириллическая кавычка
1/4 &#188; Четверть
1/2 &#189; Половина
3/4 &#190; Три четверти
? &#191; Перевернутый знак вопроса
A &#192; A с акцентом (grave) &Agrave;
A &#193; A с акцентом (acute) &Aacute;
A &#194; A с акцентом (circumflex) &Acirc;
A &#195; A с акцентом (tilde) &Atilde;
A &#196; A с акцентом (umlaut) &Auml;
A &#197; Ангстрем &Aring;
? &#198; ?дифтонг &AElig;
C &#199; Заглавная C с цедиллой &Ccedil;
E &#200; Заглавное E с акцентом (grave) &Egrave;
E &#201; Заглавное E с акцентом (acute) &Eacute;
E &#202; Заглавное E с акцентом (circumflex) &Ecirc;
E &#203; Заглавное E с акцентом (umlaut) &Euml;
I &#204; Заглавное I с акцентом (grave) &Igrave;
I &#205; Заглавное I с акцентом (acute) &Iacute;
I &#206; Заглавное I с акцентом (circumflex) &Icirc;
I &#207; Заглавное I с акцентом (umlaut) &Iuml;
N &#209; Заглавное N с акцентом (tilde) &Ntilde;
O &#210; Заглавное O с акцентом (grave) &Ograve;

O

&#211; Заглавное O с акцентом (acute) &Oacute;
O &#212; Заглавное O с акцентом (circumflex) &Ocirc;
O &#213; Заглавное O с акцентом (tilde) &Otilde;
O &#214; Заглавное O с акцентом (umlaut) &Ouml;
&#215; Умножение
O &#216; Заглавное O с акцентом (slash) &Oslash;
U &#217; Заглавное O с акцентом (grave) &Ugrave;
U &#218; Заглавное U с акцентом (acute) &Uacute;
U &#219; Заглавное U с акцентом (circumflex) &Ucirc;
U &#220; Заглавное U с акцентом (tilde) &Utilde;
Y &#221; Заглавное Y с акцентом (acute) &Yacute;
? &#223; Малое острое s (sz ligature) &sz;
a &#224; a с акцентом (grave) &agrave;
a &#225; a с акцентом (acute) &aacute;
a &#226; a с акцентом (circumflex) &acirc;
a &#227; a с акцентом (tilde) &atilde;
a &#228; a с акцентом (umlaut) &uml;
a &#229; a с акцентом (ring) &aring;
? &#230; ?(ae ligature) &aelig;
c &#231; c с акцентом (цедилла) &ccedil;
e &#232; e с акцентом (grave) &egrave;
e &#233; e с акцентом (acute) &eacute;
e &#234; e с акцентом (circumflex) &ecirc;
e &#235; e с акцентом (umlaut) &euml;
i &#236; i с акцентом (grave) &igrave;
i &#237; i с акцентом (acute) &iacute;
i &#238; i с акцентом (circumflex) &icirc;
i &#239; i с акцентом (umlaut) &iuml;
n &#241; n с акцентом (tilde) &ntilde;
o &#242; o с акцентом (grave) &ograve;
o &#243; o с акцентом (acute) &oacute;
o &#244; o с акцентом (circumflex) &ocirc;
o &#245; o с акцентом (tilde) &otilde;
o &#246; o с акцентом (umlaut) &ouml;
&#247; Деление
o &#248; o с акцентом (slash) &oslash;
u &#249; u с акцентом (grave) &ugrave;
u &#250; u с акцентом (acute) &uacute;
u &#251; u с акцентом (circumflex) &ucirc;
u &#252; u с акцентом (umlaut) &uuml;
y &#253; y с акцентом (acute) &yacute;
y &#255; y с акцентом (umlaut) &yuml;

[]

[]

[]



Спецификация CGI


CGI определяет 4 информационных потока.

Переменные окружения

Стандартный входной поток

Стандартный выходной поток

Командная строка

Рисунок 4-2. CGI-интерфейс.



Спецификация процедур пакета htp


procedure title(ctitle in varchar2) - выводит название

документа (теги <TITLE>)

procedure htitle(ctitle in varchar2) - выводит название

документа и повторяет его в заголовке первого уровня (теги <TITLE>,

<H1>)

procedure header(nsize in integer, cheader in varchar2)- выводит заголовок уровня nsize

(теги <H1>

... <H6>)

procedure url(curl in varchar2, cname in varchar2)- формирует cname как гипертекстную связь, указывающую

на curl (теги

<A HREF>).

procedure gif(curl in varchar2)- включает в документ картинку,

путь до которой curl (теги <IMG>).

procedure gif(curl in varchar2, calign in varchar2) -

включает в документ картинку,

путь до которой curl с выравниванием, определяемым

параметром calign (теги <IMG>).

procedure bold(ctext in varchar2)- выводит текст ctext

жирным шрифтом (теги

<B>).

procedure italic(ctext in varchar2)- выводит текст ctext шрифтом italic (теги

<I>)

procedure item(cval in varchar2)- выводит cval как элемент списка (теги <ITEM>).

procedure formOpen(curl in varchar2) - создает форму

с действием curl (теги <FORM>).

procedure formHidden(cname in varchar2, cvalue in varchar2)- создает скрытое поле формы для хранения значения cvalue

переменной с именем cname.

procedure formPassword(cname in varchar2),
procedure formPassword(cname in varchar2, cvalue in varchar2)
- создает поле формы для ввода значения переменной - пароля

с именем cname

и значением по умолчанию cvalue.

procedure formField(cname in varchar2, nsize in integer),
procedure formField(cname in varchar2),
procedure formField(cname in varchar2, cvalue in varchar2)
- создает поле формы для ввода значения переменной с именем

cname

длиной nsize

со значением по умолчанию cvalue.

procedure formText(cname in varchar2, nrow in integer, ncol

in integer)

- создает

многострочное поле формы (длиной ncol,

высотой nrow)

для ввода значения переменной с именем cname.

procedure formCheckbox(cname in varchar2) - создает

элемент checkbox для ввода

значения логической переменной cname.

procedure formRadio(cname in varchar2, cval in varchar2)- создает элемент radiobutton

для ввода одного из значений cval

переменной cname.

procedure formSelectOpen(cname in varchar2)- создает список значений для переменной с именем cname.

procedure formSelectOption(cval in varchar2)- добавляет значение cval

в список значений переменной,

описанной в formSelectOpen.

procedure formSelectClose- заканчивает список значений,

открытый formSelectOpen.

procedure formDo(cname in varchar2)- создает кнопку типа SUBMIT

текущей формы с именем cname.

procedure formDo -

создает кнопку типа SUBMIT

текущей формы с именем 'Submit'.

procedure formUndo(cname in varchar2)- создает кнопку типа RESET

текущей формы с именем cname.

procedure formUndo- создает кнопку типа RESET

текущей формы с именем 'Reset'.

procedure formClose- закрывает текущую форму.

Процедуры вывода:

procedure print (cbuf in varchar2),
procedure print (dbuf in date),
procedure print (nbuf in number)
- выводят значение различных типов.

Синонимы для процедуры print

- p:

procedure p (cbuf in varchar2),
procedure p (dbuf in date),
procedure p (nbuf in number).
 
Процедуры, выводящие постоянные

значения:

procedure line - разделительная

линия (тег <HR>).

procedure para - начало

параграфа (тег <P>).

procedure nl - перевод

строки (тег <BR>).

procedure item - элемент списка (тег <LI>).

procedure ulistOpen- начало ненумерованного списка (тег <UL>).

procedure ulistClose- окончание ненумерованного списка (тег </UL>).

procedure olistOpen -

начало нумерованного списка (тег <OL>).

procedure olistClose- окончание нумерованного списка (тег </OL>).

procedure dlistOpen- начало списка определений (тег <DL>).

procedure dlistClose- окончание списка определений (тег </DL>).

procedure dterm - термин

списка определений (тег <DT>).

procedure ddef - определение

термина (тег <DD>).

procedure preOpen -

начало форматированного текста.

procedure preClose - окончание форматированного текста.

[]

[]

[]