Расширяемый язык разметки XML

Автор работы: Пользователь скрыл имя, 14 Октября 2013 в 23:51, курсовая работа

Описание работы

В 1996 году консорциумом Word Wide Web, была предпринята попытка, приступить к проектированию расширяемого языка разметки, который сочетал бы в себе гибкость и мощность языка SGML и совместимый с распространенностью HTML. Этот язык получил название (Extensible Markup Language) XML. А в феврале 1998 был принят стандарт этого языка как XML 1.0 в качестве рекомендаций W3C. В настоящий момент существует выпущенная 6 октября 2000 года Extensible Markup Language (XML) 1.0 (Second Edition) рекомендация консорциума W3C.

Содержание работы

Введение……………………………………………………………………стр.2
1.Расширяемый язык разметки XML……………………………………стр.3
1.1. Достоинства…………………………………………………………...стр.3
1.2. Недостатки………………………………………………………….....стр.5
1.3. Отображение XML во Всемирной паутине………………………...стр.6
1.4. Словари XML………………………………………………………....стр.7
2. Структура XML-документа……………………………………………стр.7
2.1. Конструкции языка…………………………………………………...стр.9
2.2. Моделирование XML-документов…………………………………стр.11
3. Схемы данных…………………………………………………………стр.19
Заключение………………………………………………………………стр.27
Список использованной литературы……………………………………

Файлы: 1 файл

курсовая по языку XML.docx

— 172.10 Кб (Скачать файл)
  • Определение элемента

Элемент в DTD определяется с помощью дескриптора !ELEMENT, в котором указывается название элемента и структура его содержимого. Например, для элемента можно определить следующее правило: ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML. Внутри этой инструкции задается название элемента(coach) и тип его содержимого. В определении элемента мы указываем сначала название элемента(coach), а затем его модель содержимого - определяем, какие другие элементы или типы данных могут встречаться внутри него. В данном случае содержимое элемента name будет определяться при помощи специального маркера PCDATA( что означает parseable character data - любая информация, с которой может работать программа-анализатор). Существует еще две инструкции, определяющие тип содержимого: EMPTY,ANY. Первая указывает на то, что элемент должен быть пустым(например, ), вторая - на то, что содержимое элемента специально не описывается. Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы +,*, ? :

В этом примере  указывается, что внутри элемента должны быть определены элементы coach, player и assistant, причем элемент title является обязательным элементом и может встречаться лишь однажды, элемент player может встречаться несколько раз, а элемент assistant является опциональным, т.е. может отсутствовать. В том случае, если существует несколько возможных вариантов содержимого определяемого элемента, их следует разделять при помощи символа "|" :

Символ * в  этом примере указывает на то, что  определяемая последовательность внутренних элементов может быть повторена  несколько раз или же совсем не использоваться. Если в определении  элемента указывается "смешанное" содержимое, т.е. текстовые данные или  набор элементов, то необходимо сначала  указать PCDATA, а затем разделенный  символом "|" список элементов. Пример корректного XML- документа:

team [

coach+, player*, assistant?)>

coach (name|PCDATA)>

]>

...

John

< l_name>Dixon

 

< player number="1">

< f_name >Jorge

Woods

English

 

  • Определение атрибутов 

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

player

number ID #REQUIRED

type (goalkeeper | back | halfback | forward) #IMPLIED

>

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

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

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

  • #REQUIRED - определяет обязательный атрибут, который должен быть задан во всех элементах данного типа
  • #IMPLIED - атрибут не является обязательным
  • #FIXED "значение" - указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано программе-анализатору
  • Значение - задает значение атрибута по умолчанию
  • Определение компонентов (макроопределений)

Компонент (entity) представляет собой определения, содержимое которых может быть повторно использовано в документе. В других языках программирования подобные элементы называются макроопределениями. Создаются DTD-компоненты при помощи инструкции !ENTITY:

Программа-анализатор, просматривая в первую очередь содержимое области DTD- определений, обработает эту инструкцию и при дальнейшем разборе документа будет использовать содержимое DTD-компонента в том месте, где будет встречаться его название. Т.е. теперь в документе мы можем использовать выражение &hello; , которое будет заменено на строчку "Мы рады приветствовать Вас"

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

В XML существует пять предустановленных  внутренних символьных констант:

  • < - символ "<"
  • > - символ ">"
  • & - символ "&"
  • ' - символ апострофа "'"
  • " - символ двойной кавычки """

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

Макроопределения правил - макроопределения параметров могут использоваться только внутри области DTD и обозначаются специальным символом %, вставляемым перед названием макроса. При этом содержимое компонента будет помещено непосредственно в текст DTD-правила

Например, для следующего фрагмента  документа:

title (PCDATA)>

nationality (PCDATA)>

ELEMENT team (title,coach, player*)>

можно использовать более короткую форму записи:

ELEMENT team (title,%content;)>

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

amattr 'country #REQUIRED CDATA '>

type (goalkeeper | back | halfback | forward) #IMPLIED CDATA'>

  • Типизация данных

Довольно часто при создании XML-элемента разработчику требуется  определить, данные какого типа могут  использоваться в качестве его содержимого. Т.е. если мы определяем элемент 10.10.98, то хотим быть уверенными, что в документе  в этом месте будет находиться строка, представляющая собой дату, а не число или произвольную последовательность символов. Используя типизацию данных, можно создавать элементы, значения которых могут использоваться, например, в качестве параметров SQL-запросов. Программа клиент в этом случае должна знать, к какому типу данных относится текущее значение элемента и в случае соответствия формирует SQL-запрос. Если в качестве программы на стороне клиента используется верифицирующий XML-процессор, то информацию о типе можно передавать при помощи специально созданного для этого атрибута элемента, имеющего соответствующее DTD-определение. В процессе разбора программа-анализатор передаст значение этого атрибута клиентскому приложению, которое сможет использовать эту информацию должным образом. Например, чтобы указать, что содержимое элемента должно быть длинным целым, можно использовать следующее DTD- определение:

Задав атрибуту значение по умолчанию LONG и определив его как FIXED, мы позволили тем самым программе-клиенту получить необходимую информацию о типе содержимого данного элемента, и теперь она может самостоятельно определить соответствие типа этого содержимого указанному в DTD-определении.

Пример XML-документа, в котором определяются и используются несколько элементов  с различными типами данных:

is_tel, counter, price)>

...

5

2

32.5

true

18346

<price>100 р. 00 к.price>

...

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

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

3. Схемы данных

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

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

TeamSchema">

/>

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

<team title=”Celtics”>

John Ree

>Peter Loyd

>Emil McGeer

team>

Все конструкции языка схем описываются правилами "XML DTD for XML-Data-Schema".

  • Область схемы данных

Создавая схемы данных, мы определяем в документе специальный элемент, ; внутри которого содержатся описания правил:

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

href="http://www.mrcpk.nstu.ru/schemas/" as="s"/?>

  • Описание элементов

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

  • Атрибуты элемента

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

player">

В данном примере элементу

layer> определяется атрибут number, значением которого может быть любая последовательность разрешенных символов:

<player number="0"/>

<player number="some text"/>

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

player">

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

type" atttype="ENUMERATION"

values="goalkeeper back halfback forward">

  • Модель содержимого элемента

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

player">

nationality"/>

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

player">

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

  • REQUIRED - элемент должен быть обязательно определен
  • OPTIONAL - использование элемента не является обязательным
  • ZEROORMORE - вложенный элемент может встречаться несколько раз или ни разу
  • ONEORMORE - элемент должен встречаться хотя бы один раз

Информация о работе Расширяемый язык разметки XML