![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Связывание с другими HTML-элементами
При связывании элемента SPAN с полем XML элемент просто отображает содержимое поля. Это происходит потому, что свойство innerText элемента SPAN, которое определяет текст, отображаемый элементом, сцеплено с полем XML. В DHTML, поддерживаемом Internet Explorer, каждый HTML-элемент обладает набором свойств, которые можно использовать для установки или извлечения различных характеристик элемента с помощью кода сценария. Кроме того, для свойства автоматически устанавливается значение поля XML, с которым оно сцеплено. Однако, как видно из таблицы 5.18, для некоторых сцепляемых HTML-элементов с полем XML сцепляются и другие свойства. При связывании с элементом SPAN реально сцепляются его свойства innerText и innerHTML. Свойство inner-Text устанавливает или получает текстовое содержимое элемента, не включая в него HTML-разметку. Свойство innerHTML устанавливает или получает полное содержимое элемента, включая любую HTML-разметку. Например, для следующего сцепленного элемента А (элемент “анкер”, используемый для создания гиперссылок) свойство href сцеплено с полем XML:
<А DATASRC="dsolnventory" DATAFLD="REVIEWS"> Щёлкните здесь для просмотра </A>
Это свойство, как и атрибут HREF элемента, устанавливает URL для гиперссылки. Следовательно, из поля XML извлекается URL гиперссылки для сцепленного элемента А, а не его текстовое содержимое. (XML-поле REVIEWS в рассматриваемом примере должно содержать корректный URL.) В качестве другого примера рассмотрим связывание поля флажка элемента INPUT через свойство checked (которое изменяет статус выбора элемента (установлен или сброшен флажок)) с XML-полем:
<INPUTTYPE="CHECKBOX" DATASRC="#dsolnventory" DATAFLD="INSTOCK">
Если XML-поле INSTOCK пусто, либо содержит текст "0" или "false", то поле флажка очищается. Если оно содержит какой-либо другой текст, флажок устанавливается. В качестве последнего примера рассмотрим элемент IMG (изображение), свойство src которого сцеплено с XML-полем. Это свойство, как и атрибут SRC элемента, задает URL файла, содержащего графические данные. Листинги 1.21 и 1.22 иллюстрируют технику сцепления для элемента IMG.
<?xml version=”1.0”?> <!-- Имя файла: Inventory03.xml --> <INVENTORY> <BOOK> <COVERIMAGE>VoiMir.bmp</COVERIMAGE> <TITLE>Война и мир</TITLE> <AUTHOR>Лев Толстой</AUTHOR> <BINDING>Жёсткая обложка</BINDING> <PAGES>510</PAGES> <PRICE>12 000 рублей</PRICE> </BOOK> <BOOK> <COVERIMAGE>PresNak.bmp</COVERIMAGE> <TITLE>Преступление и наказание</TITLE> <AUTHOR>Фёдор Достоевский</AUTHOR> <BINDING>Мягкая обложка</BINDING> <PAGES>590</PAGES> <PRICE>14 000 рублей</PRICE> </BOOK> <BOOK> <COVERIMAGE>KorMar.bmp</COVERIMAGE> <TITLE>Королева Марго</TITLE> <AUTHOR>Александр Дюма</AUTHOR> <BINDING> Мягкая обложка </BINDING> <PAGES>410</PAGES> <PRICE>10 000 рублей</PRICE> </BOOK> <BOOK> <COVERIMAGE>ZaterMir.bmp</COVERIMAGE> <TITLE>Затерянный мир</TITLE> <AUTHOR>Артур Конан Дойль</AUTHOR> <BINDING>Жёсткая обложка</BINDING> <PAGES>350</PAGES> <PRICE>9 000 рублей</PRICE> </BOOK> </INVENTORY> Листинг 1.21
<HTML> <HEAD> <TITLE>Описание книги</TITLE> </HEAD> <BODY> <XML ID="dsoInventory" SRC="Inventory03.xml"></XML> <H2> Описание книги </H2> <TABLE DATASRC="#dsoInventory" BORDER="1" CELLPADDING="5"> <THEAD> <TH>Рисунок</TH> <TH>Заголовок</TH> <ТН>Автор</TH> <TH>Обложка</TH> <ТН>Страниц</TH> <ТН>Цена</TH> </THEAD> <TR AUGN="center"> <TD><IMG DATAFLD="COVERIMAGE"></TD> <TD><SPAN DATAFLD="TITLE" STYLE="font-styte:italic"></SPAN></TD> <TD><SPAN DATAFLD="AUTHOR"></SPAN></TD> <TD><SPANDATAFLD="BINDING"></SPAN></TD> <TD><SPAN DATAFLD="PAGES"></SPAN></TD> <TD><SPAN DATAFLD="PRICE></SPAN></TD> </TR> </TABLE> </BODY> </HTML> Листинг 1.22
Листинг 1.21 есть XML-документ, который содержит поле с именем COVERIMAGE в каждой записи BOOK. Каждое поле COVERIMAGE содержит URL графического файла, который хранит рисунок обложки книги. Листинг 1.22 - это та же самая HTML-страница, что и в Листинге 1.15, за исключением того, что в начало каждой строки таблицы добавлена дополнительная ячейка (элемент TD), которая содержит элемент IMG, а не SPAN. Элемент IMG сцеплен с полем COVERIMAGE XML-документа, и поэтому отобразит рисунок обложки для каждой книги, как показано на следующем рисунке. Рисунок 43. Сцепление с элементами XML-документа, в которых указано имя файла рисунка
Можно поэкспериментировать со связыванием некоторых других HTML-элементов, содержащихся в таблице 5.18, чтобы познакомиться с их сцепляемыми свойствами и способами использования элементами данных, предоставляемых XML-полями, с которыми они сцеплены.
Передача HTML-разметки
По умолчанию, если символьные данные XML-поля включают HTML-разметку, HTML-элемент, сцепленный с этим полем, воспринимает и отображает символы разметки как литерал. Рассмотрим, например, следующий элемент SPAN, который сцеплен с XML-полем AUTHOR-BIO: <SPAN DATASRC="#dsoInventory" DATAFLD="AUTHOR-BIO"></SPAN>
Если поле AUTHOR-BIO содержит элемент I (курсив), например:
<AUTHOR-BIO>Джек Лондон - американский писатель, живший с 1876 по 1916 гг., им была написана повесть <I>Зов предков<I> и множество других литературных произведений.</AUTHOR-BIO>
элемент SPAN, который воспринимает символы HTML-разметки как литералы, отобразит содержимое поля следующим образом:
Джек Лондон - американский писатель, живший с 1876 по 1916 гг., им была написана повесть <I>Зов предков<I> и множество других литературных произведений.
Для некоторых сцепляемых HTML-элементов, таких как SPAN, можно установить для атрибута DATAFORMATAS значение “HTML”, что заставит браузер обрабатывать любую HTML-разметку, содержащуюся в тексте поля, а не просто воспринимать ее как символы-литералы. Предположим, что вышеуказанный элемент SPAN определён следующим образом:
<SPAN DATASRC="dsoInventory" DATAFLD="AUTHOR-BIO" DATAFORMATAS="HTML"></SPAN>
Текст внутри элемента I будет воспринят как текст с курсивным начертанием:
Джек Лондон - американский писатель, живший с 1876 по 1916 гг., им была написана повесть Зов предков и множество других литературных произведений.
Присвоение атрибуту DATAFORMATAS его значения по умолчанию, “TEXT”, дает тот же эффект, что и пропуск этого атрибута -символы HTML-разметки будут восприниматься как литералы. Чтобы узнать, какие элементы вы можете использовать для передачи HTML-разметки посредством установки атрибута DATAFORMATAS="HTML", обратитесь к таблице 5.18. Для таких элементов в предпоследнем столбце таблицы (“Передает ли разметку HTML, содержащуюся в поле XML?”) стоит “Да”. Вставка и передача HTML-разметки в XML-поля весьма полезна для изменения формата части текста (например, с использованием элементов I или В) и для включения HTML-элементов, таких как гиперссылки или изображения, в текст. Хотя форматирование XML-текста путем включения в XML HTML-разметки нарушает принцип разделения данных и форматов, при связывании данных эта техника является единственным подходящим способом модификации формата или включения HTML-элементов внутрь поля. (При использовании других методов отображения XML, рассматриваемых в этой книге, обычно имеется возможность форматировать или вставлять элементы внутрь XML-элемента путем включения дочерних элементов и соответствующей их обработки.) При добавлении HTML-разметки в XML-поле, нельзя помещать в текст символ левой угловой скобки (<) или знак амперсенда (&) как литералы. (Эти символы недопустимы в символьных данных элемента.) Однако их можно вставлять с использованием предопределённых ссылок на примитивы < и &. Другой возможностью сделать HTML-разметку более наглядной, что особенно полезно для большого фрагмента HTML, является использование разделов CDATA (см. выше).
![]() |