рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Documents Type Definitions DTD

Работа сделанна в 2003 году

Documents Type Definitions DTD - Курсовая Работа, раздел Программирование, - 2003 год - Трансформация XML документов Documents Type Definitions Dtd. В Xml-Документах Dtd Определяет Набор Действи...

Documents Type Definitions DTD. В XML-документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документовсложность DTD является одной из причин того, что использование SGML, требующего определение DTD для любого документа, не получило столь широкого распространения как, например, HTML. Как уже отмечалось, в XML использовать DTD не обязательно - документы, созданные без этих правил, будут правильно обрабатываться программой- анализатором, если они удовлетворяют основным требованиям синтаксиса XML. Однако контроль над типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа.

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

В DTD для XML используются следующие типы правил правила для элементов и их атрибутов, описания категориймакроопределений, описание форматов бинарных данных.

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

Для того, чтобы использовать DTD в документе, можно или описать его во внешнем файле и при описании DTD просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего DTD-описания xml version1.0 standaloneyes DOCTYPE team SYSTEM team.dtd Внутри же документа DTD- декларации включаются следующим образом DOCTYPE team ELEMENT team coach, player, assistant В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа XML-процессор в первую очередь ищет DTD внутри документа.

Если правила внутри документа не определены и не задан атрибут standalone yes, то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда.

Если же атрибут standalone имеет значение yes, то использование внешних DTD описаний будет запрещено. Определение элемента Элемент в DTD определяется с помощью дескриптора ELEMENT, в котором указывается название элемента и структура его содержимого. Например, для элемента coach можно определить следующее правило ELEMENT coach PCDATA Ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML. Внутри этой инструкции задается название элементаcoach и тип его содержимого. В определении элемента мы указываем сначала название элементаcoach, а затем его модель содержимого - определяем, какие другие элементы или типы данных могут встречаться внутри него. В данном случае содержимое элемента name будет определяться при помощи специального маркера PCDATA что означает parseable character data - любая информация, с которой может работать программа-анализатор.

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

Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы ELEMENT teamcoach, player, assistant В этом примере указывается, что внутри элемента team должны быть определены элементы coach, player и assistant, причем элемент title является обязательным элементом и может встречаться лишь однажды, элемент player может встречаться несколько раз, а элемент assistant является опциональным, т.е. может отсутствовать.

В том случае, если существует несколько возможных вариантов содержимого определяемого элемента, их следует разделять при помощи символа ELEMENT flower PCDATA title Символ в этом примере указывает на то, что определяемая последовательность внутренних элементов может быть повторена несколько раз или же совсем не использоваться.

Если в определении элемента указывается смешанное содержимое, т.е. текстовые данные или набор элементов, то необходимо сначала указать PCDATA, а затем разделенный символом список элементов. Пример корректного XML- документа xml version1.0 DOCTYPE team ELEMENT team title, coach, player, assistant ELEMENT coach namePCDATA ELEMENT name PCDATA ELEMENT player name, nationality ELEMENT nationality PCDATA ELEMENT lname PCDATA team coach fname John fname lname Dixon lname coach player number1 fname Jorge fname lname Woods lname nationality English nationality player team Определение атрибутов Списки атрибутов элемента определяются с помощью ключевого слова ATTLIST. Внутри него задаются названия атрибутов, типы их значений и дополнительные параметры.

Например, для элемента player могут быть определены следующие атрибуты ATTLIST player number ID REQUIRED type goalkeeper back halfback forward IMPLIED В данном примере для элемента player определяются три атрибута number и type, которые имеют типы IDидентификатор и список возможных значений соответственно. Всего существует шесть возможных типов значений атрибута CDATA - содержимым документа могут быть любые символьные данные ID - определяет уникальный идентификатор элемента в документе IDREFIDREFS - указывает, что значением атрибута должно выступать названиеили несколько таких названий, разделенных пробелами во втором случае уникального идентификатора определенного в этом документе элемента ENTITYENTITIES - значение атрибута должно быть названиемили списком названий, если используется ENTITIES компонента макроопределения, определенного в документе NMTOKEN NMTOKENS - содержимым элемента может быть только одно отдельное словот.е. этот параметр является ограниченным вариантом CDATA Список допустимых значений - определяется список значений, которые может иметь данный атрибут.

