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

Дисциплины:

Архитектура (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)


 

 

 

 



Использование связывания данных по одной записи



 

Связывание данных по одной записи используется для HTML-элементов, которые не являются таблицами и не включены в связанную таблицу. HTML-элемент - например, SPAN, BUTTON или LABEL - связывается с отдельным полем XML. После этого HTML-элемент автоматически отображает содержимое поля XML, с которым он связан (сцеплен). Например, следующий HTML-элемент SPAN сцеплен с полем TITLE XML-документа, доступ к которому осуществляется через фрагмент данных dsoBook:

 

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

Поскольку HTML-элемент не имеет множественных частей, подобно таблице, он способен отобразить значение поля только для одной записи за раз. Чтобы использовать связывание данных по одной записи, XML-до-кумент должен быть организован как простой набор записей. (См. раздел “Использование одной HTML-таблицы для отображения простого набора записей” в начале этой главы.)

Наипростейшим случаем связывания данных по одной записи является случай, когда XML-документ состоит только из одной записи, подобно документу из Листинга 1.14.

В Листинге 1.19 представлена HTML-страница, которая связывает отдельный элемент SPAN с каждым из полей рассматриваемого документа (TITLE, AUTHOR, BINDING, PAGES, PRICE).

 

<HTML>

<HEAD>

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

</HEAD>

<BODY>

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

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

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

<SPAN STYLE="font-weight:bold" DATASRC="#dsoBook"

DATAFLD="TITLE"></SPAN>

<BR>

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

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

<BR>

<SPAN STYLE="font-style:italic">Тип обложки:</SPAN>

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

<BR>

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

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

<BR>

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

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

</BODY>

</HTML>

Листинг 1.19

 

На следующем рисунке показано, как Internet Explorer отобразит эту страницу.

Рисунок 41. Отображение данных по одной записи

 

Перемещение между записями

 

Если XML-документ содержит более одной записи (как обычно бывает), связывание данных по записям становится несколько более сложным, поскольку HTML-элемент может отобразить зараз только одну запись. Отображаемая в данный момент запись называется текущей записью. (Связывание данных по одной записи иногда называют еще связыванием по текущей записи.) Изначально текущей является первая запись в документе.

DSO (объект исходных данных), ассоциированный с XML-документом, предоставляет ряд методов (функций), которыми можно воспользоваться при перемещении между записями. Эти методы принадлежат объекту recordset DSO и приведены в таблице 5.17. Заметим, что примеры вызовов, приведенные в последнем столбце, предполагают, что HTML-страница содержит фрагмент данных XML с идентификатором (ID) dsoInventory.

Таблица 5.17

Методы объекта recordset

Методы объекта recordset DSO Переход от текущей записи к Пример вызова
moveFirst первой записи в документе dsoInventory.recordset.moveFirst()
movePrevious предыдущей записи dsoInventory.recordset.movePrevious()
moveNext следующей записи dsoInventory.recordset.moveNext()
moveLast последней записи в документе dsoInventory.recordset.moveLast()
move записи с указанным номером dsoInventory.recordset.move(5)

 

К этим методам можно обращаться из написанного кода сценария. Однако самый простой способ их вызова - это присвоить имя метода атрибуту ONCLICK элемента BUTTON, как в следующем примере:

 

<BUTTON ONCLICK="dsolnventory.recordset.moveFirst()">

Первая запись

</BUTTON>

Этот элемент отображает кнопку. Когда пользователь щелкает мышью на кнопке, вызывается метод, присвоенный атрибуту ONCLICK, dsolnventory.recordset.moveFirst().

Если текущей является первая запись, вызов метода movePrevious() приводит к перемещению в зону начала файла (BOF), где нет записей, поэтому сцепленный элемент будет пуст. Аналогично, вызов метода moveNext, если текущей является последняя запись, приводит к перемещению в зону конца файла (EOF), поэтому сцепленный элемент также будет пуст.

К счастью, объект recordset поддерживает свойство BOF, которое принимает значение true (истина), если достигнуто начало файла, а также свойство EOF, которое принимает значение true (истина), если достигнут конец файла. Эти свойства можно использовать для определения этих состояний и внесения необходимых корректировок. Например, приведенный ниже код предписывает при щелчке на кнопке в случае, если достигнуто начало файла, быстро отобразить первую запись:

 

<BUTTON ONCLICK="dsoInventory.recordset.movePrevious();

if (dsoInventory.recordset.BOF)

dsoInventory.recordset.moveNext()">

Назад

</BUTTON>

 

Следующий код проверяет достижение конца файла:

 

<BUTTON ONCLICK="dsoInventory.recordset.moveNext();

if (dsoInventory.recordset.EOF)

dsoInventory.recordset.movePrevious()">

Вперёд

</BUTTON>

 

Атрибуту ONCLICK (либо другим атрибутам, относящимся к событиям, например, ONMOUSEOVER) можно присвоить целый блок кода сценария. В этих примерах код написан на языке Microsoft JScript.

Ниже представлен пример HTML-страницы, при помощи которой XML-документа из Листинга 1.1 отображается по одной записи за один раз. Страница содержит кнопки для перехода к первой, предыдущей, последующей и последней записям (см. рисунок 42).

 

<HTML>

<HEAD>

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

</HEAD>

<BODY>

<XML ID="dsoInventory" SRC="Inventory.xml"></XML>

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

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

<SPAN DATASRC="#dsoInventory" DATAFLD="TITLE"

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

<BR>

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

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

<BR>

<SPAN STYLE="font-style:italic">Тип обложки:</SPAN>

<SPAN DATASRC="#dsoInventory" DATAFLD="BINDING"></SPAN>

<BR>

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

<SPAN DATASRC="#dsoInventory" DATAFLD="PAGES"></SPAN >

<BR>

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

<SPAN DATASRC="#dsoInventory" DATAFLD="PRICE"></SPAN>

<HR>

<BUTTON ONCLICK="dsoInventory.recordset.moveFirst()">

|&lt; First

</BUTTON>

<BUTTON ONCLICK="dsoInventory.recordset.movePrevious();

if (dsoInventory.recordset.BOF)

dsoInventory.recordset.moveNext()">

&lt; Back

</BUTTON>

<BUTTON ONCLICK="dsoInventory.recordset.moveNext();

if (dsoInventory.recordset.EOF)

dsoInventory.recordset.movePrevious()">

Forward &gt;

</BUTTON>

<BUTTON ONCLICK="dsoInventory.recordset.moveLast()">

Last &gt;|

</BUTTON>

</BODY>

</HTML>

Листинг 1.20

 



Просмотров 726

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




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