Трансформация XML документов

Министерство образования Российской Федерации
Саратовский государственный университет
Имени Н.Г. Чернышевского

Кафедра мат моделирования
процессов и систем управления

Трансформация XML документов
Наименование курсовой работы

___________________________________________________________________________
прописными буквами

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

Студента 4 курса механико-математического факультета

_____________________Фроолова Николая Васильевича___________________
Фамилия, имя отчество

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

Доцент, к.ф.м.н. Ковалев А.Д.
Должность, уч степень подпись, дата инициалы, фамилия

Зав. Кафедрой

Доцент, к.ф.м.н. Мозжилкин В.В.
подпись, дата

САРАТОВ 2003
Саратовский государственный университет
Имени Н.Г. Чернышевского

УТВЕРЖДЕНО
На заседании кафедры мат моделирования
процессов и систем управления
протокол от г

ЗАДАНИЕ

НА КУСОВУЮ РАБОТУ

По специальности 010200______________
Шифр

Тема___________Трансформация XML документов________________
Наименование курсовой работы

__________________________________________________
прописными буквами

Студента 4 курса механико-математического факультета

_____________________Фроолова Николая Васильевича___________________
Фамилия, имя отчество

Перечень вопросов, подлежащих разработке в курсовой работе

1. Моделирование XML-документов
2. Структура XML-документа
3. Documents Type Definitions (DTD)
4. Схемы данных

Дата выдачи ____________________________________________________
Число, месяц

Срок выполнения ______________________________________________
Число, месяц
Преподаватель

Доцент, к.ф.м.н. Ковалев А.Д.
Должность, уч степень подпись, дата инициалы, фамилия

Содержание

1. Введение
2. Структура XML-документа
3. Моделирование XML-документов
4. Documents Type Definitions (DTD)
5. Схемы данных
6. Иллюстрационный пример

Введение.

За недолгое время своего официального существования язык XML привлек к себе уже достаточно много внимания со стороны разработчиков и пользователей Интернет. Сегодня количество приверженцев этой новой технологии возрастает очень стремительно. Несмотря на то, что XML очень молод (международная организация W3C утвердила спецификацию Extensible Markup Language(XML) 1.0″ в начале февраля 1998 г) и отдельные компоненты этого языка находятся еще в стадии доработки, уже сегодня появляются новые языки, созданные на основе XML, возникают многочисленные Web-сервера, использующие эту технологию для организации хранящейся на них информации.
Когда осенью 1991 года Интернет впервые услышал о новой технологии, под названием WWW, почти никто не мог представить себе, что завоевания ее окажутся настолько глобальными. Сегодня для многих пользователей слово Интернет прочно ассоциируется с WWW и с уст специалистов не сходит тема будущего информационных систем и влияния на это будущее всемирной сетевой паутины.
Популярность World Wide Web и неотъемлемой ее части, HTML, безусловно, стала причиной повышенного внимания к системам гипертекстовой разметки документов. Хотя понятие гипертекста было введено В.Бушем еще в 1945 году и, начиная с 60-х годов стали появляться первые приложения, использующие гипертекстовые данные, всплеск активности вокруг этой технологии начался лишь тогда, когда возникла реальная необходимость в механизме объединения множества информационных ресурсов, обеспечения возможности создания, просмотра нелинейного текста. И примером реализации этого механизма послужила паутина WWW.
Язык разметки документов — это набор специальных инструкций, называемых тэгами, предназначенных для формирования в документах какой-либо структуры и определения отношений между различными элементами этой структуры. Тэги языка, или, как их иногда называют, управляющие дескрипторы, в таких документах выделяются относительно основного содержимого документа и служат в качестве инструкций для программы, производящей показ содержимого документа на стороне клиента. В самых первых системах для обозначения этих команд использовались символы “<” и “>”, внутри которых помещались названия инструкций и их параметры. Сейчас такой способ обозначения тэгов является стандартным.
Использование гипертекстовой разбивки текстового документа в современных информационных системах во многом связано с тем, что гипертекст позволяет создавать механизм нелинейного просмотра информации. В таких системах данные представляются не в виде непрерывного потока текстовой информации, а набором взаимосвязанных компонентов, переход по которым осуществляется при помощи гиперссылок.
Самый популярный на сегодняшний день язык гипертекстовой разметки – HTML, был создан специально для организации информации, распределенной в сети Интернет, и является одной из ключевых составляющих технологии WWW. С использованием гипертекстовой модели документа способ представления разнообразных информационных ресурсов в сети стал более упорядочен, а пользователи получили удобный механизм поиска и просмотра нужной информации.
HTML является упрощенной версией стандартного общего языка разметки — SGML (Standart Generalised Markup Language), который был утвержден ISO в качестве стандарта еще в 80-х годах. Этот язык предназначен для создания других языков разметки, он определяет допустимый набор тэгов, их атрибуты и внутреннюю структуру документа. Контроль над правильностью использования дескрипторов осуществляется при помощи специального набора правил, называемых DTD-описаниями, которые используются программой клиента при разборе документа. Для каждого класса документов определяется свой набор правил, описывающих грамматику соответствующего языка разметки. С помощью SGML можно описывать структурированные данные, организовывать информацию, содержащуюся в документах, представлять эту информацию в некотором стандартизованном формате. Но в виду некоторой своей сложности, SGML использовался, в основном, для описания синтаксиса других языков(наиболее известным из которых является HTML), и немногие приложения работали с SGML- документами напрямую.
Гораздо более простой и удобный, чем SGML, язык HTML позволяет определять оформление элементов документа и имеет некий ограниченный набор инструкций — тэгов, при помощи которых осуществляется процесс разметки. Инструкции HTML, в первую очередь, предназначены для управления процессом вывода содержимого документа на экране программы-клиента и определяют этим самым способ представления документа, но не его структуру. В качестве элемента гипертекстовой базы данных, описываемой HTML, используется текстовый файл, который может легко передаваться по сети с использованием протокола HTTP. Эта особенность, а также то, что HTML является открытым стандартом и огромное количество пользователей имеет возможность применять возможности этого языка для оформления своих документов, безусловно, повлияли на рост популярности HTML и сделали его сегодня главным механизмом представления информации в Web.
Однако современные приложения нуждаются не только в языке представления данных на экране клиента, но и в механизме, позволяющем определять структуру документа, описывать содержащиеся в нем элементы. HTML обладает несложным набором команд и вполне успешно справляется с задачей описания текстовой информации и отображением ее на экране программы просмотра — браузера. Однако сами отображаемые данные никак не связаны с теми тэгами, которые используются для форматирования, поэтому у программ-анализаторов нет возможности использовать тэги HTML для поиска нужных нам фрагментов документа. Т.е. встретив, например, такое описание
rose
программа просмотра будет знать, каким цветом отобразить текст, содержащийся внутри тэгов и, вероятно, отобразит его правильно, но ей абсолютно безразлично, в каком месте документа встретился этот тэг, в какие другие тэги заключен текущий фрагмент, существуют ли вложенные в него фрагменты, правильно ли построены отношения между объектами. Такое «безразличие» к структуре документа приводит к тому, что поиск или анализ информации внутри него ничем не будет отличаться от работы со сплошным, не разбитым на элементы текстовым файлом. А это, как известно, не самый эффективный способ работы с информацией.
Другим существенным недостатком HTML можно назвать ограниченность набора его тэгов. DTD-правила для HTML определяют фиксированный набор дескрипторов и поэтому у разработчика нет возможности вводить собственные, специальные тэги. Хотя время от времени появляются новые расширения языка, но долгий путь их стандартизации, сопровождаемый постоянными разногласиями между основными производителями браузеров делают практически невозможной быструю адаптацию языка, его использование для отображения специализированной информации(например, мультимедийной, математических, химических формул и т.д.).
Подводя итог всему сказанному, можно утверждать, что HTML уже сегодня не удовлетворяет в полной мере требованиям, предъявляемым современными разработчиками к языкам подобного рода. И ему на смену был предложен новый язык гипертекстовой разметки, мощный, гибкий, и, одновременно с этим, удобный язык XML.
XML (Extensible Markup Language) — это язык разметки, описывающий целый класс объектов данных, называемых XML-документами. Этот язык используется в качестве средства для описания грамматики других языков и контроля над правильностью составления документов. Т.е. сам по себе XML не содержит никаких тэгов, предназначенных для разметки, он просто определяет порядок их создания. Таким образом, если, например, мы считаем, что для обозначения элемента rose в документе необходимо использовать тэг
; то XML позволяет свободно использовать определяемый нами тэг и мы можем включать в документ фрагменты, подобные следующему