Также в определении атрибута можно использовать следующие параметры REQUIRED - определяет обязательный атрибут, который должен быть задан во всех элементах данного типа IMPLIED - атрибут не является обязательным FIXED значение - указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано программе-анализатору Значение - задает значение атрибута по умолчанию Определение компонентовмакроопределений Компонент entity представляет собой определения, содержимое которых может быть повторно использовано в документе.

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

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

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

В первом случае в месте использования макроса будут вставлены текстовые строки, во втором - бинарные данные, которые анализатором не рассматриваются и используются внешними программами ENTITY logotype SYSTEM image.gif NDATA GIF87A Макроопределения правил - макроопределения параметров могут использоваться только внутри области DTD и обозначаются специальным символом, вставляемым перед названием макроса.

При этом содержимое компонента будет помещено непосредственно в текст DTD-правила Например, для следующего фрагмента документа ELEMENT title PCDATA ELEMENT name PCDATA ELEMENT nationality PCDATA ELEMENT coach PCDATA name ELEMENT player PCDATA name, nationality ELEMENT team title, coach, player можно использовать более короткую форму записи ELEMENT name PCDATA ENTITY names PCDATA name ELEMENT coach names ELEMENT player names, nationality ENTITY content coach player ELEMENT team title, content Макроопределения часто используются для описания параметров в правилах атрибутов.

В этом случае появляется возможность использовать одинаковые определения атрибутов для различных элементов ENTITY teamattr country REQUIRED CDATA ENTITY playerattr number ID IMPLIED type CDATA, type goalkeeper back halfback forward IMPLIED CDATA ELEMENT team title, coach, player, assistant ATTLIST team teamattr ELEMENT player name, nationality ATTLIST player playerattr Типизация данных Довольно часто при создании XML-элемента разработчику требуется определить, данные какого типа могут использоваться в качестве его содержимого.

Т.е. если мы определяем элемент last-modified 10.10.98 last-modified, то хотим быть уверенными, что в документе в этом месте будет находиться строка, представляющая собой дату, а не число или произвольную последовательность символов.

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

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

В процессе разбора программа-анализатор передаст значение этого атрибута клиентскому приложению, которое сможет использовать эту информацию должным образом. Например, чтобы указать, что содержимое элемента должно быть длинным целым, можно использовать следующее DTD- определение ELEMENT counter PCDATA ATTLIST counter datalong CDATA FIXED LONG Задав атрибуту значение по умолчанию LONG и определив его как FIXED, мы позволили тем самым программе-клиенту получить необходимую информацию о типе содержимого данного элемента, и теперь она может самостоятельно определить соответствие типа этого содержимого указанному в DTD-определении.

Пример XML-документа, в котором определяются и используются несколько элементов с различными типами данных ELEMENT price PCDATA ATTLIST price datacurrency CDATA FIXED CURRENCY ELEMENT roomsnum PCDATA ATTLIST roomsnum databyte CDATA FIXED BYTE ELEMENT floor PCDATA ATTLIST floor databyte CDATA FIXED INTEGER ELEMENT livingspace PCDATA ATTLIST livingspace datafloat CDATA FIXED FLOAT ELEMENT counter PCDATA ATTLIST counter datalong CDATA FIXED LONG ELEMENT istel PCDATA ATTLIST istel databool CDATA FIXED BOOL ELEMENT house roomsnum, floor, livingspace, istel, counter, price ATTLIST house id ID REQUIED house id0 roomsnum 5 roomsnum floor 2 floor livingspace 32.5 livingspace istel true istel counter 18346 counter price 100 р. 00 к. price house Как видно из примера, механизм создания элементов документа при этом нисколько не изменился.

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

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

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

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

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

Эти инструкции составляют набор правил, используя которые, программа-клиент будет делать вывод о том, корректен документ или нет. Схема данных, например, может выглядеть следующем образом schema idTeamSchema elementType idnamee string elementType elementType idplayer element typename attribute namenumber attribute nametype elementType elementType idteam element typeplayer attribute nametitle elementType schema Если мы включим приведенные правила внутрь XML-документа, программа-клиент сможет использовать их для проверки.

