ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 196

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

1. Аналитическая часть

1.1.2 Роль веб-сайта в работе медицинской клиники

1.2 Обоснование выбора средств создания веб-сайта

1.3 Обзор систем управления базами данных

2.Технологическая часть

2.1 Постановка задачи

2.1.1 Актуальность

2.1.2 Назначение веб-сайта

2.1.3 Характеристики оборудования

2.2 Реализация проекта

2.3 Средства для разработки и проектирование сайта

2.3.1 Анализ средств для разработки и создания Web-сайта

2.3.2 Фреймворки, используемые при разработке Web-сайтов: сравнительный анализ

2.3.4 Разработка веб-сайта в CMS WordPress

3. Тестирование веб-сайта и руководство пользователя

3.1. Тестирование веб-сайта

3.2. Руководство пользователя

Заключение

Список использованной литературы

Приложение

Archive config file not found in dup-installer folder. '; return $error; } }$is_https = $this->isHttps(); if($is_https) { $current_url = 'https://'; } else { $current_url = 'http://'; } if(($_SERVER['SERVER_PORT'] == 80) && ($is_https)) { // Fixing what appears to be a bad server setting $server_port = 443; } else { $server_port = $_SERVER['SERVER_PORT']; } // for ngrok url and Local by Flywheel Live URL if (isset($_SERVER['HTTP_X_ORIGINAL_HOST'])) { $host = $_SERVER['HTTP_X_ORIGINAL_HOST']; } else { $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];//WAS SERVER_NAME and caused problems on some boxes } $current_url .= $host; if(strpos($current_url,':') === false) {$current_url = $current_url.':'.$server_port;}$current_url .= $_SERVER['REQUEST_URI']; $uri_start = dirname($current_url);$encoded_archive_path = urlencode($archive_filepath); if ($error === null) {$error = $this->postExtractProcessing();if($error == null) {$bootloader_name = basename(__FILE__);$this->mainInstallerURL = $uri_start.'/'.self::INSTALLER_DIR_NAME.'/main.installer.php';$this->fixInstallerPerms($this->mainInstallerURL); $this->archive = $archive_filepath; $this->bootloader = $bootloader_name;if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {$this->mainInstallerURL .= '?'.$_SERVER['QUERY_STRING'];}self::log("DONE: No detected errors so redirecting to the main installer. Main Installer URI = {$this->mainInstallerURL}");}} return $error; } public function postExtractProcessing() { $dproInstallerDir = dirname(__FILE__) . '/dup-installer'; $libDir = $dproInstallerDir . '/lib'; $fileopsDir = $libDir . '/fileops';if(!file_exists($dproInstallerDir)) {return 'Can\'t extract installer directory. See this FAQ item for details on how to resolve.';} $sourceFilepath = "{$fileopsDir}/fileops.ppp"; $destFilepath = "{$fileopsDir}/fileops.php"; if(file_exists($sourceFilepath) && (!file_exists($destFilepath))) { if(@rename($sourceFilepath, $destFilepath) === false) { return "Error renaming {$sourceFilepath}"; } } }/*** Indicates if site is running https or not** @return bool Returns true if https, false if not*/ public function isHttps() { $retVal = true;if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {$_SERVER ['HTTPS'] = 'on';} if (isset($_SERVER['HTTPS'])) { $retVal = ($_SERVER['HTTPS'] !== 'off'); } else { $retVal = ($_SERVER['SERVER_PORT'] == 443);} return $retVal; }/*** Fetches current URL via php** @param bool $queryString If true the query string will also be returned.* @param int $getParentDirLevel if 0 get current script name or parent folder, if 1 parent folder if 2 parent of parent folder ... ** @returns The current page url*/public static function getCurrentUrl($queryString = true, $requestUri = false, $getParentDirLevel = 0){// *** HOSTif (isset($_SERVER['HTTP_X_ORIGINAL_HOST'])) {$host = $_SERVER['HTTP_X_ORIGINAL_HOST'];} else {$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; //WAS SERVER_NAME and caused problems on some boxes}// *** PROTOCOLif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {$_SERVER ['HTTPS'] = 'on';}if (isset($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] === 'https') {$_SERVER ['HTTPS'] = 'on';}if (isset($_SERVER['HTTP_CF_VISITOR'])) {$visitor = json_decode($_SERVER['HTTP_CF_VISITOR']);if ($visitor->scheme == 'https') {$_SERVER ['HTTPS'] = 'on';}}$protocol = 'http'.((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on') ? 's' : '');if ($requestUri) {$serverUrlSelf = preg_replace('/\?.*$/', '', $_SERVER['REQUEST_URI']);} else {// *** SCRIPT NAME$serverUrlSelf = $_SERVER['SCRIPT_NAME'];for ($i = 0; $i < $getParentDirLevel; $i++) {$serverUrlSelf = preg_match('/^[\\\\\/]?$/', dirname($serverUrlSelf)) ? '' : dirname($serverUrlSelf);}}// *** QUERY STRING $query = ($queryString && isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0 ) ? '?'.$_SERVER['QUERY_STRING'] : '';return $protocol.'://'.$host.$serverUrlSelf.$query;} /*** Attempts to set the 'dup-installer' directory permissions** @return null*/ private function fixInstallerPerms() { $file_perms = 'u+rw'; $dir_perms = 'u+rwx'; $installer_dir_path = $this->installerContentsPath; $this->setPerms($installer_dir_path, $dir_perms, false); $this->setPerms($installer_dir_path, $file_perms, true); } /*** Set the permissions of a given directory and optionally all files** @param string $directory The full path to the directory where perms will be set* @param string $perms The given permission sets to use such as '0755' or 'u+rw' * @param string $do_files Also set the permissions of all the files in the directory** @return null*/ private function setPerms($directory, $perms, $do_files) { if (!$do_files) { // If setting a directory hiearchy be sure to include the base directory $this->setPermsOnItem($directory, $perms); } $item_names = array_diff(scandir($directory), array('.', '..')); foreach ($item_names as $item_name) { $path = "$directory/$item_name"; if (($do_files && is_file($path)) || (!$do_files && !is_file($path))) { $this->setPermsOnItem($path, $perms); } } } /*** Set the permissions of a single directory or file** @param string $path The full path to the directory or file where perms will be set* @param string $perms The given permission sets to use such as '0755' or 'u+rw'** @return bool Returns true if the permission was properly set*/ private function setPermsOnItem($path, $perms) { if (($result = self::chmod($path, $perms)) === false) {self::log("ERROR: Couldn't set permissions of $path");} else {self::log("Set permissions of $path");}return $result; }/*** Compare two strings and return html text which represts diff** @param string $oldString* @param string $newString** @return string Returns html text*/private function compareStrings($oldString, $newString) { $ret = ''; for($i=0; isset($oldString[$i]) || isset($newString[$i]); $i++) { if(!isset($oldString[$i])) { $ret .= '' . $newString[$i] . ''; continue; } for($char=0; isset($oldString[$i][$char]) || isset($newString[$i][$char]); $char++) {if(!isset($oldString[$i][$char])) { $ret .= '' . substr($newString[$i], $char) . ''; break; } elseif(!isset($newString[$i][$char])) { break; }if(ord($oldString[$i][$char]) != ord($newString[$i][$char])) $ret .= '' . $newString[$i][$char] . ''; else $ret .= $newString[$i][$char]; } } return $ret; }/*** Logs a string to the dup-installer-bootlog__[HASH].txt file** @param string $s The string to log to the log file** @return boog|int // This function returns the number of bytes that were written to the file, or FALSE on failure. */ public static function log($s, $deleteOld = false) {static $logfile = null;if (is_null($logfile)) {$logfile = self::getBootLogFilePath();}if ($deleteOld && file_exists($logfile)) {@unlink($logfile);}$timestamp = date('M j H:i:s'); return @file_put_contents($logfile, '['.$timestamp.'] '.self::postprocessLog($s)."\n", FILE_APPEND); }/*** get boot log file name the dup-installer-bootlog__[HASH].txt file** @return string */public static function getBootLogFilePath() {return dirname(__FILE__).'/dup-installer-bootlog__'.self::SECONDARY_PACKAGE_HASH.'.txt';}protected static function postprocessLog($str) {return str_replace(array(self::getArchiveFileHash(),self::PACKAGE_HASH, self::SECONDARY_PACKAGE_HASH), '[HASH]' , $str);}public static function getArchiveFileHash(){static $fileHash = null;if (is_null($fileHash)) {$fileHash = preg_replace('/^.+_([a-z0-9]+)_[0-9]{14}_archive\.(?:daf|zip)$/', '$1', self::ARCHIVE_FILENAME);}return $fileHash;}/*** Extracts only the 'dup-installer' files using ZipArchive** @param string $archive_filepath The path to the archive file.** @return bool Returns true if the data was properly extracted*/ private function extractInstallerZipArchive($archive_filepath, $checkSubFolder = false) { $success = true; $zipArchive = new ZipArchive(); $subFolderArchiveList = array(); if (($zipOpenRes = $zipArchive->open($archive_filepath)) === true) {self::log("Successfully opened archive file."); $destination = dirname(__FILE__); $folder_prefix = self::INSTALLER_DIR_NAME.'/'; self::log("Extracting all files from archive within ".self::INSTALLER_DIR_NAME); $this->installer_files_found = 0; for ($i = 0; $i < $zipArchive->numFiles; $i++) { $stat = $zipArchive->statIndex($i); if ($checkSubFolder == false) { $filenameCheck = $stat['name']; $filename = $stat['name'];$tmpSubFolder = null; } else {$safePath = rtrim(self::setSafePath($stat['name']) , '/'); $tmpArray = explode('/' , $safePath);if (count($tmpArray) < 2) { continue; } $tmpSubFolder = $tmpArray[0]; array_shift($tmpArray); $filenameCheck = implode('/' , $tmpArray); $filename = $stat['name']; } if ($this->startsWith($filenameCheck , $folder_prefix)) { $this->installer_files_found++; if (!empty($tmpSubFolder) && !in_array($tmpSubFolder , $subFolderArchiveList)) { $subFolderArchiveList[] = $tmpSubFolder; } if ($zipArchive->extractTo($destination, $filename) === true) { self::log("Success: {$filename} >>> {$destination}"); } else { self::log("[ERROR] Error extracting {$filename} from archive archive file"); $success = false; break; } } } if ($checkSubFolder && count($subFolderArchiveList) !== 1) { self::log("Error: Multiple dup subfolder archive"); $success = false; } else { if ($checkSubFolder) { $this->moveUpfromSubFolder(dirname(__FILE__).'/'.$subFolderArchiveList[0] , true); } $lib_directory = dirname(__FILE__).'/'.self::INSTALLER_DIR_NAME.'/lib'; $snaplib_directory = $lib_directory.'/snaplib'; // If snaplib files aren't present attempt to extract and copy those if(!file_exists($snaplib_directory)) { $folder_prefix = 'snaplib/'; $destination = $lib_directory; for ($i = 0; $i < $zipArchive->numFiles; $i++) { $stat = $zipArchive->statIndex($i); $filename = $stat['name']; if ($this->startsWith($filename, $folder_prefix)) { $this->installer_files_found++; if ($zipArchive->extractTo($destination, $filename) === true) { self::log("Success: {$filename} >>> {$destination}"); } else { self::log("[ERROR] Error extracting {$filename} from archive archive file"); $success = false; break; } } } } } if ($zipArchive->close() === true) { self::log("Successfully closed archive file"); } else { self::log("[ERROR] Problem closing archive file"); $success = false; }if ($success != false && $this->installer_files_found < 10) { if ($checkSubFolder) { self::log("[ERROR] Couldn't find the installer directory in the archive!"); $success = false; } else { self::log("[ERROR] Couldn't find the installer directory in archive root! Check subfolder"); $this->extractInstallerZipArchive($archive_filepath, true); } } } else { self::log("[ERROR] Couldn't open archive archive file with ZipArchive CODE[".$zipOpenRes."]"); $success = false; } return $success; }/*** return true if current SO is windows* * @staticvar bool $isWindows* @return bool*/public static function isWindows(){static $isWindows = null;if (is_null($isWindows)) {$isWindows = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');}return $isWindows;}/*** return current SO path path len* @staticvar int $maxPath* @return int*/public static function maxPathLen(){static $maxPath = null;if (is_null($maxPath)) {if (defined('PHP_MAXPATHLEN')) {$maxPath = PHP_MAXPATHLEN;} else {// for PHP < 5.3.0$maxPath = self::isWindows() ? 260 : 4096;}}return $maxPath;}/*** this function make a chmod only if the are different from perms input and if chmod function is enabled** this function handles the variable MODE in a way similar to the chmod of lunux* So the MODE variable can be* 1) an octal number (0755)* 2) a string that defines an octal number ("644")* 3) a string with the following format [ugoa]*([-+=]([rwx]*)+** examples* u+rw add read and write at the user* u+rw,uo-wx add read and write ad the user and remove wx at groupd and other* a=rw is equal at 666* u=rwx,go-rwx is equal at 700** @param string $file* @param int|string $mode* @return boolean*/public static function chmod($file, $mode){if (!file_exists($file)) {return false;}$octalMode = 0;if (is_int($mode)) {$octalMode = $mode;} else if (is_string($mode)) {$mode = trim($mode);if (preg_match('/([0-7]{1,3})/', $mode)) {$octalMode = intval(('0'.$mode), 8);} else if (preg_match_all('/(a|[ugo]{1,3})([-=+])([rwx]{1,3})/', $mode, $gMatch, PREG_SET_ORDER)) {if (!function_exists('fileperms')) {return false;}// start by file permission$octalMode = (fileperms($file) & 0777);foreach ($gMatch as $matches) {// [ugo] or a = ugo$group = $matches[1];if ($group === 'a') {$group = 'ugo';}// can be + - =$action = $matches[2];// [rwx]$gPerms = $matches[3];// reset octal group perms$octalGroupMode = 0;// Init sub perms$subPerm = 0;$subPerm += strpos($gPerms, 'x') !== false ? 1 : 0; // mask 001$subPerm += strpos($gPerms, 'w') !== false ? 2 : 0; // mask 010$subPerm += strpos($gPerms, 'r') !== false ? 4 : 0; // mask 100$ugoLen = strlen($group);if ($action === '=') {// generate octal group permsissions and ugo mask invert$ugoMaskInvert = 0777;for ($i = 0; $i < $ugoLen; $i++) {switch ($group[$i]) {case 'u':$octalGroupMode = $octalGroupMode | $subPerm << 6; // mask xxx000000$ugoMaskInvert = $ugoMaskInvert & 077;break;case 'g':$octalGroupMode = $octalGroupMode | $subPerm << 3; // mask 000xxx000$ugoMaskInvert = $ugoMaskInvert & 0707;break;case 'o':$octalGroupMode = $octalGroupMode | $subPerm; // mask 000000xxx$ugoMaskInvert = $ugoMaskInvert & 0770;break;}}// apply = action$octalMode = $octalMode & ($ugoMaskInvert | $octalGroupMode);} else {// generate octal group permsissionsfor ($i = 0; $i < $ugoLen; $i++) {switch ($group[$i]) {case 'u':$octalGroupMode = $octalGroupMode | $subPerm << 6; // mask xxx000000break;case 'g':$octalGroupMode = $octalGroupMode | $subPerm << 3; // mask 000xxx000break;case 'o':$octalGroupMode = $octalGroupMode | $subPerm; // mask 000000xxxbreak;}}// apply + or - actionswitch ($action) {case '+':$octalMode = $octalMode | $octalGroupMode;break;case '-':$octalMode = $octalMode &