rose

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

rose

Процесс создания XML документа очень прост и требует лишь базовых знаний HTML и понимания тех задач, которые необходимо выполнить, используя XML в качестве языка разметки. Таким образом, у разработчиков появляется уникальная возможность определять собственные команды, позволяющие им наиболее эффективно определять данные, содержащиеся в документе. Автор документа создает его структуру, строит необходимые связи между элементами, используя те команды, которые удовлетворяют его требованиям, и добивается такого типа разметки, которое необходимо ему для выполнения операций просмотра, поиска, анализа документа.
Еще одним из очевидных достоинств XML является возможность использования его в качестве универсального языка запросов к хранилищам информации. Сегодня в W3C находится на рассмотрении рабочий вариант стандарта XML-QL(или XQL), который, возможно, в будущем составит серьезную конкуренцию SQL. Кроме того, XML-документы могут выступать в качестве уникального способа хранения данных, который включает в себя одновременно средства для разбора информации и представления ее на стороне клиента. В этой области одним из перспективных направлений является интеграция Java и XML — технологий, позволяющая использовать мощь обеих технологий при построении машинно-независимых приложений, использующих, кроме того, универсальный формат данных при обмене информации.
XML позволяет также осуществлять контроль над корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые различные данные. Это означает, что его можно использовать при построении сложных информационных систем, в которых очень важным является вопрос обмена информацией между различными приложениями, работающими в одной системе. Создавая структуру механизма обмена информации в самом начале работы над проектом, менеджер может избавить себя в будущем от многих проблем, связанных с несовместимостью используемых различными компонентами системы форматов данных.
Также одним из достоинств XML является то, что программы-обработчики XML-документов не сложны и уже сегодня появились и свободно распространяются всевозможные программные продукты, предназначенные для работы с XML-документами. XML поддерживается в IE5. Было заявлено о его поддержке в последующих версиях Netscape Communicator, СУБД Oracle, DB-2, в приложениях MS-Office. Все это дает основания предполагать, что, скорее всего, в ближайшем будущем XML станет основным языком обмена информации для информационных систем, заменив собой, тем самым, HTML. На основе XML уже сегодня созданы такие известные специализированные языки разметки, как SMIL, CDF, MathML, XSL, и список рабочих проектов новых языков, находящихся на рассмотрении W3C, постоянно пополняется.

2. Структура XML-документа

Хотя XML, сильно отличается по своим возможностям и предназначению от языка гипертекстовой разметки, оба эти языка являются подмножествами SGML, и, следовательно, наследуют его базовые принципы.
Простейший XML-документ может выглядеть так

?xml
version="1.0"?

Первый

Второй

подпункт 1

Третий

Последний

Этот документ очень похож на обычную HTML-страницу. Так же, как и в HTML, инструкции, заключенные в угловые скобки называются тэгами и служат для разметки основного текста документа. В XML существуют открывающие, закрывающие и пустые тэги (в HTML понятие пустого тэга тоже существует, но специального его обозначения не требуется).
Тело документа XML состоит из элементов разметки(markup) и непосредственно содержимого документа — данных(content). XML — тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка.
Любой XML-документ должен всегда начинаться с инструкции
?xml?, внутри которой также можно задавать номер версии языка, номер кодовой страницы и другие параметры, необходимые программе-анализатору в процессе разбора документа.
В общем случае XML-документы должны удовлетворять следующим требованиям

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

Если XML-документ не нарушает приведенные правила, то он называется формально-правильным и все анализаторы, предназначенные для разбора XML- документов, смогут работать с ним корректно. Однако кроме проверки на формальное соответствие грамматике языка, в документе могут присутствовать средства контроля над содержанием документа, за соблюдением правил, определяющих необходимые соотношений между элементами и формирующих структуру документа. Для того, чтобы обеспечить проверку корректности XML- документов, необходимо использовать анализаторы, производящие такую проверку и называемые верифицирующими. На сегодняшний день существует два способа контроля правильности XML-документа DTD — определения(Document Type Definition) и схемы данных(Semantic Schema). В отличии от SGML, определение DTD-правил в XML не является необходимостью.
Конструкции языка
Содержимое XML-документа представляет собой набор элементов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных.
Элементы данных
Элемент — это структурная единица XML-документа. Заключая слово rose в в тэги

, мы определяем непустой элемент, называемый

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

rose

Saratov

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

, .

Комментарии
Комментариями является любая область данных, заключенная между последовательностями символов
и
Комментарии пропускаются анализатором и поэтому при разборе структуры документа в качестве значащей информации не рассматриваются.
Атрибуты
Если при определении элементов необходимо задать какие-либо параметры, уточняющие его характеристики, то имеется возможность использовать атрибуты элемента. Атрибут — это пара «название» = «значение», которую надо задавать при определении элемента в начальном тэге. Пример

#ff08ff

white

или

Ivan Petrov

