Реферат: Заголовок сообщения

Учреждение образования “Гродненский государственный университет имени Янки Купалы”

Математический факультет

Кафедра информатики и вычислительной техники

КУРСОВАЯ РАБОТА

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

Студента 4 курса 4 группы

Герасимчука Д. Г.

Научный руководитель:

кандидат технических наук,

старший преподаватель кафедры

информатики и вычислительной техники

Ливак Елена Николаевна

Гродно 2003

Оглавление

Введение

Цель работы

Глава I. Обзор использованных средств и технологий……………………..5

1.1.Технологии XML……………………………………………………5

1.2. Объектная модель документа DOM……………………………….6


1.3. Сервер приложений Zope и скриптовый язык Python……………7

Глава II. Реализация…………………………………………………………..11

2.1. Модернизация разделов сайта “Программирование” и ”Курсовые работы”………………………………………………………………………...11

2.2. Реализация системы поиска………………………………………14

2.3. Реализация системы конференции……………………………….15

2.4. Реализация системы голосования на сайте………………………17

2.5. Разработка и реализация методов защиты HTML-документов, публикуемых на сервере Zope…………………………………………18

2.6. Адаптирование разработанного программного обеспечения для поддерживаемого сайта………………………………………………..21

Заключение…………………………………………………………………….23

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

Введение

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

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

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

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

Поиск, голосование, конференция расширяют возможности сайта.

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

Цель работы

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

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

Для решения поставленной цели необходимо решить следующие задачи:

1) Модернизировать разделы сайта “Программирование” и ”Курсовые работы”.

2) Реализовать систему поиска.

3) Реализовать систему конференций.

4) Реализовать систему голосования на сайте.

5) Изучить возможности скриптового языка Python.

6) Разработать и реализовать методы защиты HTML-документов, публикуемых на сервере Zope.

7) Адаптировать разработанное программное обеспечение для поддерживаемого сайта.

8) Осуществлять поддержку сайта в течение учебного года.

Глава I .

Обзор использованных средств и технологий

1.1.Технологии XML

Сегодня XML может использоваться в любых приложениях, которым нужна структурированная информация — от сложных геоинформационных систем, с гигантскими объемами передаваемой информации до обычных «однокомпьютерных» программ, использующих этот язык для описания служебной информации. Можно выделить множество задач, связанных с созданием и обработкой структурированной информации, для решения которых может использоваться XML:

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

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

· Язык XML позволяет описывать данные произвольного типа и используется для представления специализированной информации, например химических, математических, физических формул, медицинских рецептов, нотных записей, и т.д. Это означает, что XML может служить мощным дополнением к HTML для распространения в Web «нестандартной» информации. Возможно, в самом ближайшем будущем XML полностью заменит собой HTML, по крайней мере, первые попытки интеграции этих двух языков уже делаются.

· XML-документы могут использоваться в качестве промежуточного формата данных в трехзвенных системах. Обычно схема взаимодействия между серверами приложений и баз данных зависит от конкретной СУБД и диалекта SQL, используемого для доступа к данным. Если же результаты запроса будут представлены в некотором универсальном текстовом формате, то звено СУБД, как таковое, станет «прозрачным» для приложения. Кроме того, сегодня на рассмотрение W3C предложена спецификация нового языка запросов к базам данных XQL, который в будущем может стать альтернативой SQL.

· Информация, содержащаяся в XML-документах, может изменяться, передаваться на машину клиента и обновляться по частям. Разрабатываемые спецификации XLink и Xpointer поволят ссылаться на отдельные элементы документа, c учетом их вложенности и значений атрибутов.

· Использование стилевых таблиц (XSL) позволяет обеспечить независимое от конкретного устройства вывода отображение XML- документов.

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

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

1.2. Объектная модель документа DOM

Одним из самых мощных интерфейсов доступа к содержимому XML документов является Document Object Model — DOM.

Объектная модель XML документов является представлением его внутренней структуры в виде совокупности определенных объектов. Для удобства эти объекты организуются в некоторую древообразную структуру данных — каждый элемент документа может быть отнесен к отдельной ветви, а все его содержимое, в виде набора вложенных элементов, комментариев, секций CDATA и т.д. представляется в этой структуре поддеревьями. Т.к. в любом правильно составленном XML-документе обязательно определен главный элемент, то все содержимое можно рассматривать как поддеревья этого основного элемента, называемого в таком случае корнем дерева документа.

Для следующего фрагмента XML документа:

<tree-node>

<node-level1>

<node-level2/>

<node-level2>text</node-level2>

<node-level2/>

</node-level1>

<node-level1>

