Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Доступ и отображение элементов XML-документа



 

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

 

<HTML>

<HEAD>

<TITLE>Описание книги</TTTLE>

<SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD">

Document = dsoBook.XMLDocument;

title.innerText=Document.documentElement.childNodes(0).text;

author.innerText=Document.documentElement.childNodes(1).text;

binding.innerText=Document.documentElement.childNodes(2).text;

pages.innerText=Document.documentElement.childNodes(3).text;

price.innerText=Document.documentElement.childNodes(4).text;

</SCRIPT>

</HEAD>

<BODY>

<XML ID="dsoBook" SRC="Book.xml"></XML>

<H2>Описание книги</H2>

<SPAN STYLE="font-style:italic">Заголовок: </SPAN>

<SPAN ID="title" STYLE="font-weight:bold"></SPAN>

<BR>

<SPAN STYLE="font-style:italic">Автор: </SPAN>

<SPAN ID="author"></SPAN>

<BR>

<SPAN STYLE="font-style:italic">Обложка: </SPAN>

<SPAN ID="binding"></SPAN>

<BR>

<SPAN STYLE="font-style:italic">Количество страниц: </SPAN>

<SPAN ID="pages"></SPAN>

<BR>

<SPAN STYLE="font-style:italic">Цена: </SPAN>

<SPAN ID="price"></SPAN>

</BODY>

</HTML>

Листинг 1.28

 

На рисунке 47 показано как эта страница выглядит в Internet Explorer.

Рисунок 47. Отображение простого XML-документа с использованием структуры DOM

 

XML-документ связан со страницей через следующий фрагмент данных:

 

<XML ID="dsoBook" SRC="Book.xml></XML>

 

Страница отображает XML-документ посредством следующего блока кода сценария, который содержится в элементе HEAD страницы:

 

<SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD">

Document = dsoBook.XMLDocument;

title.innerText=Document.documentElement.childNodes(0)text;

author.innerText=Document.documentElement.childNodes(1)text;

binding.innerText=Document.documentElement.childNodes(2)text;

pages.innerText=Document.documentElement.childNodes(3)text;

price.innerText=Document.documentElement.childNodes(4)text;

</SCRIPT>

 

Установки атрибутов FOR="window" и EVENT="ONLOAD" предписывают браузеру выполнять код из элемента SCRIPT при первом открытии окна страницы до того, как будет отображено содержимое страницы. (Примеры сценариев в этой главе написаны на языке Microsoft JScript - версии Microsoft родового языка для сценариев JavaScript.)

Сценарий первым делом получает узел Document, который представляет весь документ и формирует корневой элемент иерархии узлов DOM. Он делает это через член XMLDocument DSO, как было описано ранее в этой главе:

 

Document = dsoBook.XMLDocument;

 

Далее сценарий получает доступ и отображает символьные данные, содержащиеся в каждом из дочерних элементов корневого элемента (TITLE, AUTHOR, BINDING, PAGES и PRICE). Например, он отображает содержимое первого дочернего элемента (TITLE) следующим образом:

 

title.innerText=Document.documentElement.childNodes(0).text;

 

Вот пояснение выражения, стоящего справа от знака равенства.

· Document. содержит узел Document в основании (корне) иерархии узлов DOM.

· documentElement. представляет собой свойство узла Document. Оно содержит узел Element, представляющий корневой элемент XML-др-кумента - в нашем примере, BOOK. Свойство documentElement является одним из специфических для конкретного узла свойств, предоставляемых узлом типа Document. В таблице 5.22 представлены другие полезные свойства, а также методы, относящиеся к узлу Document. Для узла Document можно использовать и общие свойства узлов, представленные в таблице 5.21.

 

Таблица 5.22

Полезные свойства и методы, предоставляемые узлами Document/

