Вложенная обработка XML.
В общем, набор результатов, который мы запрашиваем из базы данных, может быть очень большим, поэтому при возврате с сервера клиенту данные будут разделены на несколько страниц для доставки соответственно. В настоящее время вы можете использовать атрибут DATAPAGESIZE в элементе TABLE, чтобы указать количество записей набора записей, содержащихся на каждой странице.
Например:
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
Очевидно, что если формат данных XML симметричен, независимо от того, сопоставлен ли он с набором записей ADO или привязан к элементу таблицы, эффект будет хорошим. В практических приложениях существует множество примеров асимметричных XML-данных. Например, у книги может быть более одного автора, что вызовет определенные проблемы при сопоставлении и связывании. Решение проблемы — использование вложенности. Каждая строка таблицы по-прежнему соответствует основному элементу, а каждый столбец также соответствует подэлементу. Для повторяющихся элементов используются вложенные таблицы. Предположим, что в book.xml автором первой книги является Дин Стрейт, а авторами второй книги — Шарлотта Купер, Шелли Бёрк и Регина Мерфи. На этом этапе процесс привязки выглядит следующим образом:
● Создайте элемент TABLE и присвойте идентификатор острова данных атрибуту DATAFLD.
● Для отдельных элементов XML, таких как <isbn>, создайте элемент TD и установите соответствующий атрибут DATAFLD;
● Для элемента «Дубликаты» таблица вложена в элемент TD.
● Отображение информации об авторе в одной строке и одном столбце.
Обратите внимание, что здесь для атрибута DATAFLD должно быть установлено значение «$TEXT»,
чтобы гарантировать, что все содержимое вложенного элемента отображается в указанном элементе.
Полный HTML-код выглядит следующим образом:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>Название</TH>
<TH>ISBN</TH>
<TH>Автор</TH> </TR></THEAD>
<TBODY>
<TR><TD>
<DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV></ TD>
<TD>
<TABLE BORDER=0 DATASRC="#xmldso" DATAFLD="author">
<TR><TD><SPAN DATAFLD="$Text"></SPAN></TD></TR>
< /TABLE>
</TD>
</TR></TBODY>
</TABLE>
Фактически, лучшая ситуация при использовании DSO — это данные с симметричной структурой, а более эффективный способ борьбы с асимметричными данными — использовать то, что мы увидим в будущем Представляем технологию DOM.
Применение технологии ДСО
1. Доступ к атрибутам элемента
Использовать DSO для доступа к атрибутам элемента очень просто. Вы можете напрямую обрабатывать атрибуты подэлементов.
Например:
<book isbn="9-001-122-12">
...
</book>
Таким образом, при привязке к HTML-таблице ее можно будет обрабатывать непосредственно подэлементом:
<TD><SPAN DATAFLD=" isbn"> </SPAN></TD>
Если имя атрибута и имя подэлемента совпадают, добавьте «!» перед именем элемента, чтобы отличить их. 2. Обход набора записей
Основным преимуществом обработки DSO островов данных XML как наборов записей ADO является то, что вы можете использовать различные методы, предоставляемые ADO, для доступа к источнику данных, особенно когда остров данных привязан к элементам HTML, таким как SPAN, DIV и INPUT. .время. Обычно эти элементы отображают первую запись набора записей. Если вы хотите просмотреть набор записей, вы можете использовать методы ADO: Move, MoveFirst, MoveLast, MoveNext и MovePrevious. Например, если вы создаете функцию ответа кнопки, пока пользователь нажимает кнопку «Далее», соответствующие записи можно просматривать одну за другой.
Например:
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3. Комбинирование со скриптовым языком.
Некоторые пользователи более привычны к написанию скриптового языка, и технология DSO также может хорошо сочетаться с различными скриптами.
Например (на примере VB Script) при доступе к набору записей код выглядит следующим образом:
Dim rsBooks
Установите rsBooks = xmldso.RecordSet
для доступа к значению поля (подэлемента):
Dim sTitle
sTitle = rsBooks( «title»)
Вы можете использовать атрибуты InsideText и InnerHTML. Передайте полученное значение в HTML-элемент. Например, существует элемент DIV с именем divTitle и код назначения следующий:
divTitle.innerTEXT = sTitle.
Скрипты также могут обрабатывать многие события DSO. В следующей таблице перечислены некоторые из них:
Метод обработки различных событий в скриптах. Используйте атрибут FOR в теге <SCRIPT>, чтобы указать идентификатор острова данных XML, и используйте атрибут EVENT, чтобы определить тип события.
Например, получите количество записей в наборе записей:
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
Помимо отображения записи данные, скрипт. Программа также может быстро запрашивать, сортировать, редактировать и выполнять другие операции с набором записей. Однако следует отметить, что, хотя технология ADO предоставляет такие методы, как SortColumn и SortAscending, для сортировки XML-данных, эффект не так хорош, как операция сортировки в XSL, поэтому рекомендуется в полной мере использовать технологию XSL для реализации эта часть функции.
Остальные функции, такие как использование сценариев для выполнения таких операций, как добавление, удаление и изменение наборов записей или отображение HTML-таблиц на страницах и т. д., здесь не описываются по отдельности. Их использование аналогично предыдущим операциям. Наконец, следует отметить, что все операции с объектами DSO выполняются на стороне пользователя, которая фактически является копией объекта данных сервера. Преимущество этого заключается в том, что сеть не несет бремя передачи больших данных. Но в настоящее время любые операции, выполняемые клиентом, не влияют на данные, хранящиеся на сервере. Если вы хотите изменить записи сервера, вы должны использовать технологию обмена данными между клиентом и сервером. Об этом мы поговорим в разделе. будущее.