<node-level2>text</node-level2>

<node-level1>

<node-level2/>

<node-level2><node-level3/></node-level2>

</node-level1>

</tree-node>

Объектное представление структуры документа не является чем-то новым для разработчиков. Для доступа к содержимому HTML страницы в сценариях давно используется объектно-ориентированный подход, — доступные для Java Script или VBScript элементы HTML документа могли создаваться, модифицироваться и просматриваться при помощи соответствующих объектов. Но их список и набор методов постоянно изменяется и зависит от типа броузера и версии языка. Для того, чтобы обеспечить независимый от конкретного языка программирования и типа документа интерфейс доступа к содержимому структурированного документа в рамках W3 консорциума была разработана и официально утверждена спецификация объектной модели DOM Level 1.

DOM — это спецификация универсального платформо- и программно-независимого доступа к содержимому документов и является просто своеобразным API для их обработчиков. DOM является стандартным способом построения объектной модели любого HTML или XML документа, при помощи которой можно производить поиск нужных фрагментов, создавать, удалять и модифицировать его элементы.

Для описания интерфейсов доступа к содержимому XML документов в спецификации DOM применяется платформонезависимый язык IDL и для использования их необходимо «перевести» на какой-то конкретный язык программирования. Однако этим занимаются создатели самих анализаторов, нам можно ничего не знать о способе реализации интерфейсов — с точки зрения разработчиков прикладных программ DOM выглядит как набор объектов с определенными методами и свойствами.


1.3. Сервер приложений Zope и скриптовый язык Python

Zope — разработанный фирмой Digital Creations сервер приложений следующего поколения и набор средств разработки информационных порталов, доступный в исходных текстах. Он работает почти на всех UNIX платформах и Windows NT, может использоваться вместе с наиболее популярными WWW серверами или отдельно, используя встроенный WWW сервер. Zope написан на мощном объектно-ориентированном языке Python и может быть расширен с использованием последнего или языка С для компонентов с критичной производительностью.

В отличие от обычных файл-ориентированных систем обработки шаблонов, таких, как ASP и PHP, Zope представляет собой в высшей степени объектно-ориентированную платформу для решения большинства возникающих при разработке WWW-приложений задач со строгим разделением данных, логики и представлений, расширяемым набором встроенных объектов и мощной моделью безопасности. Инфраструктура Zope позволяет разработчику сосредоточиться на проблеме, избавляя от забот о доступности и целостности данных и управлении доступом.

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

  • Управление через WWW;
  • Интегрированный контроль доступа;
  • Контент-менеджмент;
  • Доступ к распределенным данным;
  • Встроенные средства поиска;
  • Мощную модель разделения данных;
  • Безопасное делегирование полномочий.

Технология, положенная в основу Zope, полностью объектно ориентирована. URL WWW ресурса на самом деле — путь к объекту в содержащей его иерархии объектов, а протокол HTTP — способ послать сообщение объекту и получить от него ответ.

Zope с самого начала разрабатывался для отражения объектной модели WWW. Объекты в нем — Каталоги, Документы, Изображения и SQL запросы — иерархически упорядочены, представляя внешне привычную среду, основанную на именах. К примеру, URL "/Marketing/index.html" используется для доступа к Документу «index.html» в Каталоге «Marketing».

Для создания объектов в Zope и работы с ними, Вы используете Ваш браузер для доступа к интерфейсу управления. Все связанное с управлением и разработкой приложений может быть выполнено удаленно с использованием WWW-браузера. Интерфейс управления представляет объектную систему Zope в виде, похожем на обычный Windows Explorer, позволяя разработчику создавать и описывать объекты и даже новые типы объектов, исключая необходимость доступа к файловой системе WWW сервера.


Объекты могут располагаться в любом месте иерархии. Управляющие сайтом могут работать с ними, выбирая с помощью закладок нужные представления. Эти представления зависят от типа объекта. Объект типа ‘DTML Документ’, к примеру, имеет закладку «Edit», позволяющую редактировать исходный текст, в то время как объект типа Соединение с базой данных имеет закладки для изменения строки описания соединения и для редактирования параметров кэширования объектов. Все объекты, однако, имеют представление «Безопасность», служащее для управления полномочиями, необходимыми для доступа к объекту.

Объекты Zope хранятся в высокопроизводительной транзакционной объектной базе данных, использующей файловую систему или RDBMS для долговременного хранения. Каждый WWW запрос рассматривается в ней как отдельная транзакция с автоматическим откатом изменений в случае ошибки в приложении. Предоставлена также возможность многоуровневой отмены сделанных изменений нажатием одной кнопки. Среда Zope делает все детали доступности данных и транзакций полностью прозрачными для разработчика.