2.Технологическая часть



2.1 Постановка задачи



2.1.1 Актуальность


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

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

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

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

2.1.2 Назначение веб-сайта


С помощью веб-сайта можно ознакомиться со списком врачей, о самой поликлинике и её местоположению.

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

2.1.3 Характеристики оборудования


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

• операционные система Windows: Microsoft Windows 10/8/7.

Требования к компьютеру:

• IntelPentium III/800 мГц или выше (или аналогичный);

• минимум 4 Гб ОЗУ;

• 1 Тб свободного места на сервере;

Характеристики используемой системы:

• операционная система Microsoft Windows 10 x64;

• Intel Core i7;

• 16 Гб ОЗУ;

• разрешение экрана 1366x768.

2.2 Реализация проекта



В соответствии с требованиями заказчика были выделены следующие этапы реализации проекта:

1. Проектирование веб-сайта.

2. Создание баз данных для сайта.

3. Разработка веб-сайта на платформе WordPress.

4. Тестирование веб-сайта.

2.3 Средства для разработки и проектирование сайта



2.3.1 Анализ средств для разработки и создания Web-сайта


Инструменты и программы, такие как HTML, CSS, JavaScript, FLASH, PHP, XML и т. д., обычно используются для создания современных веб-сайтов.

Конструктор сайтов

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