Т.е. она теперь сможет определить, что правильным будет являться следующий фрагмент team titleCeltics player number1 typegoalkeeper name John Ree name player player number2 typeback name Peter Loyd name player player number2 typeforward name Emil McGeer name player team Все конструкции языка схем описываются правилами XML DTD for XML-Data-Schema. Область схемы данных Создавая схемы данных, мы определяем в документе специальный элемент, schema внутри которого содержатся описания правил schema idOurSchema последовательность инструкций schema Если использовать отдельное пространство имен, то полный XML-документ, содержащий в себе схему данных, будет выглядеть следующим образом XML version1.0 xmlnamespace hrefhttpwww.mrcpk.nstu.ruschemas ass sschema idOurSchema последовательность инструкций sschema Описание элементов Для определения класса элемента, к которому в дальнейшем будут применяться инструкции, описывающие его содержимое и структуру, предназначен специальный элемент схемы elementType. Название элемента задается атрибутом id. Все дальнейшие инструкции, которые относятся к описываемому классу, определяют его внутреннюю структуру и набор допустимых данных, содержатся внутри блока, заданного тэгами elementType и elementType. При определении класса элемента, можно также использовать комментарии к нему, которые заключаются в тэги descript descript Атрибуты элемента Для того, чтобы в описании элемента определить его атрибуты и описать свойства этих атрибутов нужно использовать элемент attribute elementType idplayer attribute namenumber elementType В данном примере элементу player определяется атрибут number, значением которого может быть любая последовательность разрешенных символов player number0 player numbersome text Подобно DTD, схемы данных позволяют устанавливать ограничения на значения и способ использования атрибутов.

Для этого в дескрипторе attribute необходимо использовать параметр atttype.

Например, если мы хотим указать, что значение атрибута должно использоваться программой-анализатором как уникальный идентификатор, то нам необходимо создать следующее правило elementType idplayer attribute namenumber atttypeID elementType Если же требуется задать список возможных значений атрибута, то пример будет выглядеть следующим образом attribute nametype atttypeENUMERATION valuesgoalkeeper back halfback forward Модель содержимого элемента Под моделью содержимого в схеме данных понимают описание всех допустимых объектов XML-документа, использование которых внутри данного элемента является корректным.

Модель содержимого определяется инструкциями, расположенными внутри блока elementType. Вложенные элементы описываются при помощи инструкции element, в которой параметром type указывается класс объекта - ссылка на его определение elementType idplayer element typename element typenationality elementType Если требуется указать режим использования вложенного элемента, то надо определить параметр occurs elementType idplayer element typename occursREQUIRED element typenationality occursOPTIONAL element typeclubs occursONEORMORE elementType Возможные значения этого параметра таковы REQUIRED - элемент должен быть обязательно определен OPTIONAL - использование элемента не является обязательным ZEROORMORE - вложенный элемент может встречаться несколько раз или ни разу ONEORMORE - элемент должен встречаться хотя бы один раз Примеры правильных XML-документов, использующих приведенную выше схему player name John Ree name nationality English nationality clubs Celtics clubs clubs Portsmut clubs article или player name John Ree name clubs Celtics clubs clubs Portsmut clubs article Кроме элементов, содержимым XML-документа могут также является обычный текст и области CDATA. Для обозначения типов содержимого текущего элемента в схемах используются следующие инструкции string - указывает на то, что содержимым элемента является только свободная текстовая информациясекция PCDATA elementType idname string elementType any - указывает на то, что содержимым элемента должны являться только элементы, без текста, незаключенного ни в один элемент elementType idcoach any elementType mixed - любое сочетание элементов и текста elementType idplayer mixed elementType empty - пустой элемент.

Группировка элементов Элемент group используется для того, чтобы задать некоторую последовательность вложенных объектов elementType idteam element typetitle occursREQUIRED group occursOPTIONAL element typeplayer element typeassistant group elementType Группировка объектов позволяет определять сразу группу объектов различных типов, которые могут находится внутри данного объекта.

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

Корректным для таких схем будут являться следующие фрагменты документов team title Celtics tel player player assistant assistant team team title Celtics tel team team title Celtics tel player player team При помощи атрибута groupOrder можно также задавать режим использования группированных элементов При установленном значении OR возможно использование не всех элементов группы, а лишь некоторых из них. Если задано значение AND, то оба элемента должны быть включены в обязательном порядке. Например, для следующей группы правил elementType idteam element typetitle occursREQUIRED group groupOrderAND occursOPTIONAL element typeplayer element typeassistant group elementType будут считаться правильными только следующие варианты team title Celtics tel player player assistant assistant team или team title Celtics tel player player team Закрытая и открытая модели описания содержимого элемента Когда мы определяем модель содержимого текущего элемента, список дополнительных допустимых элементов правилами не ограничивается - он может свободно расширяться.