Python является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, кортежи).

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

Также можно выделить другие достоинства языка Python:

  • свободный — все исходные тексты интерпретатора и библиотек доступны для любого, включая коммерческое, использования;
  • интерпретируемый — «позднее связывание» ;
  • объектно-ориентированный — классическая ОО модель, включая множественное наследование;
  • расширяемый — имеет строго определенные API для создания модулей, типов и классов на C или C++;
  • встраиваемый — имеет строго определенные API для встраивания интерпретатора в другие программы;
  • сверхвысокого уровня — динамическая типизация, встроенные типы данных высокого уровня, классы, модули, механизм прерываний (исключений);

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

Глава II .

Реализация

2.1. Модернизация разделов сайта “Программирование” и ”Курсовые работы”

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

В разделе “Программирование” изменена логическая структура. Старая структура оказалась неудобной для доступа к информации. Была реализованна более удобная структура:

Программирование на языке Pascal

Программа курса
Лекции
Лекция 1

Лекция 2

Лабораторные работы
Лабораторная работа 1

Лабораторная работа 2

Доп. материал
Разное

Программирование в среде Delphi

Программа курса
Лекции
Лекция 1

Лекция 2

Лабораторные работы
Лабораторная работа 1

Лабораторная работа 2

Доп. материал
Разное

Программирование на языке Assembler

Программа курса
Лекции
Лекция 1

Лекция 2

Лабораторные работы
Лабораторная работа 1

Лабораторная работа 2

Доп. материал
Разное

В разделе “Курсовые работы” изменены способы обработки информации. Добавлена логическая обработка информации: из-за того, что на сайте опубликованы не все курсовые работы студентов, а только часть из них, то для унификации обработки были введены флаги, указывающие на присутствие или отсутствие текста курсовой работы:

Рассмотрим структуру xml-файла на примере xml-файла с курсовыми работами автора:

<?xml version='1.0' encoding=«windows-1251»?>

<?xml:stylesheet type=«text/xsl» href="../zadanie.xsl"?>

<library>

< kurs DOCI =” False ”> // нет текста курсовой работы

<god> 2 курс</god>

< tema >«Исследование PE -формата исполняемых файлов Windows » (2000/2001)</ tema >

<link>kurs2.htm</link>

</kurs>

< kurs DOCI =” True ”> // есть текст курсовой работы

<god> 2 курс</god>

< tema > «Изучение и практическое применение XML / XSL технологий» (2001/2002)</ tema >

<link>kurs3.htm</link>

</kurs>

</library>

Этот xml-файл обрабатывается с помощью технологии XSL:

<xsl:stylesheet xmlns:xsl=«www.w3.org/TR/WD-xsl»>

<xsl:template match="/">

<font face=«Verdana» size=«2» style=«cursor:hand; color:maroon;»>

<xsl:for-each select=«library/kurs»>

<xsl:choose>

<xsl:when match=".[@DOCI='True']"> // ФЛАГ!

<DIV>

<P>

<h3>

<a CLASS=«tablinks»><xsl:attribute name=«href»><xsl:value-of select=«kurs/link»/></xsl:attribute><xsl:value-of select=«library/god»/> <xsl:value-of select=«kurs/tema»/>

</a>

</h3>

</P>

</DIV>

</xsl:when>

<xsl:otherwise>

<DIV>

<b>

<h3>

</xsl:attribute><xsl:value-of select=«kurs/god»/> <xsl:value-of select=«kurs/tema»/>

</a>

</h3>

</b>

</DIV>

</xsl:otherwise>

</xsl:choose>

</xsl:template>

</xsl:stylesheet>

2.2. Реализация системы поиска

Система поиска по сайту была реализована при помощи языка DTML и скриптового языка Python.

Основа системы поиска – это скрипт на языке Python. Он возвращает список файлов, в которых содержится запрашиваемая строка, а также, возвращает количество найденных документов.

Рассмотрим код скрипта:

#Скрипт получает 3 параметра: self, search_expr, cnt=0,

#где self – каталог,

#search_expr – искомое выражение,

#cnt — обнуление списка результата

#импортируем модуль string

import string

# переменная, в которой хранится результат поиска

ret=''

# число найденных файлов

count = cnt

# находим список всех DTML-документов и каталогов в директории сайта

for i in self.objectItems(['Folder',,'DTML Document']):

#берем первый элемент списка

o=i[1] #the object

#если это Папка(Folder) читаем содержимое каталога

if o.getNodeName()==«Folder»:

ret1,count1=self.scr.site_search(o,search_expr,count)

ret=ret+ret1

count=count1

#переходим к поиску в фаиле: если искомое выражение пусто или #совпадение найдено

else:

if search_expr=='' or string.find(string.lower(o.raw),string.lower(search_expr)) != -1 or:

count=count+1

#То формируем результат: берем абсолютный адрес вместе со значком #документа

ret=ret+'<img src="'

if o.hasProperty('ico'): ret=ret+self.iconspath+o.ico

else: ret=ret+o.icon

ret=ret+'" border=0 width=18 height=16>

<a ref="'+o.absolute_url()

ret=ret+'">'+o.title_or_id()+'</a><br>'

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

return ret,count

На языке DTML был написан документ, содержащий форму поиска, и отображающий результат действия скрипта.

Вызывается скрипт из DTML-документа при помощи следующего тэга:

<dtml-var «scr.site_search(PARENTS[0],'text to search',0)»>

DTML-документ содержит JavaScript, переводящий фокус курсора в строку поиска:

<script>

document.searchform.search_expr.focus();

</ script >

2.3. Реализация системы конференции

Система конференции была реализована с помощью технологии DOM, языка XML и скриптового языка Python.

Текст сообщений хранится в xml-файле, имеющего следующую структуру:

<?xml version=«1.0» encoding=«windows-1251»?>

<news>

<n>

< title >Заголовок сообщения</ title >

< description >Содержание сообщения. </ description >

</n>

………..

</ news >

Этот xml-файл обрабатывается с помощью технологии DOM:

Вся обработка ведется с помощью скрипта, написанного на языке JavaScript:

Подключаем xml-файл:

function onLoad()

{

news = new ActiveXObject(«Microsoft.XMLDOM»)

news.async = false

news.load(«news.xml»)

if (news.parseError != 0) {

alert(news.parseError.reason)

return

}

Далее следует его обработка: Выводим заголовок сообщения:

function main() {

N = root.childNodes.length

str = ""

for (i=0; i <= N — 1; i++) {

curNode = root.childNodes.item(i)

str = str + "<li><a href='news.htm?" +

i + "'>" +

curNode.getElementsByTagName(«title»).item(0).text +

"</a>  <i>" +

}

xmlnews.innerHTML = str

}

Выводим содержание сообщения:

function descr () {

curNode = root.childNodes.item(parseInt(id))

str = "<p><b>" +

curNode.getElementsByTagName(«title»).item(0).text +

"</b>  <i>" +

curNode.getElementsByTagName(«description»).item(0).text +

"<p>"

str = str + "<p>[<a href='news.htm'>Все сообщения </a>]"

xmlnews . innerHTML = str

}

Добавление сообщений ведется скриптом, реализованном на языке Python. При добавлении сообщения:

1. Cкрипт считывает xml-файл.

2. Разбивает его на две части. Первая часть – заголовок xml-файла с тегом <news>. Вторая – оставшаяся часть xml-файла.

3. Формирует строку для добавления.

4. Производит конкатенацию следующим образом: первая часть файла+сообщение+вторая часть файла.

5. Записывает контент в xml-файл.

2.4. Реализация системы голосования на сайте

Система голосования аналогична системе конференции, за исключением того, что здесь в дополнение используется технология XSL, которая обрабатывает xml-файл. А с помощью технологии DOM поизводится подключение 2 файлов: xml и xsl следующим образом:

<script language=«JScript»>

<!--

var doc, st

// создаем 2 объекта ActiveX, являющихся обьектами DOM

doc = new ActiveXObject(«Microsoft.XMLDOM»)

st = new ActiveXObject(«Microsoft.XMLDOM»)

// синхронно обрабатываем их, загружая xml и xsl файлы

doc.async = false

st.async = false

doc.load(«results»)

st.load(«result.xsl»)

// если возникает ошибка при обработке, сообщеем о ней

if (doc.parseError == 0 && st.parseError == 0) {

XmlTreeMenu.innerHTML = doc.transformNode(st)

}

else {

XmlTreeMenu.innerHTML = «Error !»

}

//-->

</script>

2.5. Разработка и реализация методов защиты

HTML -документов, публикуемых на сервере Zope

Одной из задач курсовой работы являлась разработка и реализация методов защиты HTML-документов.

На основе анализа методов защиты HTML-документов, был предложен собственный метод защиты HTML-документов.

Схема защиты HTML-документа следующая:

1.Читаем содержимое HTML-документа

2. Каждый символ контента переводим в HEX-отображение:

Например,

if i=='6':

gg = hex ( ord ( i )) #Получаем hex значение символа

u = u +"%"+ gg [2:] #Берем два последних значащих символа

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

Например,

if i== а ':

u=u+"%u0430"

3. Добавляем к контенту строку, содержащую закодированный скрип Java, запрещающий выделение и нажатие правой клавиши мыши:

<script language=«JavaScript1.2»>

<!--

var message="";

function clickIE() {

if (document.all) {

alert(message);return false;

}

}

function clickNS(e) {

if (document.layers||(document.getElementById&&!document.all)) {

if (e.which==2||e.which==3) {

alert(message);return false;

}

}

}

if (document.layers) {

document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}

else {

document.onmouseup=clickNS;document.oncontextmenu=clickIE;

}

document.oncontextmenu=new Function(«return false»)

// -->

document.oncontextmenu=new Function(«return false»)

function disableselect(e){

return false

}

function reEnable(){

return true

}

//if IE4+

document.onselectstart=new Function («return false»)

//if NS6

if (window.sidebar){

document.onkeypress=disableselect

document.onmousedown=disableselect

document.onclick=reEnable

}

</script>

<script language=«JavaScript»>

function goaway(evnt){

if (evnt.which == 0){

location.href = «blank.htm»

return false;

}

}

document.onkeypress=goaway;

</ script >

4. Формируем JavaScript, который декодирует контент с помощью функции unescape(контент) — перевод из кода символа в символ “..”

Пример:

<script language=JavaScript>

m ='Строка закодированных символов';

d=unescape(m);

document.write(d);

</script>

5. Запись контента в HTML-документ.

Метод реализован для поддержки браузерами Internet Explorer, начиная с версии 3.0, а также Netscape Navigator, начиная с версии 6.0.

2.6. Адаптирование разработанного программного обеспечения для поддерживаемого сайта

В качестве применения метода защиты HTML-документов, реализованы скрип на языке Python и интерфейс, позволяющие защищать документы, публикуемые на сервере Zope.

На вход скрипту поступает 2 параметра:

1) file — cсылка на файл, находящийся на машине клиента или в локальной сети;

