Смекни!
smekni.com

на тему: Язык xml. Язык запросов X query (стр. 2 из 14)

• XML поддерживает Юникод.

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

• XML — это самодокументируемый формат, который описывает структуру и имена полей также как и значения полей.

• XML имеет строго определённый синтаксис и требования к парсингу, что позволяет ему оставаться простым, эффективным и непротиворечивым.

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

• XML — формат, основанный на международных стандартах.

• Иерархическая структура XML подходит для описания практически любых типов документов.

• XML представляет собой простой текст, свободный от лицензирования и каких-либо ограничений.

• XML не зависит от платформы.

• XML является подмножеством SGML (который используется с 1986 года). Уже накоплен большой опыт работы с языком и созданы специализированные приложения.

• XML не накладывает требований на расположение символов на строке.

Одним из очевидных достоинств XML является возможность использования его в качестве универсального языка запросов к хранилищам информации. Сегодня в глубинах W3C находится на рассмотрении рабочий вариант стандарта XML-QL(или XQL), который, возможно, в будущем составит серьезную конкуренцию SQL. Кроме того, XML-документы могут выступать в качестве уникального способа хранения данных, который включает в себя одновременно средства для разбора информации и представления ее на стороне клиента. В этой области одним из перспективных направлений является интеграция Java и XML - технологий, позволяющая использовать мощь обеих технологий при построении машинно-независимых приложений, использующих, кроме того, универсальный формат данных при обмене информации.

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

Недостатки

· Синтаксис XML избыточен.

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

o Размер XML документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON) и особенно в форматах данных оптимизированных для конкретного случая использования.

o Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.

o Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения.

· XML не содержит встроенной в язык поддержки типов данных. В нём нет понятий «целых чисел», «строк», «дат», «булевых значений» и т.д.

· Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами.

· Пространства имён XML сложно использовать и их сложно реализовывать в XML парсерах.

· Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком (YAML , JSON, SweetXML).

Язык SGML

Standard Generalized Markup Language (SGML) - это некий метаязык, на котором можно определять язык разметки для документов. SGML — наследник разработанного в 1960 году в IBM языка GML (Generalized Markup Language).

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

Три основные части SGML документа, это

1. SGML декларация;

2. Document Type Definition;

3. Содержимое SGML-документа, по крайней мере, должен быть корневой элемент.

SGML предоставляет множество вариантов синтаксической разметки для использования различными приложениями. Изменяя SGML Declaration можно даже отказаться от использования угловых скобок, хотя, этот синтаксис считается стандартным, так называемым concrete reference syntax.

Пример SGML синтаксиса:

<QUOTE TYPE="example">

typically something like <ITALICS>this</ITALICS>

</QUOTE>

И HTML и XML произошли от SGML. HTML это некоторое приложение SGML, а XML это подмножество SGML, разработанное для упрощения процесса машинного разбора документа. Другими приложениями SGML является SGML Docbook (документирование), и «Z Format» (типографика и документирование).

XML-генераторы

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

Пусть, например, нашей задачей является создание формата хранения данных регистрации каких-то происходящих в системе событий (log-файла). В простейшем случае можно ограничиться фиксированием успешных и ошибочных запросов к нашим ресурсам - в таком документе должна присутствовать информация о времени произошедшего события, его результате (удача/ошибка), IP адресе источника запроса, URI ресурса и коде результата.

Наш XML документ может выглядеть следующим образом:

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

<log>

<event date=" 27/May/1999:02:32:46 " result="success">

<ip-from> 195.151.62.18 </ip-from>

<method>GET</method>

<url-to> /misc/</url-to>

<response>200</response>

</event>

<event date=" 27/May/1999:02:41:47 "

result="success">

<ip-from> 195.209.248.12 </ip-from>

<method>GET</method>

<url-to> /soft.htm</url-to>

<response>200</response>

</event>

</log>

Структура документа довольно проста - корневым в данном случае является элемент log, каждое произошедшее событие фиксируется в элементе event и описывается при помощи его атрибутов (date - время и result - тип события) и внутренних элементов (method - метод доступа, ip-from - адрес источника, url-to - запрашиваемый ресурс, response - код ответа). Генерацией этого документа может заниматься, например, модуль аутентификации запросов в систему, а использованием - программа обработки регистрационных данных (log viewer).

DTD-определения

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

Вот небольшой пример для нашего 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.