![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Доступ и отображение элементов 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/
· 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 устанавливает или получает текстовое содержимое элемента.
![]() |