Щёлкните здесь для просмотра
</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 файла, содержащего графические данные. Листинги 3 и 4 иллюстрируют технику сцепления для элементаIMG.
Листинг 3
<?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>
Листинг 4
<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>
Листинг 3 есть XML-документ, который содержит поле с именем COVERIMAGE в каждой записи BOOK. Каждое поле COVERIMAGE содержит URL графического файла, который хранит рисунок обложки книги. Листинг 6 - это та же самая HTML-страница, что и в Листинге 2, за исключением того, что в начало каждой строки таблицы добавлена дополнительная ячейка (элемент TD), которая содержит элемент IMG, а неSPAN. Элемент IMG сцеплен с полем COVERIMAGE XML-документа, и поэтому отобразит рисунок обложки для каждой книги, как показано на следующем рисунке.
Рисунок 3. Сцепление с элементами 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 (см. выше).