Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Доступ и отображение элементов XML-документа
Рассмотрим основные приемы использования HTML-страницы и DOM для отображения элементов XML-документа. Эти приёмы демонстрируются в файлах Book . xml и DomDemo_Fixed.htm. Содержание файла Book . xml:
<?xml version="1.0"?> <!-- Имя файла: Book.xml --> <BOOK> <TITLE> The Adventures of Huckleberry Finn </TITLE> <AUTHOR> Mark Twain </AUTHOR> <BINDING> mass market paperback </BINDING> <PAGES> 298 </PAGES> <PRICE> $5.49 </PRICE> </BOOK>
Содержание файла DomDemo_Fixed.htm:
<!-- Имя файла: DomDemo_Fixed.htm --> <HTML> <HEAD> <TITLE> Book Description </TITLE> <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> Book Description </H2> <SPAN STYLE="font-style:italic"> Title: </SPAN> <SPAN ID="title" STYLE="font-weight:bold"></SPAN> <BR> <SPAN STYLE="font-style:italic"> Author: </SPAN> <SPAN ID="author"></SPAN> <BR> <SPAN STYLE="font-style:italic"> Binding: </SPAN> <SPAN ID="binding"></SPAN> <BR> <SPAN STYLE="font-style:italic"> Number of pages: </SPAN> <SPAN ID="pages"></SPAN> <BR> <SPAN STYLE="font-style:italic"> Price: </SPAN> <SPAN ID="price"></SPAN> </BODY> </HTML>
Файл Book . xml содержит простой XML-документ, который описывает одну книгу. Его корневой элемент, BOOK, содержит пять дочерних элементов (TITLE , AUTHOR , BINDING , PAGES и PRICE), каждый из которых содержит символьные данные, описывающие характеристики книги. Файл DomDemo_Fixed.htm содержит HTML-страницу, которая отображает содержимое каждого из дочерних элементов в XML-документе. На рисунке 4.2 показано как эта страница выглядит в Internet Explorer.
Рис. 4.2 – Отображение файла DomDemo_Fixed.htm
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. В таблице 4.3 представлены другие полезные свойства, а также методы, относящиеся к узлу Document. Для узла Document можно использовать и общие свойства узлов, представленные в таблице 4.2. childNodes является свойством узла Element для корневого элемента. Оно содержит множество всех дочерних узлов корневого узла Element, не являющихся атрибутами. В нашем примере оно содержит узлы Element для пяти дочерних XML-элементов: TITLE , AUTHOR , BINDING , PAGES и PRICE. Выражение childNodes(0) ссылается на первый из этих дочерних узлов (а именно, на элемент TITLE). Примечание. В рассматриваемом примере страницы файла DomDemo_Fixed.htm можно использовать выражение Document . childNodes (2), чтобы получить доступ к узлу корневого элемента. Выражение Document.childNodes(0) относится к узлу XML-объявления, а выражение Document.childNodes(1) относится к узлу комментария. Однако преимущество использования свойства documentElement узла Document заключается в том, что его значение не зависит от положения корневого элемента внутри XML-документа. Например, если бы вы удалили комментарий в начале документа, либо если бы добавили объявление типа документа, выражение Document.childNodes(2) больше не представляло бы корневой элемент.
text является свойством узла, возвращаемого выражением childNodes(0). Оно предоставляет весь текст, содержащийся в этом узле, а также текст, принадлежащий любому подчиненному узлу Element. В нашем примере TITLE не имеет подчиненных элементов, поэтому свойство text содержит только собственно текст элемента TITLE, "The Adventures of Huckleberry Finn". Примечание. Свойства childNodes и text относятся к общим свойствам узлов (см. таблицу 4.2).
Таблица 4.3. Полезные свойства и методы, предоставляемые узлами Document. Общие свойства приведены в таблице 4.2
Символьные данные элемента TITLE, которые получены из выражения справа от знака равенства ("The Adventures of Huckleberry Finn") присваиваются свойству 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 устанавливает или получает текстовое содержимое элемента. Подробную информацию о работе с HTML и DHTML в Internet Explorer вы можете найти на Web-сайте, предоставленном MSDN:http://msdn.microsoft.com/workshop/author/default.asp.
4.3 Использование объекта NodeList Свойство childNodes узла содержит набор дочерних узлов текущего узла, не являющихся атрибутами. Доступ к дочерним узлам-атрибутам осуществляется через свойство attribute узла. Определенный тип набора, который содержит свойство childNodes , носит название объекта NodeList. Чтобы извлечь определенный дочерний узел из объекта NodeList, вы можете обратиться к его методу item, указав при этом индекс дочернего узла, который вы хотите получить (индексы отсчитываются с нуля). Например, обращение к следующему методу позволяет получить первый дочерний узел, принадлежащий узлу Element: FirstNode = Element.childNodes.item(0);
Однако, поскольку item является методом по умолчанию объекта NodeList, вы можете опустить его: FirstNode = Element.childNodes(0);
В таблице 4.4 представлены свойства и методы, предоставляемые объектом NodeList.
Таблица 4.4. Свойство и методы, поддерживаемые групповым объектом NodeLi st
Доступ к объекту NodeList осуществляется через свойство childNodes узла.
|
Последнее изменение этой страницы: 2019-05-08; Просмотров: 257; Нарушение авторского права страницы