Язык HTML предназначен для формирования и оформления текстовых страниц, предназначенных для просмотра в сети Интернет с помощью специальной программы – браузера [14].

Генерация файлов HTML не требует использования мощного текстового процессора, который более удобен в использовании, например, редактор Notepad++. Содержимое HTML-страницы отображается в виде гипертекста, что означает, что в отображаемом на экране документе есть каким-то образом выбранное место, которое одним щелчком мыши может переместиться в другую часть той же страницы или на другую страницу.

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

CSS (каскадные таблицы стилей) — каскадные таблицы стилей — пытаются отделить детали дизайна страницы от ее структуры и содержимого. В классическом HTML смешаны структура и оформление: рядом с абзацем текста его цвет, размер шрифта, тип шрифта и так далее. Если вам нужно изменить простые параметры, такие как размер шрифта на вашем сайте, вам придется переписать все страницы. Команды CSS позволяют назначать стили всем объектам, описания которых можно полностью хранить в отдельных файлах. Используя декодеры CSS, вы можете изменить размер шрифта всех страниц вашего сайта, исправив только один файл стиля.



Чем больше разных стилей вы примените, тем веселее будет менять дизайн. Самое главное, что вам не придется изменять готовый HTML-документ на сервере. Браузер пользователя получит доступ к файлу со стилями (по ссылке) и придаст странице желаемый вид [16].

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

