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

Дисциплины:

Архитектура (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-элементов с XML-атрибутами



 

В рассмотренном примере XML-документа ни один из элементов не имел атрибутов. Атрибуты несколько усложняют связывание данных, хотя при этом можно сцеплять как элементы, имеющие атрибуты, так и сами атрибуты.

При связывании данных атрибут трактуется как дочерний элемент.

Для элемента record такая трактовка облегчает доступ (или позволяет игнорировать) к атрибуту. Например, следующая запись BOOK содержит атрибут с именем InStock:

 

<BOOK InStock =”да”>

<TITLE>Приключения Гекльбери Финна<TITLE>

<AUTHOR>Марк Твен</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE>

</BOOK>

 

Эта запись трактуется так, как если бы атрибут InStock был полем, принадлежащим BOOK, а значение InStock было бы содержимым этого поля. Таким образом, элемент BOOK воспринимался бы в соответствии со следующей структурой:

 

<BOOK>

<InStock>да</InStock>

<TITLE>Приключения Гекльбери Финна<TITLE>

<AUTHOR>Марк Твен</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE>

</BOOK>

 

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

 

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

 

(В этом примере предполагается, что XML-документ связан со страницей через фрагмент данных с именем dsoInventory.)

Следует учитывать, однако, что при добавлении атрибута к одному из элементов-полей в XML-документе, например, добавлении атрибута к полю AUTHOR,

 

<ВООК>

<TITLE>Приключения Гекльбери Финна<TITLE>

<AUTHOR Born=”1835”>Марк Твен</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE>

</BOOK>

 

после связывания данных элемент AUTHOR будет интерпретирован следующим образом:

 

<AUTHOR>

<Born>1835</Born>

Марк Твен

</AUTHOR>

В результате DSO будет хранить элемент как вложенную запись, а не как поле. (Напомним, что поля элементов могут содержать только символьные данные, но не дочерние элементы.) Следовательно, набор записей превратится в иерархический набор, а не в простой набор записей, и придется отображать вложенные записи с использованием вложенной таблицы, как описано в разделе “Использование вложенной таблицы для отображения иерархической структуры записей” ранее в этой главе.



Чтобы иметь возможность отобразить как символьные данные (Марк Твен), так и атрибут как вложенную запись, следует иметь в виду то обстоятельство, что DSO использует специальное имя $ТЕХТ для обращения ко всем символьным данным элемента, не включая при этом значений атрибута. Так, элемент AUTHOR будет интерпретирован следующим образом:

 

<AUTHOR>

<Born>1835</Born>

<$TEXT>Марк Твен</$TEXT>

</AUTHOR>

 

Можно использовать имя $ТЕХТ в качестве имени поля, чтобы связать ячейку таблицы с символьными данными, содержащимися в записи AUTHOR.

В Листинге 1.24 представлена HTML-страница, демонстрирующая все рассмотренные в этом разделе приемы. Данная HTML-страница позволяет отобразить XML-документ, представленный в листинге 1.25.

 

<HTML>

<HEAD>

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

</HEAD>

<BODY>

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

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

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

<THEAD>

<ТН>Заголовок</TH>

<ТН>Автор</TH>

<ТН>Обложка</TН>

<ТН>Страниц</TH>

<TH>Цена</TH>

<TH>Наличие</TH>

</THEAD>

<TR ALIGN="center">

<TD>

<TABLE DATASRC="#dsoInventoiy DATAFLD="TITLE">

<TR>

<ТD><SPAN DATASRC="$ТЕХT"></SРАN></TD>



</TR>

</TABLE>

</TD>

<TD>

<TABLE DATASRC="#dsoInventory" DATAFLD="AUTHOR">

<TR>

<TD><SPAN DATAFLD="$ТЕХT></SPAN></TD>

<TD><SPAN DATAFLD="Country"></SPAN></TD>

</TR>

</TABLE>

</TD>

<TD><SPAN DATAFTD="BINDING"></SPAN></TD>

<ТD><SPAN DАTAFLD="РАGЕS"></SPAN></TD>

<ТD><SPAN DATAFLD="PRICE"></SPAN></TD>

<TD><SPAN DATAFLD="Наличие"></SPAN></TD>

</TR>

</TABLE>

</BODY>

</HTML>

Листинг 1.24

 

<?xml version=”1.0”?>

<!-- Имя файла: Inventory05.xml -->

<INVENTORY>

<BOOK InStock=”да”>

<TITLE>Война и мир</TITLE>

<AUTHOR Country=”Россия”>Лев Толстой</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

<BOOK InStock=”да”>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR Country=”Россия”>Фёдор Достоевский</AUTHOR>

<BINDING>Мягкая обложка</BINDING>

<PAGES>590</PAGES>

<PRICE>14 000 рублей</PRICE>

</BOOK>

<BOOK InStock=”нет”>

<TITLE>Королева Марго</TITLE>

<AUTHOR Country=”Франция”>Александр Дюма</AUTHOR>

<BINDING>Мягкая обложка</BINDING>

<PAGES>410</PAGES>

<PRICE>10 000 рублей</PRICE>

</BOOK>

<BOOK InStock=”нет”>

<TITLE>Затерянный мир</TITLE>

<AUTHOR Country=”Англия”>Артур Конан Дойль</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>350</PAGES>

<PRICE>9 000 рублей</PRICE>

</BOOK>

</INVENTORY>

Листинг 1.25

 

На следующем рисунке, показано как Internet Explorer при помощи HTML-документа из листига 1.24 отобразит XML-документ из листинга 1.25.

На этой странице в последнем столбце внешней таблицы отображены значения атрибута InStock записи BOOK путем обычного сцепления его с элементом SPAN:

 

<TD><SPAN DATAFLD="InStock"></SPAN></TD>

 

Поскольку дочерний элемент AUTHOR элемента BOOK содержит атрибут (Country), он интерпретируется как вложенная запись, а не как поле, поэтому страница отображает его с помощью вложенной таблицы:

 

<TD>

<TABUE DATASRC="#dsoInventory" DATAFLD="AUTHOR">

<TR>

<TD><SPAN DATAFLD="$TEXT"></SPAN</TD>

<TD><SPAN DATAFLD="Country"></SPAN></TD>

<TR>

</TABLE>

</TD>

Рисунок 44. Отображение атрибутов элементов XML-документа

 

Специальное имя $ТЕХТ ссылается на весь текст внутри элемента AUTHOR, не включая значения атрибута. Этот текст состоит из имени автора (например, Лев Толстой).

Заметим, что поскольку элемент TITLE в BOOK может включать дочерний элемент (SUBTITLE), он также интерпретируется как вложенная запись, а не как поле, и должен также быть отображен с использованием вложенной таблицы:

<TD>

<TABLE DATASRC="#dsoInventory" DATAFLD="TITLE">

<TR>

<TD><SPAN DATAFLD="$TEXT"></SPAN></TD>

</TR>

</TABLE>

</TD>

Здесь $ТЕХТ используется для отображения всех символьных данных записи. (Нельзя установить связь только с текстом заголовка, не включая подзаголовка.)

 

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

 

1. Удалите связь с таблицей каскадных стилей из XML-документа, созданного в лабораторной работе №5.

2. Добавьте к элементу, содержащему данные о фамилии студента, атрибут, указывающий на пол.

3. Используя способ передачи HTML-разметки, отобразите на HTML-странице полужирным шрифтом содержимое элементов, в которые вложены данные о номерах групп, из XML-документа лабораторной работы №9.

4. Используя один из способов связывания с HTML-элементами, рядом с номером группы отобразите произвольный графический символ, имя файла которого вложено в элемент вышеуказанного XML-документа.

5. Используя способы связывания HTML-элементов с XML-атрибутами, отобразите полученный XML-документ на HTML-странице.

6. Оформите HTML-страницу по согласованию с преподавателем.

7. Сохраните XML-документ и HTML-страницу в папке под своей фамилией.

8. Откройте для просмотра созданную HTML-страницу в браузере Internet Explorer.

9. При появлении сообщений об ошибках, постарайтесь их найти и устранить.

10.Сдайте работу преподавателю.

 


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

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