Специальные символы
Для того, чтобы включить в документ символ, используемый для определения каких-либо конструкций языка (например, символ угловой скобки) и не вызвать при этом ошибок в процессе разбора такого документа, нужно использовать его специальный символьный либо числовой идентификатор. Например, < , > » или $(десятичная форма записи), (шестнадцатеричная) и т.д. Строковые обозначения спецсимволов могут определяться в XML документе при помощи компонентов (entity).
Директивы анализатора
Инструкции, предназначенные для анализаторов языка, описываются в XML документе при помощи специальных тэгов —
? ;. Программа клиента использует эти инструкции для управления процессом разбора документа. Наиболее часто инструкции используются при определении типа документа (например,
? Xml
version=”1.0”?) или создании пространства имен.
CDATA Чтобы задать область документа, которую при разборе анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы, но, в отличии от комментариев, иметь возможность использовать их в приложении, необходимо использовать тэги
[CDATA] и ]]. Внутри этого блока можно помещать любую информацию, которая может понадобится программе- клиенту для выполнения каких-либо действий (в область CDATA, можно помещать, например, инструкции JavaScript). Естественно, надо следить за тем, чтобы в области, ограниченной этими тэгами не было последовательности символов ]]. 3. Моделирование XML-документов Одним из наиболее сильных свойств XML является возможность создавать собственные языки разметки, в которых определяются элементы и атрибуты, наилучшим образом соответствующие инкапсулируемой информации, и снимаются ограничения, вызываемые малопригодным языком общего назначения. Однако пока нельзя определить язык формальным образом, ограничить словарь элементов и атрибутов поддающимся управлению множеством и управлять грамматикой элементов. Процесс формального определения языка в XML называется моделированием документов. На сегодняшний день существует два способа моделирования документов определения типа документа (DTD), которые описывают структуру документа с помощью декларативных правил, и XML Schema, описывающую структуру документа на примере с помощью шаблонов элементов. Модель определяет документы, которые можно создать с помощью языка; или, в рамках терминологии XML, модель документа устанавливает, какие документы согласуются (conform) с языком. Модель документа отвечает на такие вопросы, как «Может ли быть заголовок у данного элемента?» или «Должна ли быть указана цена для этого элемента?» Модель является документом особого рода, написанным по правилам синтаксиса, предназначенного для описания языков XML, и явно описывает грамматику и словарь отдельного языка разметки. Иногда язык, который она описывает, называют типом документа (document type) или приложением XML (XML application). С помощью такой модели можно определить, согласуется ли некоторый документ XML с данным типом документа. Фактически написанные кем-то документы, называемые экземплярами документа (document instances), могут согласоваться с языком, описанным в модели документа или не согласоваться. Согласующиеся документы называют действительными (valid) в контексте языка; другие документы называют недействительными (invalid). Модель документа может быть лишним грузом, если надо сопровождать лишь один-два документа, но если документов много, а требования к качеству высоки, ее создание может окупиться. Вот некоторые ситуации, в которых модель документа в состоянии облегчить жизнь ● Документы создаются людьми и являются данными для компьютерной программы. Программы особенно привередливы в отношении форматов данных, потому что трудно создавать программы, способные справляться с отклонениями от формата. Ограничив применяемый шаблон предсказуемым форматом, намного легче писать программы, а вероятность ошибок уменьшается. Сравнение каждого экземпляра документа с моделью гарантирует, что вы не столкнетесь с проблемой несоответствия. ● В документе обязательно должны быть поля. Например, в бланке заказа изделия необходимо указать почтовый адрес, чтобы знать, куда отправлять посылку. Применение модели документа обеспечивает присутствие всех необходимых полей. ● Вы запрашиваете документы у людей, не знакомых с используемым приложением XML. Так как модель сама является документом, она может быть открытым ресурсом, доступным для загрузки, ссылок и передачи. Модель документа может выступать в качестве данных в средах создания структурированных документов, например, в редакторе XML. В такой программе редактор может автоматически вставлять необходимые поля и предлагать разработчику документа списки допустимых групп элементов. ● Разработчику нужна надежная структура для развивающегося языка или семейства языков. Модель документа предоставляет простой способ создания стандарта, такого, например, как HTML Version 4.0. Отслеживание новых версий языка жизненно важно для программ XML, поскольку старые программы могут оказаться несовместимыми с более новыми версиями языка. Модели документов можно объединить для создания составных языков. Например, DocBook использует модель таблиц CALS, а не пытается определить свою. Конечно, могут быть основания и не использовать модель документов. Сопровождение модели может оказаться неудобным, особенно в начале, когда язык подвергается тестированию и дальнейшей разработке. Она может замедлить обработку, например, если браузеры XML должны загружать модель документа из сети. Наконец, наличие авторитарной модели, указывающей, какие элементы можно использовать, а какие – нет, может просто сломать стиль работы. А, кроме того, нужно потратить силы на то, чтобы разработать модель или найти готовую, отвечающую потребностям. В конечном счете, автор сам решает, использовать модель документа или нет XML спроектирован так, что позволяет работать в любом случае. Некоторые модели документов (а именно, DTD) не очень хорошо работают с пространствами имен(пространства имен являются способом группировки элементов из различных источников, например, встраивания уравнений MathML внутрь документов HTML). Это создает проблемы, если DTD стремятся ограничить применяемые автором элементы предсказуемым конечным множеством. В настоящий момент исчерпывающего решения этой дилеммы нет. Невозможно предвидеть все виды пространств имен и объявить их элементы и атрибуты внутри своего DTD – их может быть бесконечное число. 4. Documents Type Definitions (DTD) В XML-документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документов(сложность DTD является одной из причин того, что использование SGML, требующего определение DTD для любого документа, не получило столь широкого распространения как, например, HTML). Как уже отмечалось, в XML использовать DTD не обязательно — документы, созданные без этих правил, будут правильно обрабатываться программой-анализатором, если они удовлетворяют основным требованиям синтаксиса XML. Однако контроль над типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа. До тех пор, пока грамматика нашего нового языка не описана, его может использовать только его автор, и для этого применять специально разработанное программное обеспечение, а не универсальные программы-анализаторы. В DTD для XML используются следующие типы правил правила для элементов и их атрибутов, описания категорий(макроопределений), описание форматов бинарных данных. Все они описывают основные конструкции языка — элементы, атрибуты, символьные константы внешние файлы бинарных данных. Для того, чтобы использовать DTD в документе, можно или описать его во внешнем файле и при описании DTD просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего DTD-описания
?xml version="1.0"
standalone="yes" ?
DOCTYPE team
SYSTEM "team.dtd" … Внутри же документа DTD- декларации включаются следующим образом …
DOCTYPE team
[ ELEMENT
team (coach, player, assistant) … ]> … В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа XML-процессор в первую очередь ищет DTD внутри документа. Если правила внутри документа не определены и не задан атрибут standalone =»yes» , то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда. Если же атрибут standalone имеет значение «yes», то использование внешних DTD описаний будет запрещено. Определение элемента Элемент в DTD определяется с помощью дескриптора !ELEMENT, в котором указывается название элемента и структура его содержимого. Например, для элемента
можно определить следующее правило
ELEMENT coach PCDATA Ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML. Внутри этой инструкции задается название элемента(coach) и тип его содержимого. В определении элемента мы указываем сначала название элемента(coach), а затем его модель содержимого — определяем, какие другие элементы или типы данных могут встречаться внутри него. В данном случае содержимое элемента name будет определяться при помощи специального маркера PCDATA( что означает parseable character data — любая информация, с которой может работать программа-анализатор). Существует еще две инструкции, определяющие тип содержимого EMPTY,ANY. Первая указывает на то, что элемент должен быть пустым(например,
), вторая — на то, что содержимое элемента специально не описывается. Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы +,*, ?
ELEMENT team(coach+,
player*, assistant?) В этом примере указывается, что внутри элемента
должны быть определены элементы coach, player и assistant, причем элемент title является обязательным элементом и может встречаться лишь однажды, элемент player может встречаться несколько раз, а элемент assistant является опциональным, т.е. может отсутствовать. В том случае, если существует несколько возможных вариантов содержимого определяемого элемента, их следует разделять при помощи символа «|»
ELEMENT flower (PCDATA | title )* Символ * в этом примере указывает на то, что определяемая последовательность внутренних элементов может быть повторена несколько раз или же совсем не использоваться. Если в определении элемента указывается «смешанное» содержимое, т.е. текстовые данные или набор элементов, то необходимо сначала указать PCDATA, а затем разделенный символом «|» список элементов. Пример корректного XML- документа
?xml
version="1.0"?

DOCTYPE ELEMENT
team (title,
ELEMENT

ELEMENT
name PCDATA
ELEMENT
player (name, nationality)
ELEMENT
nationality PCDATA
ELEMENT
l_name PCDATA ]> …

John

f_name
< l_name>Dixon
l_name < player number="1"> < f_name >Jorge
f_name

Woods

English

nationality

player … Определение атрибутов Списки атрибутов элемента определяются с помощью ключевого слова !ATTLIST. Внутри него задаются названия атрибутов, типы их значений и дополнительные параметры. Например, для элемента

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

ATTLIST
В данном примере для элемента player определяются три атрибута number и type, которые имеют типы ID(идентификатор) и список возможных значений соответственно. Всего существует шесть возможных типов значений атрибута