Таблица стилей — это отдельный файл, содержащий только правила CSS. Неограниченное количество веб-страниц может использовать такие файлы, что позволяет обеспечить надежный и идентичный внешний вид для всех страниц сайта [17].

Фреймы — элемент языка HTML, позволяющий строго разделить страницу на несколько отдельных окон и разместить в каждом окне собственную веб-страницу. В основном он используется для организации меню, которые продолжают появляться на экране, в то время как сама информация находится в другом окне. Flash — это технология, разработанная Macromedia Inc. Разнообразить обычные текстовые страницы сайта красочной и интерактивной векторной графикой. Технология Flash позволяет создавать потрясающие презентационные видеоролики и интерактивные интерфейсы, создавая новое комфортное качество на вашем сайте.

Преимущества Flash:

  • платформенная независимость;

  • распространенность и предоставление дизайнерам огромное количество инструментов;

  • правильно созданные Flash-файлы занимают мало места и достаточно быстро загружаются.

Недостатки Flash:

  • Flash-технология сложна в изучении;

  • нет желания у многих пользователей Интернет обновлять версии проигрывателей Flash, и следовательно многие новые Flash-модули не работают;

  • Долгая загрузка из-за большого объема графических файлов.

JavaScript. Это отличный инструмент, позволяющий HTML-страницам, загруженным в браузер, динамически управлять своим содержимым и самим браузером. Реализация JavaScript под названием «динамический HTML» позволяет веб-страницам иметь почти полный пользовательский интерфейс, включая многоуровневые раскрывающиеся меню, перетаскивание, анимацию и многое другое. Текст программы встраивается непосредственно в HTML-документ и интерпретируется самим браузером.

