Смекни!
smekni.com

Методические указания к лабораторным работам для студентов III курса фпми всех направлений и специальностей новосибирск (стр. 5 из 6)

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

Цель работы: Научиться отображать XML-документы с помощью связывания данных.

1. Методические указания

Метод связывания данных [5] требует создания HTML-страницы, связывания с ней XML-документа и установления взаимодействий стандартных HTML-элементов на странице, таких как SPAN или TABLE, с элементами XML. В дальнейшем HTML-элементы автоматически отображают информацию из связанных с ними XML-элементов.

Вот два основных этапа при связывании данных:

1. Установка связи XML-документа с HTML-страницей, на которой вы хотите отобразить данные XML. Этот шаг обычно реализуется включением HTML элемента с именем XML в HTML-страницу. Например, следующий элемент на HTML-странице связывает XML-документ Book.xml со страницей:

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

2. Сцепление HTML-элементов с XML-элементами. Когда вы сцепляете HTML-элементы с XML-элементом, HTML-элемент автоматически отображает содержимое XML-элемента. Например, следующий элемент SPAN на HTML-странице сцеплен с элементом AUTHOR связанного XML-документа:

<SPAN DATASRC="#dsoBook" DATAFLD="AUTHOR"></SPAN>

В результате HTML-элемент SPAN отображает содержимое XML-элемента AUTHOR.

Чтобы отобразить XML-документ на HTML-странице, вы должны установить его связь со страницей. Самый простой путь сделать это в Microsoft Internet Explorer 5 – включить в страницу HTML-элемент с именем XML, так называемый фрагмент данных. Вы можете использовать одну из двух различных форм записи для фрагмента данных.

· В первой форме весь текст XML-документа помещается между начальным и конечным тегами XML.

· Во второй форме записи HTML-элемент с именем XML остается пустым и содержит только URL XML-документа.

Когда Internet Explorer 5 открывает HTML-страницу, его встроенный XML-процессор синтаксически анализирует XML-документ. Internet Explorer 5 также создает программный объект, который носит название Объект исходных данных (Data Source Object DSO), который хранит данные XML и обеспечивает доступ к этим данным. DSO хранит данные XML как набор записей, т.е. множество записей и их полей.

Когда вы сцепляете HTML-элемент с XML-элементом, DSO автоматически предоставляет значение XML-элемента и управляет всеми его свойствами. DSO также позволяет вам напрямую осуществлять доступ и манипулирование имеющимся набором записей посредством ряда методов, свойств и событий.

Если вы открываете XML-документ через фрагмент данных на HTML-странице, Internet Explorer 5 проверяет, является ли документ корректно сформированным, а также – если документ включает объявление типа документа – является ли он валидным. Однако в том случае, если документ содержит ошибку, Internet Explorer 5 просто не будет отображать данные XML, не выводя сообщение об ошибке.

Вы можете осуществлять сцепление HTML-элементов с XML-элементами двумя основными способами.

· Табличное сцепление, что означает сцепление HTML-элемента TABLE с данными XML, так что в таблице автоматически отображается весь набор записей, принадлежащих XML-документу.

<TABLE DATASRC="#dsoInventory" BORDER="1" CELLPADDING="2">

<THEAD> <TH>Title</TH> <TH>Author</TH> </THEAD> <TR ALIGN="center"> <TD><SPAN DATAFLD="TITLE" STYLE="font-style:italic"></SPAN></TD> <TD><SPAN DATAFLD="AUTHOR"></SPAN></TD> </TR> </TABLE>

Если XML-документ содержит много записей, можно воспользоваться постраничный вывод, для этого необходимо:

· Установите максимальное число записей, которое будет выводиться на странице с помощью атрибута DATAPAGESIZE элемента TABLE.

· Присвойте уникальный идентификатор атрибуту ID элемента TABLE.

<TABLE ID="InventoryTable" DATASRC="#dsoInventory" DATAPAGESIZE="5">

· Для перемещением между записями используются методы элемента TABLE такие как FirstPage, previousPage, nextPage, LastPage.

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

<TABLE DATASRC="#dsoInventory" DATAFLD="BOOK" BORDER=0 CELLSPACING=10>

· Сцепление по отдельным записям, что означает сцепление не табличных элементов HTML (например, элементов SPAN) с XML-элементами таким образом, что за один раз отображается только одна запись.

<SPAN STYLE="font-weight:bold" DATASRC="#dsoBook" DATAFLD="TITLE"></SPAN>Нужно учитывать, что HTML-элемент может отобразить за раз только одну запись DSO (объект исходных данных), ассоциированную с XML-документом. Для доступа к другим записям нужно воспользоваться методами для перемещения между записями moveFirst, movePrevious, moveNext, moveLast, move, принадлежащими объекту recordset DSO.<BUTTON ONCLICK="dsoInventory.recordset.moveFirst()"> |&lt; First </BUTTON>Кроме представленных существует еще ряд других способов для связывания не табличных HTML-элементов. Это могут быть как индивидуальные HTML-элементы, используемые для связывания данных по одной записи, так и HTML-элементы, содержащиеся в сцепленной таблице HTML. Например:<A DATASRC="dsoInventory" DATAFLD="REVIEWS"> reviews</A>

