Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2014-01 Третьякова_Инстр. средства ИС / Лекционный материал / Раздел 3 / 3.1 Правильно построенные и действительные документы XML

.docx
Скачиваний:
23
Добавлен:
20.02.2016
Размер:
15.97 Кб
Скачать

Правильно оформленные и верные документы.

Все объекты данных (документы), соответствующие спецификации XML, называются правильно оформленными ( well-formed ) документами. Правильно оформленный документ XML:

  1. содержит один или несколько элементов (ограниченных открывающим и закрывающим тегами), правильно вложенными друг в друга;

  2. существует только один корневой элемент, который содержит все остальные элементы документа.

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

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

Концепция правильно оформленных документов позволяет использовать данные XML без необходимости конструировать внешние описания данных и ссылаться на них.

Однако кроме проверки на формальное соответствие грамматике языка, в документе могут присутствовать средства контроля над содержанием документа: DTD - определения (Document Type Definition) и схемы данных (Semantic Schema). Прочитав формализованное описание и узнав из него схему документа, программа-анализатор может проверить соответствие каждого документа - его схеме и сделать вывод, верен этот документ или нет. Для того, чтобы обеспечить проверку корректности XML- документов, необходимо использовать анализаторы, производящие такую проверку.

Анализаторы.

Помимо определения синтаксиса XML, в рекомендации W3C описан так же процессор или анализатор XML. Существуют два типа анализаторов:

  • non-validating (не проверяющий на допустимость) - анализатор просто проверяет, чтобы объект данных был правильно оформленным документом XML

  • validating (проверяющий на допустимость) - с помощью определения DTD анализатор проверяет допустимость формы и содержания правильно оформленного документа XML

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

Событийно управляемые анализаторы.

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

Древовидные анализаторы.

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

Средства тестирования анализаторов.

Два разработчика недавно создали набор тестов для анализаторов XML (XML parser benchmark tests), применив их затем к различным анализаторам в системах Linux и Solaris. Результаты этих тестов показывают, что наиболее быстрыми являются анализаторы, написанные на языке С, за ними следуют те, что написаны на языке Java, а затем - на языках сценариев ( Perl и Python ).