CDATA — содержимым документа могут быть любые символьные данные
ID — определяет уникальный идентификатор элемента в документе
IDREF(IDREFS) — указывает, что значением атрибута должно выступать название(или несколько таких названий, разделенных пробелами во втором случае) уникального идентификатора определенного в этом документе элемента
ENTITY(ENTITIES — значение атрибута должно быть названием(или списком названий, если используется ENTITIES) компонента (макроопределения), определенного в документе
NMTOKEN (NMTOKENS) — содержимым элемента может быть только одно отдельное слово(т.е. этот параметр является ограниченным вариантом CDATA)
Список допустимых значений — определяется список значений, которые может иметь данный атрибут.
Также в определении атрибута можно использовать следующие параметры

#REQUIRED — определяет обязательный атрибут, который должен быть задан во всех элементах данного типа
#IMPLIED — атрибут не является обязательным
#FIXED «значение» — указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано программе-анализатору
Значение — задает значение атрибута по умолчанию
Определение компонентов(макроопределений) Компонент (entity) представляет собой определения, содержимое которых может быть повторно использовано в документе. В других языках программирования подобные элементы называются макроопределениями. Создаются DTD-компоненты при помощи инструкции !ENTITY
ENTITY hello
‘ Мы рады приветствовать
Вас!’ Программа-анализатор, просматривая в первую очередь содержимое области DTD- определений, обработает эту инструкцию и при дальнейшем разборе документа будет использовать содержимое DTD-компонента в том месте, где будет встречаться его название. Т.е. теперь в документе мы можем использовать выражение &hello; , которое будет заменено на строчку «Мы рады приветствовать Вас» В общем случае, внутри DTD можно задать три типа макроопределений Внутренние макроопределения — предназначены для определения строковой константы, с их помощью можно организовывать ссылки на часто изменяемую информацию, делая документ более читабельным. Внутренние компоненты включаются в документ при помощи амперсанта & В XML существует пять предустановленных внутренних символьных констант

< - символ "<"
> — символ «>»
& — символ «&»
‘ — символ апострофа «‘»
» — символ двойной кавычки «»»
Внешние макроопределения — указывают на содержимое внешнего файла, причем этим содержимым могут быть как текстовые, так и двоичные данные. В первом случае в месте использования макроса будут вставлены текстовые строки, во втором — бинарные данные, которые анализатором не рассматриваются и используются внешними программами
ENTITY
logotype SYSTEM "/image.gif" NDATA GIF87A Макроопределения правил — макроопределения параметров могут использоваться только внутри области DTD и обозначаются специальным символом %, вставляемым перед названием макроса. При этом содержимое компонента будет помещено непосредственно в текст DTD-правила Например, для следующего фрагмента документа
ELEMENT

ELEMENT
name (PCDATA)
ELEMENT

ELEMENT
coach (PCDATA | name)
ELEMENT
player ((PCDATA | name), nationality)
можно использовать более короткую форму записи
ELEMENT
name (PCDATA)

ENTITY %names ‘PCDATA | name’
ELEMENT
coach (%names;)
ELEMENT
player (%names, nationality)
ENTITY
%content ‘coach | (player*)’
Макроопределения часто используются для описания параметров в правилах атрибутов. В этом случае появляется возможность использовать одинаковые определения атрибутов для различных элементов
ENTITY
%te
ENTITY
%playerattr "number ID #IMPLIED type CDATA,
ELEMENT
team (title,coach, player*,assistant?)
ATTLIST
team %teamattr;
ELEMENT
player (name, nationality)
ATTLIST
player %playerattr; Типизация данных Довольно часто при создании XML-элемента разработчику требуется определить, данные какого типа могут использоваться в качестве его содержимого. Т.е. если мы определяем элемент

10.10.98
, то хотим быть уверенными, что в документе в этом месте будет находиться строка, представляющая собой дату, а не число или произвольную последовательность символов. Используя типизацию данных, можно создавать элементы, значения которых могут использоваться, например, в качестве параметров SQL-запросов. Программа клиент в этом случае должна знать, к какому типу данных относится текущее значение элемента и в случае соответствия формирует SQL-запрос. Если в качестве программы на стороне клиента используется верифицирующий XML-процессор, то информацию о типе можно передавать при помощи специально созданного для этого атрибута элемента, имеющего соответствующее DTD-определение. В процессе разбора программа-анализатор передаст значение этого атрибута клиентскому приложению, которое сможет использовать эту информацию должным образом. Например, чтобы указать, что содержимое элемента должно быть длинным целым, можно использовать следующее DTD- определение
ELEMENT
counter (PCDATA)
ATTLIST
counter data_long CDATA #FIXED "LONG" Задав атрибуту значение по умолчанию LONG и определив его как FIXED, мы позволили тем самым программе-клиенту получить необходимую информацию о типе содержимого данного элемента, и теперь она может самостоятельно определить соответствие типа этого содержимого указанному в DTD-определении. Пример XML-документа, в котором определяются и используются несколько элементов с различными типами данных
ELEMENT
price (PCDATA)
ATTLIST
price data_currency CDATA #FIXED "CURRENCY"
ELEMENT
rooms_num (PCDATA)
ATTLIST
rooms_num data_byte CDATA #FIXED "BYTE"
ELEMENT
floor (PCDATA)
ATTLIST
floor data_byte CDATA #FIXED "INTEGER"
ELEMENT
living_space (PCDATA)
ATTLIST
living_space data_float CDATA #FIXED "FLOAT"
ELEMENT
counter (PCDATA)
ATTLIST
counter data_long CDATA #FIXED "LONG"
ELEMENT
is_tel (PCDATA)
ATTLIST
is_tel data_bool CDATA #FIXED "BOOL"
ELEMENT
house (rooms_num, floor,living_space,
ATTLIST
house id ID #REQUIED …

5

2

32.5

true

18346 100 р. 00 к.
… Как видно из примера, механизм создания элементов документа при этом нисколько не изменился. Все необходимая для проверки типов данных информация заложена в определения элементов внутри блока DTD. DTD весьма удобный механизм осуществления контроля за содержимым документа. На сегодняшний день, практически все программы просмотра документов Интернет используют DTD-правила. Однако это не единственный способ проверки корректности документа. В настоящий момент в W3 консорциуме находится на рассмотрении новый стандарт языка описания структуры документов, называемый схемами данных. 5. Схемы данных Схемы данных (Schemas) являются альтернативным способом создания правил построения XML-документов. По сравнению с DTD, схемы обладают более мощными средствами для определения сложных структур данных, обеспечивают более понятный способ описания грамматики языка, способны легко модернизироваться и расширяться. Безусловным достоинством схем является также то, что они позволяют описывать правила для XML-документа средствами самого же XML. Однако это не означает, что схемы могут полностью заменить DTD-описания — этот способ определения грамматики языка используется сейчас практическими всеми верифицирующими анализаторами XML и, более того, сами схемы, как обычные XML-элементы, тоже описываются DTD. Но серьезные возможности нового языка и его относительная простота, безусловно, дают основания утверждать, что будущий стандарт найдет широкое применение в качестве удобного и эффективного средства проверки корректности составления документов. В настоящее время в W3 консорциуме идет работа над первой спецификацией схем данных. Рассмотрим основные возможности схем данных, попытаемся использовать их для контроля корректности ранее описываемых XML-документов. Внешне документы схем не отличаются от обычных документов XML. Документ размечается при помощи специальных элементов, выполняющих в схемах роль инструкций. Эти инструкции составляют набор правил, используя которые, программа-клиент будет делать вывод о том, корректен документ или нет. Схема данных, например, может выглядеть следующем образом

TeamSchema»>

/>
Если мы включим приведенные правила внутрь XML-документа, программа-клиент сможет использовать их для проверки. Т.е. она теперь сможет определить, что правильным будет являться следующий фрагмент

John Ree
name
player
>

Peter Loyd
name
player
>

Emil McGeer
name
player

Все конструкции языка схем описываются правилами «XML DTD for XML-Data-Schema». Область схемы данных Создавая схемы данных, мы определяем в документе специальный элемент,
; внутри которого содержатся описания правил

последовательность
инструкций
Если использовать отдельное пространство имен, то полный XML-документ, содержащий в себе схему данных, будет выглядеть следующим образом
?XML
version=’1.0′ ?
?xml namespace

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

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

player»>

… В данном примере элементу layer> определяется атрибут number, значением которого может быть любая последовательность разрешенных символов Подобно DTD, схемы данных позволяют устанавливать ограничения на значения и способ использования атрибутов. Для этого в дескрипторе

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

player»>

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

type» atttype=»ENUMERATION»
values=»goalkeeper back halfback forward»>Модель содержимого элемента Под моделью содержимого в схеме данных понимают описание всех допустимых объектов XML-документа, использование которых внутри данного элемента является корректным. Модель содержимого определяется инструкциями, расположенными внутри блока

.
Вложенные элементы описываются при помощи инструкции element, в которой параметром type указывается класс объекта — ссылка на его определение

player»>

nationality
«/>
Если требуется указать режим использования вложенного элемента, то надо определить параметр occurs

player»>

Возможные значения этого параметра таковы

REQUIRED — элемент должен быть обязательно определен
OPTIONAL — использование элемента не является обязательным
ZEROORMORE — вложенный элемент может встречаться несколько раз или ни разу
ONEORMORE — элемент должен встречаться хотя бы один раз
Примеры правильных XML-документов, использующих приведенную выше схему John Ree English

Celtics

Portsmut

или

John Ree

Celtics
Portsmut

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

— указывает на то, что содержимым элемента является только свободная текстовая информация(секция PCDATA)

name»>

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

coach»>

— любое сочетание элементов и текста

player»>

— пустой элемент.
Группировка элементов Элемент group используется для того, чтобы задать некоторую последовательность вложенных объектов

team»>

Группировка объектов позволяет определять сразу группу объектов различных типов, которые могут находится внутри данного объекта. В приведенном примере мы указали, что внутри объекта типа conteam могут быть включены элементы title, player, и assistant, причем атрибутом occurs мы указали, что элементы в группе являются необязательными. Корректным для таких схем будут являться следующие фрагменты документов Celtics …



Celtics …
Celtics … При помощи атрибута groupOrder можно также задавать режим использования группированных элементов При установленном значении OR возможно использование не всех элементов группы, а лишь некоторых из них. Если задано значение AND, то оба элемента должны быть включены в обязательном порядке. Например, для следующей группы правил

team»>

будут считаться правильными только следующие варианты Celtics … </p> <p> … <br /> или <br /> Celtics</tel</b</p<br /> … <br /> </Bplayer> <br /> </Bteam>Закрытая и открытая модели описания содержимого элемента Когда мы определяем модель содержимого текущего элемента, список дополнительных допустимых элементов правилами не ограничивается — он может свободно расширяться. Например, для приведенного выше правила, кроме обозначенных элементов , </p> <p> и </p> <p> вполне могут использоваться дополнительные элементы, неописанные правилами, например, </p> <p> Celtics</tel</b</p <br /> … <br /> … <br /> </Bplayer> <assistant> … <br /> </Bassistant> <br /> </Bteam> Однако в том случае, если мы хотим ограничить создаваемые нами правила от включения дополнительных элементов, мы должны использовать атрибут content и установить для него специальное значение CLOSED </p> <p> team» content=»CLOSED»> </p> <p> assistant <br /> «> <br /> Теперь приведенный фрагмент XML-документа будет считаться некорректным, т.к. параметром content запрещено использование внутри элемента team других объектов, кроме указанных в правиле. Иерархия классов Для того, чтобы при описании класса ограничить список объектов, которые могут являться родительскими для данного элемента, необходимо использовать элемент схемы domain. Инструкция <br /> указывает, что текущий объект должен определяться строго внутри элемента, заданного этим тэгом. Например, в следующем фрагменте указывается, что элемент </p> <p> может быть определен строго внутри тэга </p> <p> player»> </p> <p> Ограничения на значения Значения элементов могут быть ограничены при помощи тэгов </p> <p> и <br /> ; </p> <p> team»> </p> <p> 11 </p> <p> 25 </p> <p> Использование правил из внешних схем Схема может использовать элементы и атрибуты из других схем. Для этого надо использовать атрибут href, в котором указывается название внешней схемы. Например <br /> ?XML<br />version=’1.0′ ? <br /> ?xml namespace<br />name="urn uuid BDC6E3F0-6DA3-11d1-</B A2A3-00AA00C14882/" as="s"/?> </p> <p> Компоненты схем Компоненты, или макроопределении, используются в схемах точно также, как и в DTD. Для их определения предназначены тэги <br /> и <br /> ; </p> <p> gk <br /> «> <br /> goalkeeper <br /> systemId=»logo.gif»/>Типы данных В схемах существует возможность задавать тот или иной тип данных, используя при определении элемента директиву </p> <p> с указанием конкретного типа </p> <p> В DTD мы должны были создать атрибут с конкретным названием, определяющим операцию назначения формата данных, и значением, определенным как fixed. Использование элемента </p> <p> позволяет указывать это автоматически, но для обеспечения программной независимости необходимо сначала договориться об обозначениях типов данных(значения, которые должны передаваться параметру dt элемента datatype), для чего могут использоваться, например, универсальные идентификаторы ресурсов URI. В любом случае, как и прежде, все необходимые действия, связанные с конкретной интерпретацией данных, содержащихся в документе, осуществляются программой-клиентом и определяются логикой его работы. В разделе, посвященном DTD, мы уже рассматривали пример XML-документа, реализующего описанные нами возможности. Вот как выглядел бы этот пример при использовании схем данных </p> <p> … </p> <p> 5 </p> <p> 2 </p> <p> 32.5 </p> <p> true </p> <p> 18346 <br /> 34.28 </p> <p> … <br /> … Подводя итог всему сказанному, необходимо отметить, что процесс развития современных информационных систем настолько динамичен, что временной промежуток между появлением новой технологии и ее практическим использованием в реально действующих приложениях сегодня слишком мал. На смену устаревающему стандарту HTML в самое ближайшее время должен будет прийти новый, более гибкий и универсальный язык описания данных. И тот факт, что XML как язык еще не стандартизирован и некоторые его составляющие до сих пор находятся в стадии разработки, видимо, не является причиной невозможности его использования уже сегодня, для решения конкретных задач в реальных системах. Иллюстрационный пример Файл Clients.dtd </p> <p>parameter entities <br /> ENTITY<br />% basic.content ‘#PCDATA’ </p> <p>main elements <br /> ELEMENT<br />clients (client | visitor)* <br /> ELEMENT<br />client (name, password, fullname, address, mail, age, e-mail?,<br />registerIP?, lastlogin, money) <br /> ATTLIST<br />client</P id ID #REQUIRED type (active | passive) #IMPLIED > <br /> ELEMENT<br />visitor (registerIP?) <br /> ATTLIST<br />visitor</P id ID #REQUIRED > </p> <p>basic elements <br /> ELEMENT<br />name (%basic.content;)* <br /> ELEMENT<br />password (%basic.content;)* <br /> ELEMENT<br />fullname (%basic.content;)* <br /> ELEMENT<br />address (%basic.content;)* <br /> ELEMENT<br />mail (%basic.content;)* <br /> ELEMENT<br />age (%basic.content;)* <br /> ELEMENT<br />e-mail (%basic.content;)* <br /> ELEMENT<br />registerIP (%basic.content;)* <br /> ELEMENT<br />lastlogin (%basic.content;)* <br /> ELEMENT<br />money (%basic.content;)* <br /> ATTLIST<br />money</P type (current | int) "int" > XML документ действительный для этого DTD <br /> ?xml<br />version="1.0" encoding="UTF-8"? </p> <p> John Silver </p> <p> ********* </p> <p> John Fitzerald Silver <br /> London, Piccadilli st. 467 </p> <p> 3458739 p.c. 3487 </p> <p> 41 </p> <p> Silver@hotmail.com </p> <p> 172.36.01.12 </p> <p> 12.01.03 </p> <p> 1290 </p> <p> Arthur Swift </p> <p> ********* </p> <p> Arthur J. Swift <br /> Dublin. Solar st. 463 </p> <p> 65863483 p.c 2342 </p> <p> 61 </p> <p> 12.02.02 </p> <p> 1’000.0$ </p> <p> 192.23.41.03 <br /> W3C схема эквивалентная предыдущему DTD <br /> ?xml<br />version="1.0" encoding="UTF-8"? <br /> W3C<br />Schema generated by XML Spy v3.5 </p> <p> Литература </p> <p> “Изучаем XML” Э. Рей – Спб Символ-Плюс, 2001. </p> <p> “Мифы и реальности XML” Сергей Кузнецов — ИСП РАН, Центр информационных технологий. </p> <p> “Semantic Web роли XML и RDF” С. Деккер – журнал ‘Открытые системы’ сентябрь 2001 </p> <p> Материалы с CIT-forum’a </p> <p> Конец формы <br />«</p> </div> </article> </div> <!--noindex--> <center><a rel="nofollow" href="https://bestreferat.su/w/vsesdal" target="_blank"><img alt="Выполним-любую-студенческую-работу" data-src="https://bestreferat.su/wp-content/uploads/2021/12/vypolnim-lyubuyu.png" class="center lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="><noscript><img alt="Выполним-любую-студенческую-работу" data-src="https://bestreferat.su/wp-content/uploads/2021/12/vypolnim-lyubuyu.png" class="center lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="><noscript><img class="center" src="https://bestreferat.su/wp-content/uploads/2021/12/vypolnim-lyubuyu.png" alt="Выполним-любую-студенческую-работу"></noscript></noscript></a></center> <!--/noindex--> <div class="col-md-12 mt-5 wow fadeInUp"> <div id="comments" class="comments-area"> </div> </div> </div> </div> <div class="col-lg-4 pl-lg-4"> <div class="sidebar"> <aside id="custom_html-2" class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><!--noindex--> <center><a rel="nofollow noopener" href="https://vsesdal.com/promo/?ref=123962" target="_blank"><img alt="курсовые рефераты" data-src="https://bestreferat.su/wp-content/uploads/2021/08/vsesdal-300-2.png" class="center lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="><noscript><img class="center" src="https://bestreferat.su/wp-content/uploads/2021/08/vsesdal-300-2.png" alt="курсовые рефераты"></noscript></a></center> <!--/noindex--></div></aside><aside id="text-2" class="widget widget_text"><h5 class="widget-title">Калькулятор стоимости контрольных, курсовых и др. работ</h5> <div class="textwidget"><p><ELEMENT onchange="handler"></p> <style type='text/css'>form.wpcf8-form { position: static; border: 2px solid #716f6e; background-color: #214462; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; -webkit-box-shadow: rgba(000,000,000,0.9) 0 1px 2px, inset rgba(255,255,255,0.4) 0 0px 0; -moz-box-shadow: rgba(000,000,000,0.9) 0 1px 2px, inset rgba(255,255,255,0.4) 0 0px 0; box-shadow: rgba(000,000,000,0.9) 0 1px 2px, inset rgba(255,255,255,0.4) 0 0px 0; font-family: 'Helvetica Neue',Helvetica,sans-serif; text-decoration: none; vertical-align: middle; max-width: 300px; padding: 10px; }</style> <form class="wpcf8-form"> <div class="calc-rs-wrap"> <div class="calc-rs"> <p> <center><img decoding="async" width="137" height="67" alt="" data-src="https://bestreferat.su/wp-content/uploads/2021/08/foncalc.jpg" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" /><noscript><img decoding="async" src="https://bestreferat.su/wp-content/uploads/2021/08/foncalc.jpg" width="137" height="67" alt="" /></noscript></center></p> <div class="calc-rs-row"> <p></p> <p><span style="font-size: 24pt;"></span></p> <p><span style="font-size: 12pt;">Выбери параметры своей работы и узнай её примерную стоимость.</span></p> <div class="calc-rs-row-tile">Тип работы</div> <div class="calc-rs-row-body"> <select name="work-type" id="calc-type" onchange="showMessage()"><br /> <!--<option selected="selected"></option>--><option data-val="2700" value="v1" selected="selected">Курсовая</option><option data-val="13000" value="v2">Диплом. Бакалавр</option><option data-val="15000" value="v3">Диплом.Магистр</option><option data-val="300" value="v4">Автореферат</option><option data-val="300" value="v5">Аннотация</option><option data-val="1600" value="v6">Аспирантский реферат</option><option data-val="2700" value="v7">Бизнес-план</option><option data-val="150000" value="v8">Диссертация</option><option data-val="1000" value="v9">Дневник по практике</option><option data-val="700" value="v10">Домашняя работа</option><option data-val="400" value="v11">Задача</option><option data-val="800" value="v12">Кейс</option><option data-val="700" value="v13">Контрольная работа</option><option data-val="800" value="v14">Лабораторная работа</option><option data-val="35000" value="v15">Монография</option><option data-val="1600" value="v16">Научная статья</option><option data-val="200" value="v17">Ответы на билеты</option><option data-val="1700" value="v18">Отчет по практике</option><option data-val="700" value="v19">Перевод</option><option data-val="100" value="v20">План</option><option data-val="1000" value="v21">Повышение уникальности</option><option data-val="1000" value="v22">Презентация PowerPoint</option><option data-val="1400" value="v23">Реферат</option><option data-val="300" value="v24">Рецензия (только текст)</option><option data-val="1000" value="v25">Сочинение</option><option data-val="1600" value="v26">Статьи для диссертации</option><option data-val="1200" value="v27">Статья</option><option data-val="400" value="v28">Тест</option><option data-val="1200" value="v29">Эссе</option></select> </div> </p></div> <div class="calc-rs-row-dop"> <div class="calc-rs-row"> <div class="calc-rs-row-tile">Объем работы (стр.)</div> <div class="calc-rs-row-body"> <select onchange="showMessage()"><option data-kn="0" data-dn="0" data-mn="0" selected="selected"></option><option data-kn="0" data-dn="0" data-mn="0">5-10</option><option data-kn="0" data-dn="10" data-mn="10">10-20</option><option data-kn="0" data-dn="10" data-mn="20">20-40</option><option data-kn="20" data-dn="10" data-mn="30">41-50</option><option data-kn="60" data-dn="20" data-mn="40">51-60</option><option data-kn="70" data-dn="20" data-mn="50">61-70</option><option data-kn="80" data-dn="30" data-mn="60">71-80</option><option data-kn="90" data-dn="50" data-mn="70">81-90</option><option data-kn="100" data-dn="60" data-mn="80">91-100</option><option data-kn="100" data-dn="80" data-mn="90">101-110</option><option data-kn="100" data-dn="100" data-mn="100">111-120</option></select></div> </p></div> <div class="calc-rs-row"> <div class="calc-rs-row-tile">Срок исполнения</div> <div class="calc-rs-row-body"> <select onchange="showMessage()"><option data-kn="0" data-dn="0" data-mn="0" selected="selected"></option><option data-kn="100" data-dn="100" data-mn="100">1 день</option><option data-kn="50" data-dn="50" data-mn="80">2-3 дня</option><option data-kn="20" data-dn="20" data-mn="50">4 — 5 дней</option><option data-kn="0" data-dn="0" data-mn="20">6 — 10 дней</option><option data-kn="0" data-dn="0" data-mn="0">Более 10 дней</option></select></div> <div class="calc-rs-row"> <div class="calc-rs-row-tile">Оригинальность:</div> <div class="calc-rs-row-body"> <select onchange="showMessage()"><option data-kn="0" data-dn="0" data-mn="0" selected="selected"></option><option data-kn="3" data-dn="0" data-mn="50">10%</option><option data-kn="15" data-dn="0" data-mn="50">50%</option><option data-kn="21" data-dn="20" data-mn="80">70%</option><option data-kn="27" data-dn="20" data-mn="100">90%</option></select> </div> </p></div> </p></div> </div> <div class="calc-rs-row-end"> <div class="calc-rs-row-button"><a>Рассчитать</a></div> <div class="calc-rs-row-result"><span>0</span></div> </p></div> </p></div> </div> <p><span style="font-size: 12pt;" data-mce-mark="1">Рассчитанная стоимость является приблизительной. В расчет не включены следующие показатели работы:</span></p> <p><span style="font-size: 12pt;" data-mce-mark="1">1. Сложность темы.</span></p> <p><span style="font-size: 12pt;" data-mce-mark="1">2. Особые требования ВУЗа и научного руководителя.</span></p> <p><span style="font-size: 12pt;">Для уточнения цены отправьте нам заявку с описанием вашей ситуации, это бесплатно</span></p> <p><center><a href="https://bestreferat.su/w/vsesdalkalkulyator" class="button25">УТОЧНИТЬ СТОИМОСТЬ</a></center><br /> </form> </div> </aside><aside id="categories-2" class="widget widget_categories"><h5 class="widget-title">Содержание</h5> <ul> <li class="cat-item cat-item-4"><a href="https://bestreferat.su/category/aviaciya-i-kosmonavtika">Авиация и космонавтика</a> </li> <li class="cat-item cat-item-3"><a href="https://bestreferat.su/category/administrativnoe-pravo">Административное право</a> </li> <li class="cat-item cat-item-5"><a href="https://bestreferat.su/category/arbitrazhnyy-process">Арбитражный процесс</a> </li> <li class="cat-item cat-item-6"><a href="https://bestreferat.su/category/arhitektura">Архитектура</a> </li> <li class="cat-item cat-item-7"><a href="https://bestreferat.su/category/astrologiya">Астрология</a> </li> <li class="cat-item cat-item-8"><a href="https://bestreferat.su/category/astronomiya">Астрономия</a> </li> <li class="cat-item cat-item-9"><a href="https://bestreferat.su/category/bankovskoe-delo">Банковское дело</a> </li> <li class="cat-item cat-item-10"><a href="https://bestreferat.su/category/bezopasnost-zhiznedeyatelnosti">Безопасность жизнедеятельности</a> </li> <li class="cat-item cat-item-108"><a href="https://bestreferat.su/category/bilety">Билеты</a> </li> <li class="cat-item cat-item-11"><a href="https://bestreferat.su/category/biografii">Биографии</a> </li> <li class="cat-item cat-item-12"><a href="https://bestreferat.su/category/biologiya">Биология</a> </li> <li class="cat-item cat-item-13"><a href="https://bestreferat.su/category/biologiya-i-himiya">Биология и химия</a> </li> <li class="cat-item cat-item-14"><a href="https://bestreferat.su/category/birzhevoe-delo">Биржевое дело</a> </li> <li class="cat-item cat-item-15"><a href="https://bestreferat.su/category/botanika-i-selskoe-hoz-vo">Ботаника и сельское хоз-во</a> </li> <li class="cat-item cat-item-16"><a href="https://bestreferat.su/category/buhgalterskiy-uchet-i-audit">Бухгалтерский учет и аудит</a> </li> <li class="cat-item cat-item-17"><a href="https://bestreferat.su/category/gosudarstvo-i-pravo">Государство и право</a> </li> <li class="cat-item cat-item-18"><a href="https://bestreferat.su/category/grazhdanskoe-pravo-i-process">Гражданское право и процесс</a> </li> <li class="cat-item cat-item-19"><a href="https://bestreferat.su/category/deloproizvodstvo">Делопроизводство</a> </li> <li class="cat-item cat-item-20"><a href="https://bestreferat.su/category/dengi-i-kredit">Деньги и кредит</a> </li> <li class="cat-item cat-item-21"><a href="https://bestreferat.su/category/estestvoznanie">Естествознание</a> </li> <li class="cat-item cat-item-22"><a href="https://bestreferat.su/category/zhurnalistika">Журналистика</a> </li> <li class="cat-item cat-item-109"><a href="https://bestreferat.su/category/zakonodatelnaya-osnova-administrativnoj-otvetstvennosti">Законодательная основа административной ответственности</a> </li> <li class="cat-item cat-item-23"><a href="https://bestreferat.su/category/zoologiya">Зоология</a> </li> <li class="cat-item cat-item-24"><a href="https://bestreferat.su/category/izdatelskoe-delo-i-poligrafiya">Издательское дело и полиграфия</a> </li> <li class="cat-item cat-item-107"><a href="https://bestreferat.su/category/izlozheniya">Изложения</a> </li> <li class="cat-item cat-item-25"><a href="https://bestreferat.su/category/investicii">Инвестиции</a> </li> <li class="cat-item cat-item-26"><a href="https://bestreferat.su/category/inostrannyy-yazyk">Иностранный язык</a> </li> <li class="cat-item cat-item-27"><a href="https://bestreferat.su/category/informatika">Информатика</a> </li> <li class="cat-item cat-item-28"><a href="https://bestreferat.su/category/informatika-programmirovanie">Информатика программирование</a> </li> <li class="cat-item cat-item-29"><a href="https://bestreferat.su/category/kompyuternye-nauki">Компьютерные науки</a> </li> <li class="cat-item cat-item-30"><a href="https://bestreferat.su/category/kosmetologiya">Косметология</a> </li> <li class="cat-item cat-item-31"><a href="https://bestreferat.su/category/kraevedenie-i-etnografiya">Краеведение и этнография</a> </li> <li class="cat-item cat-item-32"><a href="https://bestreferat.su/category/kratkoe-soderzhanie-proizvedeniy">Краткое содержание произведений</a> </li> <li class="cat-item cat-item-33"><a href="https://bestreferat.su/category/kriminalistika">Криминалистика</a> </li> <li class="cat-item cat-item-34"><a href="https://bestreferat.su/category/kriminologiya">Криминология</a> </li> <li class="cat-item cat-item-35"><a href="https://bestreferat.su/category/kriptologiya">Криптология</a> </li> <li class="cat-item cat-item-36"><a href="https://bestreferat.su/category/kulinariya">Кулинария</a> </li> <li class="cat-item cat-item-37"><a href="https://bestreferat.su/category/literatura-i-russkiy-yazyk">Литература и русский язык</a> </li> <li class="cat-item cat-item-38"><a href="https://bestreferat.su/category/logika">Логика</a> </li> <li class="cat-item cat-item-39"><a href="https://bestreferat.su/category/logistika">Логистика</a> </li> <li class="cat-item cat-item-40"><a href="https://bestreferat.su/category/marketing">Маркетинг</a> </li> <li class="cat-item cat-item-41"><a href="https://bestreferat.su/category/matematika">Математика</a> </li> <li class="cat-item cat-item-43"><a href="https://bestreferat.su/category/medicinskie-nauki">Медицинские науки</a> </li> <li class="cat-item cat-item-44"><a href="https://bestreferat.su/category/mezhdunarodnoe-publichnoe-pravo">Международное публичное право</a> </li> <li class="cat-item cat-item-45"><a href="https://bestreferat.su/category/mezhdunarodnoe-chastnoe-pravo">Международное частное право</a> </li> <li class="cat-item cat-item-46"><a href="https://bestreferat.su/category/mezhdunarodnye-otnosheniya">Международные отношения</a> </li> <li class="cat-item cat-item-47"><a href="https://bestreferat.su/category/menedzhment">Менеджмент</a> </li> <li class="cat-item cat-item-48"><a href="https://bestreferat.su/category/metallurgiya">Металлургия</a> </li> <li class="cat-item cat-item-49"><a href="https://bestreferat.su/category/moskvovedenie">Москвоведение</a> </li> <li class="cat-item cat-item-50"><a href="https://bestreferat.su/category/muzyka">Музыка</a> </li> <li class="cat-item cat-item-51"><a href="https://bestreferat.su/category/municipalnoe-pravo">Муниципальное право</a> </li> <li class="cat-item cat-item-52"><a href="https://bestreferat.su/category/nalogi-nalogooblozhenie">Налоги налогообложение</a> </li> <li class="cat-item cat-item-53"><a href="https://bestreferat.su/category/nauka-i-tehnika">Наука и техника</a> </li> <li class="cat-item cat-item-54"><a href="https://bestreferat.su/category/nachertatelnaya-geometriya">Начертательная геометрия</a> </li> <li class="cat-item cat-item-55"><a href="https://bestreferat.su/category/okkultizm-i-ufologiya">Оккультизм и уфология</a> </li> <li class="cat-item cat-item-113"><a href="https://bestreferat.su/category/osnovnaya-chast-obshhie-polozheniya">Основная часть. Общие положения.</a> </li> <li class="cat-item cat-item-56"><a href="https://bestreferat.su/category/ostalnye-referaty">Остальные рефераты</a> </li> <li class="cat-item cat-item-57"><a href="https://bestreferat.su/category/pedagogika">Педагогика</a> </li> <li class="cat-item cat-item-58"><a href="https://bestreferat.su/category/politologiya">Политология</a> </li> <li class="cat-item cat-item-59"><a href="https://bestreferat.su/category/pravo">Право</a> </li> <li class="cat-item cat-item-61"><a href="https://bestreferat.su/category/predprinimatelstvo">Предпринимательство</a> </li> <li class="cat-item cat-item-62"><a href="https://bestreferat.su/category/promyshlennost-proizvodstvo">Промышленность производство</a> </li> <li class="cat-item cat-item-63"><a href="https://bestreferat.su/category/psihologiya">Психология</a> </li> <li class="cat-item cat-item-64"><a href="https://bestreferat.su/category/psihologiya-pedagogika">психология педагогика</a> </li> <li class="cat-item cat-item-65"><a href="https://bestreferat.su/category/radioelektronika">Радиоэлектроника</a> </li> <li class="cat-item cat-item-66"><a href="https://bestreferat.su/category/reklama">Реклама</a> </li> <li class="cat-item cat-item-67"><a href="https://bestreferat.su/category/religiya-i-mifologiya">Религия и мифология</a> </li> <li class="cat-item cat-item-68"><a href="https://bestreferat.su/category/ritorika">Риторика</a> </li> <li class="cat-item cat-item-69"><a href="https://bestreferat.su/category/seksologiya">Сексология</a> </li> <li class="cat-item cat-item-70"><a href="https://bestreferat.su/category/sociologiya">Социология</a> </li> <li class="cat-item cat-item-71"><a href="https://bestreferat.su/category/statistika">Статистика</a> </li> <li class="cat-item cat-item-72"><a href="https://bestreferat.su/category/strahovanie">Страхование</a> </li> <li class="cat-item cat-item-73"><a href="https://bestreferat.su/category/stroitelnye-nauki">Строительные науки</a> </li> <li class="cat-item cat-item-74"><a href="https://bestreferat.su/category/stroitelstvo">Строительство</a> </li> <li class="cat-item cat-item-75"><a href="https://bestreferat.su/category/shemotehnika">Схемотехника</a> </li> <li class="cat-item cat-item-76"><a href="https://bestreferat.su/category/tamozhennaya-sistema">Таможенная система</a> </li> <li class="cat-item cat-item-77"><a href="https://bestreferat.su/category/teoriya-gosudarstva-i-prava">Теория государства и права</a> </li> <li class="cat-item cat-item-78"><a href="https://bestreferat.su/category/teoriya-organizacii">Теория организации</a> </li> <li class="cat-item cat-item-79"><a href="https://bestreferat.su/category/teplotehnika">Теплотехника</a> </li> <li class="cat-item cat-item-80"><a href="https://bestreferat.su/category/tehnologiya">Технология</a> </li> <li class="cat-item cat-item-81"><a href="https://bestreferat.su/category/tovarovedenie">Товароведение</a> </li> <li class="cat-item cat-item-82"><a href="https://bestreferat.su/category/transport">Транспорт</a> </li> <li class="cat-item cat-item-83"><a href="https://bestreferat.su/category/trudovoe-pravo">Трудовое право</a> </li> <li class="cat-item cat-item-84"><a href="https://bestreferat.su/category/turizm">Туризм</a> </li> <li class="cat-item cat-item-85"><a href="https://bestreferat.su/category/ugolovnoe-pravo-i-process">Уголовное право и процесс</a> </li> <li class="cat-item cat-item-86"><a href="https://bestreferat.su/category/upravlenie">Управление</a> </li> <li class="cat-item cat-item-87"><a href="https://bestreferat.su/category/upravlencheskie-nauki">Управленческие науки</a> </li> <li class="cat-item cat-item-112"><a href="https://bestreferat.su/category/uchebnye-posobiya">Учебные Пособия</a> </li> <li class="cat-item cat-item-88"><a href="https://bestreferat.su/category/fizika">Физика</a> </li> <li class="cat-item cat-item-89"><a href="https://bestreferat.su/category/fizkultura-i-sport">Физкультура и спорт</a> </li> <li class="cat-item cat-item-90"><a href="https://bestreferat.su/category/filosofiya">Философия</a> </li> <li class="cat-item cat-item-91"><a href="https://bestreferat.su/category/finansovye-nauki">Финансовые науки</a> </li> <li class="cat-item cat-item-92"><a href="https://bestreferat.su/category/finansy">Финансы</a> </li> <li class="cat-item cat-item-93"><a href="https://bestreferat.su/category/fotografiya">Фотография</a> </li> <li class="cat-item cat-item-94"><a href="https://bestreferat.su/category/himiya">Химия</a> </li> <li class="cat-item cat-item-95"><a href="https://bestreferat.su/category/hozyaystvennoe-pravo">Хозяйственное право</a> </li> <li class="cat-item cat-item-96"><a href="https://bestreferat.su/category/cifrovye-ustroystva">Цифровые устройства</a> </li> <li class="cat-item cat-item-111"><a href="https://bestreferat.su/category/shpargalki">Шпаргалки</a> </li> <li class="cat-item cat-item-114"><a href="https://bestreferat.su/category/ekologicheskij-k-nemu-otnositsya-risk-razlichnyh-ekologicheskih-katastrof-i-bedstvij-navodnenij-pozharov-i-t-p-otriczatelno-skazyvayushhihsya-na-deyatelnosti-investiruemyh-obektov">Экологический. К нему относится риск различных экологических катастроф и бед­ствий (наводнений пожаров и т.п.) отрицательно сказывающихся на деятельности инвестируемых объектов.</a> </li> <li class="cat-item cat-item-97"><a href="https://bestreferat.su/category/ekologicheskoe-pravo">Экологическое право</a> </li> <li class="cat-item cat-item-98"><a href="https://bestreferat.su/category/ekologiya">Экология</a> </li> <li class="cat-item cat-item-99"><a href="https://bestreferat.su/category/ekonomika">Экономика</a> </li> <li class="cat-item cat-item-100"><a href="https://bestreferat.su/category/ekonomiko-matematicheskoe-modelirovanie">Экономико-математическое моделирование</a> </li> <li class="cat-item cat-item-101"><a href="https://bestreferat.su/category/ekonomicheskaya-geografiya">Экономическая география</a> </li> <li class="cat-item cat-item-102"><a href="https://bestreferat.su/category/ekonomicheskaya-teoriya">Экономическая теория</a> </li> <li class="cat-item cat-item-103"><a href="https://bestreferat.su/category/etika">Этика</a> </li> <li class="cat-item cat-item-104"><a href="https://bestreferat.su/category/yurisprudenciya">Юриспруденция</a> </li> <li class="cat-item cat-item-105"><a href="https://bestreferat.su/category/yazykovedenie">Языковедение</a> </li> <li class="cat-item cat-item-106"><a href="https://bestreferat.su/category/yazykoznanie-filologiya">Языкознание филология</a> </li> </ul> </aside> </div> </div> </div> </div> </section> <!--===// Start: Footer =================================--> </div> <footer id="footer-section" class="footer-section main-footer" style="background:url('https://bestreferat.su/wp-content/uploads/2021/08/footer.jpg') no-repeat scroll center center / cover rgb(0 0 0 / 0.75);background-blend-mode:multiply;"> <div class="footer-copyright"> <div class="container"> <div class="row align-items-center gy-lg-0 gy-4"> <div class="col-lg-6 col-md-6 col-12 text-lg-left text-md-left text-center"> <div class="widget-left text-lg-left text-md-left text-center"> <aside class="widget widget-contact"> <div class="contact-area"> <div class="contact-icon"> <div class="contact-corn"><i class="fa fa-phone"></i></div> </div> <div class="contact-icon-duplicate"><i class="fa fa-phone"></i></div> <div class="contact-info"> <h6 class="title"></h6> <p class="text"></p> </div> </div> </aside> </div> </div> <div class="col-lg-6 col-md-6 col-12 text-lg-right text-md-right text-center"> <div class="copyright-text"> Права защищены © 2015-2024 BestReferat <br /><a href="https://bestreferat.su/sitemap.xml" rel="noopener noreferrer" target="_blank">Карта сайта BestReferat_su</a> </div> </div> </div> </div> </div> <div class="footer-copyright"> <div class="container"> <div class="row align-items-center gy-lg-0 gy-4"> <div class="col-lg-12 col-md-12 col-12 text-lg-left text-md-left text-center"> <div class="copyright-text"> Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.<br><a href="https://bestreferat.su/wp-content/uploads/2022/07/politika-konfidentsialnosti-bestreferat.pdf" rel="noopener noreferrer" target="_blank">Политика конфиденциальности</a>    <a href="https://bestreferat.su/wp-content/uploads/2022/07/dogovor-oferta-bestreferat.pdf" rel="noopener noreferrer" target="_blank">Договор-Оферта</a> </div> </div> </div> </div> </div> </footer> <!-- Scrolling Up --> <button type="button" class="scrollingUp scrolling-btn" aria-label="scrollingUp"><i class="fa fa-angle-up"></i></button> </div> <script type='text/javascript'> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <script type="text/javascript" src="https://bestreferat.su/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=8.6.1" id="sourcebuster-js-js"></script> <script type="text/javascript" id="wc-order-attribution-js-extra"> /* <![CDATA[ */ var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"ajaxurl":"https:\/\/bestreferat.su\/wp-admin\/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}}; /* ]]> */ </script> <script type="text/javascript" src="https://bestreferat.su/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=8.6.1" id="wc-order-attribution-js"></script> <script type="text/javascript" src="https://bestreferat.su/wp-content/themes/cozipress/assets/js/bootstrap.min.js?ver=6.5.2" id="bootstrap-js"></script> <script type="text/javascript" src="https://bestreferat.su/wp-content/themes/cozipress/assets/js/owl.carousel.min.js?ver=6.5.2" id="owl-carousel-js"></script> <script type="text/javascript" src="https://bestreferat.su/wp-content/themes/cozipress/assets/js/custom.js?ver=6.5.2" id="cozipress-custom-js-js"></script> <script type="text/javascript" src="https://bestreferat.su/wp-content/themes/cozipress/assets/js/theme.min.js?ver=6.5.2" id="cozipress-theme-js-js"></script> <script type="text/javascript" src="https://bestreferat.su/wp-content/plugins/wp-smushit/app/assets/js/smush-lazy-load.min.js?ver=3.15.5" id="smush-lazy-load-js"></script> </body> </html> <!-- Dynamic page generated in 0.723 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-04-20 09:30:00 --> <!-- super cache -->