2) id название документа после его публикации на сервере Zope.

Алгоритм работы скрипта может быть представлен следующим образом:

Публикация документа на сервере Zope в каталог, в котором находится скрипт:

container.manage_addFile(id,title="", content_type= «text/plain», file=file)

Получение доступа к содержимому документа.

Чтение содержимого HTML-документа

Посимвольный перевод контента в HEX-отображение(аналогично пункту 2.5.)

Добавление к контенту строки, содержащей закодированный скрип Java, запрещающий выделение и нажатие правой клавиши мыши (скрипт описан в пункте 2.5.)

Формирование JavaScript, который декодирует контент с помощью функции unescape(контент)-перевод из кода символа в символ “..”

Удаление загруженного документа:

container.manage_delObjects(id)

Публикация документа в закодированном виде на сервере Zope в текущий каталог:

container.manage_addFile(id, title="", content_type= «text/plain», file=t)

# t – текстовая переменная, где содержится зашифрованный текст

Возвращает в каталог, где находится скрипт:

if REQUEST is not None:

try: u=context.DestinationURL()

except: u=REQUEST['URL1']

REQUEST.RESPONSE.redirect('self.absolute_url()+'/manage_main')

Заключение

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

· Модернизированы разделы сайта “Программирование” и ”Курсовые работы”.

· Реализована система поиска.

· Реализована система конференций.

· Реализована система голосования на сайте.

· Изучены возможности скриптового языка Python.

· Разработаны и реализованы методы защиты HTML-документов, публикуемых на сервере Zope.

· Адаптировано разработанное программное обеспечение для поддерживаемого сайта.

· Поддержка сайта осуществлялась в течении учебного года.

В результате разработки персонального сайта преподавателя были получены практические навыки по использованию следующих технологий:

— XML

— XSL

— DOM 1.0 и 2.0

И языков:

— HTML

— DTML

— Python

— Java Script

Результат работы можно посмотреть по адресу mf.grsu.by/home/livak.

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

1. Дидье Мартин, Никола Озу, Брюс Пит и др. XML для профессионалов. — ЛОРИ — Москва, 2001. – 865 стр.

2. Официальный сайт организации World Wide Web Consortium // www.w3c.org

3. Сайт Нижегородского Государственного Университета // www.xml.nsu.ru

4. Didier Martin. XML for beginners. — Wrox Press. — Birmingham, 2002. – 597 стр.

5. Сайт издательского дома Wrox Press // www.wrox.com

6. Сайт компании Digital Creations // www.zope.org

еще рефераты
Еще работы по остальным рефератам