Например, для приведенного выше правила, кроме обозначенных элементов title, player и assistant вполне могут использоваться дополнительные элементы, неописанные правилами, например, coach team title Celtics tel coach coach player player assistant assistant team Однако в том случае, если мы хотим ограничить создаваемые нами правила от включения дополнительных элементов, мы должны использовать атрибут content и установить для него специальное значение CLOSED elementType idteam contentCLOSED element typetitle element typeplayer element typeassistant elementType Теперь приведенный фрагмент XML-документа будет считаться некорректным, т.к. параметром content запрещено использование внутри элемента team других объектов, кроме указанных в правиле.

Иерархия классов Для того, чтобы при описании класса ограничить список объектов, которые могут являться родительскими для данного элемента, необходимо использовать элемент схемы domain.

Инструкция domain указывает, что текущий объект должен определяться строго внутри элемента, заданного этим тэгом.

Например, в следующем фрагменте указывается, что элемент player может быть определен строго внутри тэга team elementType idplayer element typename domain typearticle elementType Ограничения на значения Значения элементов могут быть ограничены при помощи тэгов min и max elementType idteam element typeplayer min 11 min max 25 max elementType Использование правил из внешних схем Схема может использовать элементы и атрибуты из других схем. Для этого надо использовать атрибут href, в котором указывается название внешней схемы.

Например XML version1.0 xmlnamespace nameurnuuidBDC6E3F0-6DA3-11d1- A2A3-00AA00C14882 ass sschema elementType idplayer any elementType elementType idtitle string elementType elementType idteam element typetitle occursREQUIRED element typeplayer occursONEORMORE element hrefhttpmrcpk.org elementType sschema elementType sschema Компоненты схем Компоненты, или макроопределении, используются в схемах точно также, как и в DTD. Для их определения предназначены тэги intEntityDcl и extEntityDcl intEntityDcl namegk goalkeeper intEntityDcl extEntityDcl namelogo notationgif systemIdlogo.gif Типы данных В схемах существует возможность задавать тот или иной тип данных, используя при определении элемента директиву datatype с указанием конкретного типа elementType idcounter datatype dtint elementType В DTD мы должны были создать атрибут с конкретным названием, определяющим операцию назначения формата данных, и значением, определенным как fixed.

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

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

Вот как выглядел бы этот пример при использовании схем данных schema idsomeschema elementType idroomsnum string datatype dtint schema elementType idfloor string datatype dtint schema elementType idlivingspace string datatype dtfloat schema elementType idistel string datatype dtboolean schema elementType idcounter string datatype dtfloat schema elementType idprice string datatype dtfloat schema elementType idcomments string datatype dtstring schema elementType idhouse element typeroomsnum occursONEORMORE element typefloor occursONEORMORE element typelivingspace occursONEORMORE element typeistel occursOPTIONAL element typecounter occursONEORMORE element typeprice occursONEORMORE element typecomments occursOPTIONAL elementType schema house id0 roomsnum 5 roomsnum floor 2 floor livingspace 32.5 livingspace istel true istel counter 18346 counter price 34.28 price comments comments house Подводя итог всему сказанному, необходимо отметить, что процесс развития современных информационных систем настолько динамичен, что временной промежуток между появлением новой технологии и ее практическим использованием в реально действующих приложениях сегодня слишком мал. На смену устаревающему стандарту HTML в самое ближайшее время должен будет прийти новый, более гибкий и универсальный язык описания данных.

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

– Конец работы –

Эта тема принадлежит разделу:

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

Сегодня количество приверженцев этой новой технологии возрастает очень стремительно. Несмотря на то, что XML очень молод международная организация… Когда осенью 1991 года Интернет впервые услышал о новой технологии, под… Сегодня для многих пользователей слово Интернет прочно ассоциируется с WWW и с уст специалистов не сходит тема…

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Documents Type Definitions DTD

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

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

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

Иллюстрационный пример
Иллюстрационный пример. Файл Clients.dtd parameter entities ENTITY basic.content PCDATA main elements ELEMENT clients client visitor ELEMENT client name, password, fullname, address, mail, age, e-m

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги