Язык XML. Язык запросов X-Query

Автор работы: Пользователь скрыл имя, 12 Мая 2013 в 20:28, реферат

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

XML (Extensible Markup Language) - это новый SGML-производный язык разметки документов, позволяющий структурировать информацию разного типа, используя для этого произвольный набор инструкций.
XML предназначен для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

Файлы: 1 файл

Реферат на тему- Язык xml. Язык запросов X query.doc

— 489.50 Кб (Скачать файл)

   Вот небольшой пример для нашего XML-документа:

<?xml encoding="koi8-r"?>

<!ELEMENT log (event)+>

<!ELEMENT event (ip-from,method,uri-to,result)>

<!ELEMENT method (#PCDATA)>

<!ELEMENT ip-from (#PCDATA)>

<!ELEMENT url-to (#PCDATA)>

<!ELEMENT response (#PCDATA)>

<!ATTLIST event

  result CDATA #IMPLIED

  date CDATA #IMPLIED>

   Сохранить этот файл под именем log.dtd и включить в XML-документ новую строчку:

    <!--DOCTYPE log SYSTEM "log.dtd"-->

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

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

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

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

<tree-node>

  <node-level1>

    <node-level2/>

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

    <node-level2/>

  </node-level1>

<node-level1>

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

<node-level1>

    <node-level2/>

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

</node-level1>

</tree-node>

дерево элементов выглядит так:

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

   Для  описания интерфейсов доступа к содержимому XML документов в спецификации DOM применяется платформонезависимый язык IDL и для использования их необходимо "перевести" на какой-то конкретный язык программирования. С точки зрения разработчиков прикладных программ DOM выглядит как набор объектов с определенными методами и свойствами.

 

 

Создание XML-документа

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

<?xml version="1.0" encoding="koi-8"?>

<notepad>

<note id="1" date="12/04/99" time="13:40">

<subject>Важная деловая встреча</subject>

 <importance/>

<text>

 Надо встретиться  с <person id="1625">

 Иваном Ивановичем</person>, предварительно

 позвонив ему по  телефону <tel>123-12-12</tel>

 </text>

</note>

...

<note id="2" date="12/04/99" time="13:58">

<subject>Позвонить домой</subject>

<text>

<tel>124-13-13</tel>

</text>

</note>

</notepad>

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

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

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

Правила создания

В общем случае XML- документы должны удовлетворять следующим требованиям:

• В заголовке документа помещается объявление XML, в котором указывается язык разметки документа, номер его версии и дополнительная информация.

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

• В XML учитывается регистр символов.

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

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

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

Если XML- документ не нарушает приведенные правила, то он называется формально-правильным и  все анализаторы, предназначенные для разбора XML- документов, смогут работать с ним корректно.

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

<country><title>Russia</title><city><title>

Novosibirsk</country></title></city>

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

На сегодняшний  день существует два способа контроля правильности XML- документа: DTD – определения (Document Type Definition) и схемы данных (Semantic Schema). Более подробно об использовании DTD и схемах мы поговорим в следующих разделах. В отличие от SGML, определение DTD- правил в XML не является необходимостью, и это обстоятельство позволяет нам создавать любые XML- документы, не ломая пока голову над весьма непростым синтаксисом DTD.

Структура документа

Простейший XML- документ может выглядеть  так:

<?xml version="1.0"?> 

<list_of_items>

<item id="1"><first/>Первый</item>

<item id="2">Второй <sub_item>подпункт 1

</sub_item></item>

<item id="3">Третий</item>

<item id="4"><last/>Последний</item>

</list_of_items>

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

Тело документа XML состоит из элементов  разметки (markup) и непосредственно  содержимого документа - данных (content). XML- тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка.

Любой XML- документ должен всегда начинаться с инструкции <?xml?>, внутри которой  также можно задавать номер версии языка, номер кодовой страницы и  другие параметры, необходимые программе-анализатору в процессе разбора документа.

Конструкции языка

Содержимое XML- документа представляет собой набор элементов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных. Рассмотрим каждый из них подробней.

Элементы данных

Элемент - это структурная единица XML- документа. Заключая слово rose в в тэги <flower> </flower> , мы определяем непустой элемент, называемый <flower>, содержимым которого является rose. В общем случае в качестве содержимого элементов могут выступать как просто какой-то текст, так и другие, вложенные, элементы документа, секции CDATA, инструкции по обработке, комментарии, - т.е. практически любые части XML- документа.

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

<flower>rose</flower>

<city>Novosibirsk</city>,

 а эти - нет:

<rose>

<flower>

rose

Набором всех элементов, содержащихся в документе, задается его структура и определяются все иерархические соотношения. Плоская модель данных превращается с использованием элементов в сложную иерархическую систему со множеством возможных связей между элементами. Например, в следующем примере мы описываем месторасположение Новосибирских университетов (указываем, что Новосибирский Университет расположен в городе Новосибирске, который, в свою очередь, находится в России), используя для этого вложенность элементов XML :

<country id="Russia">

<cities-list>

<city>

<title>Новосибирск</title>

<state>Siberia</state>

<universities-list>

<university id="2">

<title>Новосибирский Государственный

Технический Университет</title>

<noprivate/>

<address URL="www.nstu.ru"/>

<description>очень хороший институт</description>

</university> 

<university id="2">

<title>Новосибирский  Государственный 

Университет</title>

<noprivate/>

<address URL="www.nsu.ru"/>

<description>тоже не плохой</description>

</university> 

</universities-list>

</city>

</cities-list>

</country>

Производя в последствии поиск в этом документе, программа клиента будет  опираться на информацию, заложенную в его структуру - используя элементы документа. Т.е. если, например, требуется найти нужный университет в нужном городе, используя приведенный фрагмент документа, то необходимо будет просмотреть содержимое конкретного элемента <university>, находящегося внутри конкретного элемента <city>. Поиск при этом, естественно, будет гораздо более эффективен, чем нахождение нужной последовательности по всему документу.

В XML документе, как правило, определяется хотя бы один элемент, называемый корневым и с него программы-анализаторы начинают просмотр документа. В приведенном примере этим элементом является <country>

В некоторых  случаях тэги могут изменять и уточнять семантику тех или иных фрагментов документа, по разному определяя одну и ту же информацию и тем самым предоставляя приложению-анализатору этого документа сведения о контексте использования описываемых данных. Например, прочитав фрагмент <city>Holliwood</city> мы можем догадаться, что речь в этой части документа идет о городе, а вот во фрагменте <restaurant>Holliwood</restaurant> - о забегаловке.

В случае, если элемент не имеет содержимого, т.е. нет данных, которые он должен определять, он называется пустым. Примером пустых элементов в HTML могут служить такие тэги, как <br>, <hr>, <img>. Необходимо только помнить, что начальный и конечные тэги пустого элемента как бы объединяется в один, и надо обязательно ставить косую черту перед закрывающей угловой скобкой (например, <empty/>).

Комментарии

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

Атрибуты

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

<color RGB="true">#ff08ff</color>

<color RGB="false">white</color>

или

<author id=0>Ivan Petrov</author>

Специальные символы

Для того, чтобы включить в документ символ, используемый для определения  каких-либо конструкций языка (например, символ угловой скобки) и не вызвать при этом ошибок в процессе разбора такого документа, нужно использовать его специальный символьный либо числовой идентификатор. Например, &lt; , &gt; &quot; или &#036;(десятичная форма записи), &#x1a (шестнадцатеричная) и т.д. Строковые обозначения спецсиволов могут определяться в XML документе при помощи компонентов (entity).

В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа. Сущностью (англ. entity) в XML называются именованные  данные, обычно текстовые, в частности спецсимволы. Ссылка на сущность (англ. entity references) указывается в том месте, где должна быть сущность и состоит из амперсанда («&»), имени сущности и точки с запятой («;»). В XML есть несколько предопределённых сущностей, таких как «lt» (ссылаться на неё можно написав «&lt;») для левой угловой скобки и «amp» (ссылка — «&amp;») для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:

Информация о работе Язык XML. Язык запросов X-Query