Структура XML - файлов

Автор работы: Пользователь скрыл имя, 02 Ноября 2013 в 11:09, контрольная работа

Краткое описание

XML (eXtensible Markup Language) - рекомендованный W3C язык разметки. XML - текстовый формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе специализированных языков разметки. XML является упрощённым подмножеством языка SGML (Standard Generalized Markup Language). XML документ отличается от HTML документа также и тем, как он отображается в веб-браузере. Без использования CSS или XSL XML-документ отображается как простой текст в большинстве веб-браузеров. Некоторые веб-браузеры, такие как Internet Explorer, Mozilla и Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

Вложенные файлы: 1 файл

Практика XML.docx

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

2.1 Структура XML - файлов

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

   Язык XML имеет следующие достоинства:

  • Это человеко-ориентированный формат документа, он понятен как человеку, так и компьютеру.
  • Поддерживает Юникод.
  • В формате XML могут быть описаны основные структуры данных - такие как записи, списки и деревья.
  • Это самодокументируемый формат, который описывает структуру и имена полей также как и значения полей.
  • Имеет строго определённый синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым.
  • Широко используется для хранения и обработки документов;
  • Это формат, основанный на международных стандартах;
  • Иерархическая структура XML подходит для описания практически любых типов документов;
  • Представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;
  • Не зависит от платформы;
  • Является подмножеством SGML, для которого накоплен большой опыт работы и созданы специализированные приложения;

   К известным недостаткам языка можно отнести следующие:

  • Синтаксис XML избыточен.
    • Размер XML документа существенно больше бинарного представления тех же данных (порядка 10 раз).
    • Размер XML документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON, YAML) и особенно в форматах данных, оптимизированных для конкретного случая использования.
    • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.
    • Для большого количества задач не нужна вся мощь синтаксиса XML, и можно использовать значительно более простые и производительные решения.
  • Пространства имён XML сложно использовать и их сложно реализовывать в XML парсерах.
  • XML не содержит встроенной в язык поддержки типов данных. В нём нет понятий "целых чисел", "строк", "дат", "булевых значений" и т. д.
  • Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами.

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

   Таблица 2.1.1 - Структура семейства XML

XML

Технические рекомендации об использовании XML

DTD

Определение типа документа (схема)

XDR

Формат XML Reduced (схема Microsoft)

XSD

Определение схемы XML (схемы W3C)

Пространство имен

Метод определения имен элементов  и атрибутов

XPath

Язык путей XML

XLink

Язык ссылок XML

XPointer

Язык указателей XML

DOM

API для объектной модели  документа

SAX

Простой API для XML

XSL

Расширяемый язык таблиц стилей

XSL-FO

Объекты форматирования XSL

XSLT

Язык преобразований XSL

XInclude

Синтаксис XML Include

XBase

Синтаксис XML Base URI


   Взаимосвязь между SGML, XML, HTML и некоторыми другими языками показана на следующей диаграмме:

Рисунок 2.1.1 - Взаимосвязь между SGML, XML и HTML

 

   XML документ имеет следующую структуру :

  • Первая строка XML документа называется объявлением XML. Это необязательная строка, указывающая версию стандарта XML (обычно это 1.0). Также здесь может быть указана кодировка символов и внешние зависимости.
  • Комментарий может быть размещен в любом месте дерева. XML комментарии размещаются внутри пары тегов <!-- и заканчиваются -->. Два знака дефис (--) не могут быть применены ни в какой части внутри комментария.
  • Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое.
  • Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы.
  • Открывающий тег состоит из имени элемента в угловых скобках;
  • Закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта.
  • Содержимым элемента называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы.
  • Кроме содержания у элемента могут быть атрибуты - пары "название"="значение", добавляемые внутрь открывающего тега после названия элемента.
  • Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе.
  • Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.
  • Для обозначения элемента без содержания, называемого пустым элементом, необходимо применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта "/".

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

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

   Чаще всего для описания схемы используются следующие спецификации:

  • DTD (Document Type Definition) - язык определения типа документов.
  • XDR (XML Data Reduced) - диалект XML, разработанный Microsoft.
  • XSD (язык определения схем XML) - рекомендована консорциумом W3C.

   XML документ отличается от HTML документа также и тем, как он отображается в веб-браузере. Без использования CSS или XSL XML-документ отображается как простой текст в большинстве веб-браузеров. Некоторые веб-браузеры, такие как Internet Explorer, Mozilla и Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

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

  • Применение стилей CSS.
  • Применение преобразования XSLT.
  • Написание на каком-либо языке программирования обработчика XML-документа.

   Простейший 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>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Особенности  работы  с компонентом TXMLDocument  в C++ Builder

   Компонент TXMLDocument представлен во вкладке Internet интегрированной среды С++ Builder.

   Свойства:

  • DOMVendor (по умолчанию присваивается значение MSXML). Для этого свойства также можно задать значение Open XML. Кроме двух упомянутых свойств, есть возможность установить и зарегистрировать другие модели DOM (Document Object Model, объектная модель документа), которые будут использоваться компонентом TXMLDocument. Иногда для этого применяется глобальная переменная DOMVendors.
  • FileName должно указывать на XML-документ, с которым вы работаете. Если документ не хранится во внешнем файле, а вводится непосредственно в виде потока XML-данных, в игру вступает свойство XML. Дважды щёлкнув мышью на поле свойства XML, вызовите диалоговое окно String List Editor с полем, в которое можно непосредственно вводить (или копировать) XML-данные. (Обратите внимание, что для одного и того же объекта XMLDocument можно использовать только одно из этих двух свойств; если задаётся значение для одного из них, то автоматически очищается другое).
  • NodeIndentStr задаёт величину отступа в структуре XML-документа. В качестве значения этого свойства можно задавать от одного до восьми пробелов или символ табуляции. Кроме того, есть возможность ввести собственную строку отступа, например состоящую из 12 пробелов. Значение свойства NodeIndentStr используется тогда и только тогда, когда в свойстве Option установлен флаг doNodeAutoIndent. По умолчанию для этого свойства задано значение false, поэтому значение свойства NodeIndentStr игнорируется.
  • флаги doNodeAutoCreate, doAttrNull, doAutoPrefix, doNamespaceDecl и doAutoSave. Последний флаг, значение которого по умолчанию равно false, используется для автоматического сохранения содержимого XML-документа в файле, заданном в свойстве FileName или XML, всякий раз, когда компонент TXMLDocument переводится в неактивное состояние. Для явного сохранения содержимого XML-документа следует воспользоваться методом SaveToFile(), который обладает необязательным аргументом FileName (если этот аргумент опущен, вместо него подставляется значение свойства FileName).
  • ParseOption, состоящее из флагов poResolveExternals, poValidateOnParse, poPreserveWhiteSpace и poAsyncLoad. По умолчанию значения всех этих флагов равны false.

   Интерфейсы компонента  TXMLDocument

   В компоненте TXMLDocument реализовано два разных интерфейса, однако доступ к одному из них можно получить только с помощью соответствующих свойств. Для этого свойство DOMDocument компонента TXMLDocument реализует интерфейс Delphi IDOMDocument (который преобразуется к интерфейсу C++Builder_di_IDOMDocument), который представляет собой определение низкоуровневого интерфейса DOM. DOM состоит из API древовидно структуры (сравнение с моделью SAX, представляющую собой API, основанный на событиях). Модуль Delphi xmldom.pas содержит для этой цели определение интерфейсов IDOMDocument, IDOMNode, IDOMNodeList, IDOMAttr, IDOMElement и IDOMText. В заголовочном файле xmldom.hpp, импортированном в C++Builder, эти интерфейсы преобразованы в _di_IDOMDocument, _di_IDOMNode, _di_IDOMNodeList, _di_IDOMAttr, _di_IDOMElement и _di_IDOMText соответсвтенно.

   Кроме стандартного  интерфейса, входящего в DOM, в компоненте TXMLDocument также непосредственно реализован интерфейс Delphi IXMLDocument (преобразованный в _di_IXMLDocument), в котором воплощён более высокоуровневый подход к работе с документами и данными в формате XML. Этому интерфейсу так же присущи некоторые черты DOM, однако он более мощный и более удобный в применении. Интерфейсы IXMLDocument, IXMLNode, IXMLNodeList и IXMLNodeCollection определены в файле XMLIntf.pas (а их преобразование в интерфейсы _di_IXMLDocument, _di_IXMLNode, _di_IXMLNodeList и _di_IXMLNodeCollection выполнены в файле XMLIntf.hpp).

   Несмотря на то, что интерфейс _di_IDOMDocument доступен через свойство DOMDocument, в среде C++Builder с компонентом TXMLDocument легче и удобнее работать с помощью интерфейса _di_IXMLDocument.


Информация о работе Структура XML - файлов