Свойство узла Document Описание Пример
Doctype Узел DocumentType, представляющий объявление типа документа DocumentType = Document.doctype;
document-Element Узел Element, представляющий корневой элемент RootElement = Document.documentElement;
ondata-available Если присвоить этому свойству имя созданойфункции, то она будет вызываться в момент доступности данных XML Document.ondataavailable = MyDataAvailableHandler; (Функция MyDataAvauableHandler будет вызываться, когда станут доступными данные XML)
onready-statechange Если присвоить этому свойству имя созданной функции, то она будет вызываться всякий раз, когда изменяется свойство readyState узла Document (Об этом свойстве см. далее в этой таблице) Document.onreadystatechange = MyReadyStateHandler; (Функция MyReadyStateHandler будет вызываться всякий раз при изменении свойства readyState узла Document)
parseError Объект, который содержит информацию о любых ошибках, которые возникают в процессе обработки документа ErrorCode = Document.parseError.errorCode;
readyState Текущий статус загрузки и обработки XML-до-кумента. Может принимать одно из следующих числовых значений: 0: не инициализирован 1: загружается 2: загружен 3: интерактивный режим 4: завершение if (Document.readyState == 4) /* обработка данных... */
url URL XML-документа URL = Document.url;
getElementsByTagName (type-name) Возвращает множество NodeList всех элементов в документе, которые имеют заданное имя типа. Если указано «*», возвращает все элементы AuthorElementCollection = Document.getElementsByTag-Name ("AUTHOR");
NodeFromID (id-value) Возвращает узел, представляющий элемент, чей атрибут типа ID имеет указанное значение. (Подробнее об атрибутах ID см. выше) Element = Document.nodeFromID("8021");

 

· childNodes является свойством узла Element для корневого элемента. Оно содержит множество всех дочерних узлов корневого узла Element, не являющихся атрибутами. В нашем примере оно содержит узлы Element для пяти дочерних XML-элементов: TITLE, AUTHOR, BINDING, PAGES и PRICE. Выражение childNodes(0) ссылается на первый из этих дочерних узлов (а именно, на элемент TITLE). В рассматриваемом примере страницы (Листинг 1.28) можно использовать выражение Document.childNodes(2), чтобы получить доступ к узлу корневого элемента. (Выражение Document.childNodes(0) относится к узлу XML-объявления, а выражение Document.childNodes(1) относится к узлу комментария.) Однако преимущество использования свойства documentElement узла Document заключается в том, что его значение не зависит от положения корневого элемента внутри XML-документа. Например, если удалить комментарий в начале документа, либо добавить объявление типа документа, выражение Document.childNodes(2) уже не будет представлять корневой элемент.

· text является свойством узла, возвращаемого выражением childNodes(0). Оно предоставляет весь текст, содержащийся в этом узле, а также текст, принадлежащий любому подчиненному узлу Element. В нашем примере TITLE не имеет подчиненных элементов, поэтому свойство text содержит только собственно текст элемента TITLE, “Приключения Гекльбери Финна”. Свойства childNodes и text относятся к общим свойствам узлов (см. таблицу 5.21).

Символьные данные элемента TITLE, которые получены из выражения справа от знака равенства (“Приключения Гекльбери Финна”) присваиваются свойству innerText HTML-элемента SPAN, имеющему идентификатор title:

 

title.innerText=Document.documentElement.childNodes(0).text;

 

Этот элемента SPAN определен внутри элемента BODY HTML-страницы следующим образом:

 

<SPAN ID="title" STYLE="font-weight:bold"></SPAN>

 

Присвоение символьных данных свойству innerText элемента SPAN приводит к тому, что элемент SPAN отображает текст с использованием формата, определенного в его начальном теге (font-weight:bold).

В Dynamic HTML (DHTML), который поддерживает Internet Explorer, каждый HTML-элемент имеет набор свойств, которые можно использовать для установки или получения различных характеристик элемента через код сценария. Свойство innerText устанавливает или получает текстовое содержимое элемента.

 



Просмотров 745

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!