Если необходимо отобразить атрибут элемента XML-документа, то следует учитывать, что DSO и элемент, и атрибут будет хранить как вложенные записи. Следовательно, набор записей превратится в иерархический набор, и для отображения вложенных записей необходимо будет воспользоваться вложенной таблицей. Чтобы иметь возможность отобразить как символьные данные, так и атрибут как вложенную запись, следует иметь в виду то обстоятельство, что DSO использует специальное имя $TEXT для обращения ко всем символьным данным элемента, не включая при этом значений атрибута, имя поля для которого будет совпадать с именем атрибута. Вы можете использовать имя $TEXT в качестве имени поля, чтобы связать ячейку таблицы с символьными данными, содержащимися в записи элемента. Например:

<TABLE DATASRC="#dsoInventory" DATAFLD="AUTHOR"> <TR> <TD><SPAN DATAFLD="$TEXT"></SPAN></TD> <TD><SPAN DATAFLD="Born"></SPAN></TD> </TR></TABLE>

2. Перечень вопросов к разработке

1. Написать HTML-страницу, связать с ней XML-документ из лабораторной работы №1

2. Установить взаимодействие стандартных HTML-элементов на странице, таких как SPAN и TABLE, с элементами XML.

3. Оформить отчет, включающий постановку задачи, тексты XML, HTML документов, демонстрацию работы программ.

4. Защитить лабораторную работу.

3. Контрольные вопросы

1. Основные этапы при связывании данных.

2. DSO.

3. Проверка на наличие ошибок XML.

4. Табличное сцепление данных. Постраничное отображение. Использование вложенных таблиц для отображения иерархической структуры записей.

5. Связывание данных по одной записи. Перемещение между записями.

6. Связывание HTML-элементов с XML-атрибутами.

Лабораторная работа №5

Отображение XML-документА с помощью DOM

Цель работы: Изучить основы библиотеки DOM. Научиться отображать XML-документы с использованием DOM.

1. Методические указания

При написании сценария [2,5] вы создаете HTML-страницу, связываете ее с XML-документом и имеете доступ к индивидуальным XML-элементам с помощью специально написанного кода сценария (JavaScript или Microsoft Visual Basic Scripting Edition [VBScript]). Браузер воспринимает XML-документ как объектную модель документа (Document Object Model – DOM), состоящую из большого набора объектов, свойств и команд. Написанный код позволяет осуществлять доступ, отображение и манипулирование XML-элементами.

В браузерах Internet Explorer 5 и выше находятся встроенные библиотеки DOM [2,5]. Для сценариев на стороне клиента доступно множество объектов для работы с XML-документом, самые важные из них, объекты XMLDOMDocument, XMLDOMNode, XMLDOMNodeList, XMLDOMParseError, представляющие интерфейс для доступа ко всему документу, отдельным его узлам и поддеревьям, предоставляющие необходимую для отладки информацию о произошедших ошибках анализатора соответственно.

Объект XMLDOMNode [2], реализующий базовый DOM интерфейс Node, предназначен для манипулирования с отдельным узлом дерева документа. Его свойства и методы позволяют получать и изменять полную информацию о текущем узле – его тип (dataType, nodeType, nodeTypeString), название (baseName, prefix, nodeName ), его содержимое (attributes ,text, nodeValue, childNodes) и т.д.

При выполнении данной лабораторной работы могут быть полезны следующие свойства:

nodeName – Возвращает полное название (вместе с Namespace атрибутом) текущего узла в виде строки. Доступно только для чтения.

baseName – Возвращает название элемента без префикса Namespace. Только для чтения.

prefix – Возвращает Namespace префикс. Только для чтения.

dataType – Определяет тип содержимого текущего узла (описываемый схемами данных). Доступно для записи и чтения.

nodeType – Возвращает тип текущего узла. Только для чтения.

nodeTypeString – Возвращает тип узла в виде текста. Только для чтения.

attributes – Возвращает список атрибутов текущего узла в виде коллекции XMLDOMNamedNodeMap. Если атрибутов нет, то свойство length будет содержать нулевое значение. Для тех узлов, у которых не может быть атрибутов, возвращается null. Доступно только для чтения.

nodeValue – Возвращает содержимое текущего узла. Доступно для чтения и записи.

childNodes – Для тех узлов, которые имеют дочерние элементы, возвращает их список в виде XMLDOMNodeList. В том случае, если дочерних элементов нет, значение свойства length списка равно нулю. Только для чтения.

lastChild – Возвращает последний дочерний элемент или null, если таковых не имеется. Свойство доступно только для чтения.

firstChild – Возвращает первый дочерний элемент или null. Только для чтения.

nextSibling – Возвращает следующий дочерний элемент. Только для чтения.

previousSibling – Возвращает предыдущий дочерний элемент. Доступно только для чтения.

parentNode – Содержит ссылку на родительский элемент. В том случае, когда такого элемента нет, возвращает null. Доступно только для чтения.

Объект XMLDOMDocument [2] представляет верхний уровень объектной иерархии и содержит методы для работы с документом: его загрузки (readyState, load(url), loadXML(xmlString), save(objTarget), abort() и т.д.), создания в нем элементов (createElement(tagName)), атрибутов (createAttribute (name)), комментариев (createComment(data)) и т.д. Многие свойства и методы этого объекта реализованы также в рассмотренном выше классе Node, т.к. документ может быть рассмотрен как корневой узел с вложенными в него поддеревьями.