Популярность языка JavaScript связана с его широким спектром возможностей для взаимодействия с элементами веб-страницы без перезагрузки веб-страницы. Это позволяет скрывать и показывать фрагменты дизайна, перемещать их и изменять внешний вид. С помощью этих действий вы можете создавать эффекты презентации, меню, мини-игры, обрабатывать данные форм и управлять контентом [18]. PHP — это
язык программирования высокого уровня, используемый для написания скриптов для различных целей. Первая версия этого языка была создана Расмусом Лердофом для разработки веб-сайтов. Отсюда и исходное название языка — PHP (Personal Homepage — Персональная домашняя страница). По мере того, как его популярность росла, PHP вырос настолько, что стал полноценным языком программирования. Теперь это называется обработка гипертекста. Высокий уровень языка означает простоту его синтаксиса и принципов программирования [19].

Интерпретатор PHP имеет открытый исходный код, что позволяет программистам по всему миру расширять и улучшать его функциональность. В разработке PHP участвовало международное сообщество программистов, что обеспечило достаточно быстрое развитие языковых средств [20].

PHP можно использовать в различных операционных системах: Windows, Linux, Unix и Mac OS. Между тем есть два варианта использования PHP — создание веб-приложений и разработка программ общего назначения. Поэтому предусмотрено два исполняемых модуля интерпретатора:

PHP CGI (Common Getwaitc Interface) — используется для выполнения скриптов через веб-сервер и отображения результатов в окне браузера;

PHP CLI (интерфейс командной строки) — для выполнения общих сценариев. Этот модуль имеет интерфейс командной строки.

Сценарии PHP хранятся в виде простых текстовых файлов, поэтому их можно писать и редактировать с помощью простого текстового редактора, такого как Блокнот. Расширение файла скрипта может быть любым, но чаще всего используется .рhp.

Необходимо обратить внимание на особенности взаимодействия PHP и веб-сервера.

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

XML (eXtensible Markup Language) — расширяемый язык разметки для описания структурированных данных в текстовой форме. Этот текстовый формат во многом похож на HTML и был разработан специально для хранения и передачи данных.

XML позволяет описывать и передавать такие структурированные данные, как:

  • отдельные документы;

  • метаданные, описывающие содержимое какого-либо узла Internet;

  • объекты, содержащие данные и методы работы с ними;

  • отдельные;

  • всевозможные web-ссылки на информационные и людские ресурсы в Интернете.


Данные, описанные в XML, называются XML-документом. Язык XML легко читать и легко понимать. Исходный текст XML-документа состоит из набора XML-элементов, каждый из которых содержит открывающий и закрывающий теги. Каждая пара меток представляет один фрагмент данных. То есть, как и HTML, XML использует теги для описания данных. Однако, в отличие от HTML, XML допускает бесконечный набор пар тегов, каждый из которых представляет не содержащиеся в нем данные, а то, что они означают.

Вы можете использовать специальные директивы — таблицы стилей XSL (Extensible Style Sheet Language) для управления отображением элементов в окнах клиентских программ (например, окнах браузера). Эти XSL-таблицы позволяют определять внешний вид элемента на основе его положения в документе, то есть к двум элементам с одинаковым именем могут применяться разные правила форматирования. Кроме того, базовым языком XSL является XML, а это означает, что таблицы XSL являются более общими, и для контроля правильности таких таблиц стилей можно использовать DTD или схемы данных.

Инструменты для обработки данных, полученных в формате XML, могут быть разработаны в средах Visual Basic, Java или C++ [21].

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

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

HTML-документы можно создавать в любом текстовом редакторе, например в Блокноте. HTML-документы могут быть преобразованы из многих программ, таких как Microsoft Word. После преобразования страница текста может быть превращена в огромный HTML-файл размером более 100 КБ. HTML-документы можно создавать с помощью пакетов визуализации, таких как Microsoft FrontPage. Эти редакторы сами генерируют html-код документа, а разработчик просто выбирает нужные ему опции из меню.

Macromedia Corporation — один из лидеров в разработке программного обеспечения для подготовки веб-публикаций. Большой популярностью пользуются пакеты Macromedia: Dreamweaver, HomeSite и специализированные пакеты для создания компьютерной графики и анимации.

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