Опубликован: 24.01.2007 | Уровень: для всех | Доступ: платный
Лекция 9:

Отображение XML-документов с использованием сценариев объектной модели документа

В "Отображение XML-документов с использованием связывания данных" вы познакомились с программной моделью Data Source Object (DSO), которая позволяет вам использовать либо связывание данных, либо сценарии для отображения XML-документа с HTML-страницы. DSO хранит данные XML как набор записей, что удобно для отображения только тех XML-документов, которые имеют симметричную структуру записей.

В этой лекции вы узнаете о совершенно иной программной модели, известной как Объектная модель XML-документа, или DOM (Document Object Model). DOM состоит из группы программных объектов, представляющих различные компоненты XML-документа. Свойства и методы этих объектов позволяют вам использовать сценарии для отображения XML-документа с HTML-страницы. DOM хранит данные в иерархической, древообразной структуре, отражающей иерархическую структуру XML-документа – независимо от того, структурирован ли он как набор записей – и вы можете использовать ее для доступа к любым компонентам XML-документа, включая элементы, атрибуты, инструкции по обработке, комментарии и объявления нотаций и примитивов.

Примечание. Консорциум W3C использует термин Объектная модель документа (Document Object Model, или DOM) для обозначения более широкой объектной модели, которая обеспечивает доступ как к HTML-элементам, так и к XML-документам. (См. спецификацию "Document Object Model (DOM) Level 1 Specification" по адресу http://www.w3.org/TR/REC-DOM-Level-1.) Однако здесь этот термин применяется к обычной модели DOM XML, поддерживаемой Internet Explorer 5 и рассчитанной на доступ конкретно к XML-документам.

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

Связывание XML-документа с HTML-страницей

Чтобы получить доступ к XML-документу с использованием DOM, вы должны связать XML-документ с HTML-страницей. Самый простой способ – сделать это через фрагмент данных. Напомним, что фрагмент данных создается через HTML-элемент с именем XML. Например, следующий элемент BODY HTML-страницы содержит фрагмент данных, который связывает XML-документ, хранящийся в файле Book.xml:

<BODY>
  <XML ID="dsoBook" SRC="Book.xml"></XML>
  <!-- другие элементы отображаемой части страницы … -->
</BODY>

Подробнее о фрагментах данных рассказано в разделе "Шаг первый: установка связи XML-документа с HTML-страницей" в "Отображение XML-документов с использованием связывания данных" .

Идентификатор ID, который вы назначаете фрагменту данных, указывает на DSO документа (см. "Отображение XML-документов с использованием связывания данных" ). Вы можете использовать составляющую XMLDocument DSO для доступа к DOM, как показано в следующей строке кода сценария:

Document = dsoBook.XMLDocument;

Член XMLDocument содержит корневой объект DOM, известный как узел Document (Document node). Вы можете использовать узел Document для доступа к другим объектам DOM.

Так, создание фрагмента данных на HTML-странице предписывает Internet Explorer 5 создать как DSO (представленный непосредственно через ID фрагмента данных), так и DOM (доступ к которой осуществляется через член XMLDocument DSO).

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

Структура DOM

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

DOM использует различные типы узлов для представления различных типов компонентов XML. Например, элемент хранится в узле Element, а атрибут – в узле Attribute. В таблице 9.1 представлены наиболее важные типы узлов.

Таблица 9.1. Основные типы узлов, используемые для представления различных компонентов XML-документа. Каждый тип узла представляет собой программный объект, который обеспечивает свойства и методы для доступа к соответствующему компоненту
Тип узла Компоненты XML-документа, представляемые узлом Имя узла (свойство nodeName объекта) Значение узла (свойство nodeValue объекта)
Document Корневой узел иерархии документа (т. е. он представляет весь XML-документ) #document null
Element Элемент Имя типа элемента (например, BOOK ) null (любые символьные данные, содержащиеся в элементе, находятся в одном или нескольких дочерних узлах Text)
Text Текст, принадлежащий элементу, атрибуту или примитиву, которые представлены родителем этого узла #text Текст родительского XML-компонента
Attribute Атрибут (а также другие пары имя-значение, такие как имя и значение в инструкции по обработке) Имя атрибута (например, Binding ) Значение атрибута (например, hardcover )
Processing-Instruction Инструкция по обработке (объявление XML или пользовательская инструкция по обработке) Предназначение инструкции по обработке (например, xml ) Полное содержимое инструкции по обработке, за исключением предназначения (например, version="1.0" )
Comment Комментарий #comment Весь текст внутри ограничителей комментария
CDATASection Раздел CDATA #cdata-section Содержимое раздела CDATA
DocumentType Объявление типа документа Имя корневого элемента, содержащееся в объявлении DOCTYPE (например, INVENTORY ) null
Entity Объявление примитива в DTD Имя примитива (например, image ) null (значение примитива содержится в дочернем узле Text)
Notation Объявление нотации в DTD Имя нотации (например, BMP) null (системный литерал нотации содержится в дочернем узле Attribute с именем SYSTEM )
Максим Попов
Максим Попов

Почему при использовании скриптов, приведенных в курсе Основы XML

лекция Лекция 8: 

Отображение XML-документов с использованием связывания данных

не происходит связывания XLM документа с HTML?

Отображаются пустые поля. Браузер IE11

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Максим Самсоненко
Максим Самсоненко
Россия
Алексей Шибаев
Алексей Шибаев
Россия, г. Новошахтинск