Чжан Цзянь, Пекинский университет почты и телекоммуникаций
Ограничения XML
В настоящее время данные содержимого многих веб-сайтов хранятся в базах данных или файлах данных. Для разработчиков веб-программ, если они хотят извлечь полезную информацию из базы данных, традиционным методом является написание сценариев на стороне сервера (таких как VBScript, JavaScript, CGI, ASP, Perl и т. д.) и выполнение к базе данных SQL-запроса. получает соответствующие записи, а затем организует результаты запроса в HTML-страницу и возвращает ее клиенту. Пользователь использует браузер для просмотра окончательных результатов.
Чтобы повысить гибкость и масштабируемость системных сервисов и обеспечить более широкий спектр целей обслуживания, многие коммерческие веб-сайты изо всех сил стараются предоставлять бизнес-правила, исходные данные и формы представления как независимые сервисы. Способ внедрения данных в HTML, очевидно, не отвечает этой потребности. Таким образом, хранение исходных данных в документах XML и использование таблиц стилей для отображения контента являются преимуществами технологии XML, подходящей для электронной коммерции. Но по сути технология XSL не ориентирована на отображение данных. Это технология преобразования форматов, которая гораздо менее богата, чем HTML, с точки зрения средств и методов отображения. Для программистов более идеальным решением является объединение двух технологий HTML и XML, чтобы дополнить преимущества друг друга, чтобы реальные исходные данные могли сохранять свое первоначальное значение и структуру, в то же время полностью используя постоянно меняющееся отображение HTML. . XML Data Island является продуктом слияния этих технологий. Он использует тег <XML> для встраивания XML-данных непосредственно в HTML-страницы, реализуя тем самым взаимодополняющие преимущества этих двух технологий.
Как обрабатывать острова данных в IE
Чтобы иметь возможность обрабатывать такого рода HTML-страницы со встроенным XML-кодом, в Internet Explorer 4.0 (далее именуемый IE 4.0) введена технология DSO (объекты источника данных, объект источника данных), которая реализовано с помощью Java-апплета.
Например:
<APPLET CODE="com.ms.xml.dso.XMLDSO.class"
ID="xmldso" WIDTH=0 HEIGHT=0 MAYSCRIPT=TRUE>
<PARAM NAME="URL" VALUE="myXML.xml">
</APPLET>
В приведенном выше примере атрибут CODE указывает Java-апплет DSO, атрибут MAYSCRIPT гарантирует, что клиентский сценарий может обрабатывать объект данных, а тег PARAM указывает местоположение XML-документа.
Ограничением использования Java является то, что он может описывать только URL-адрес XML в документе HTML, но не может напрямую встраивать в него тег XML. Это все еще сильно отстает от реального решения «острова данных». Microsoft расширила технологию DSO в Internet Explorer 5.0 (далее — IE 5.0), преодолев предыдущие ограничения и по-настоящему интегрируя HTML и XML. Страницы HTML поддерживают прямое использование тегов <XML>.
Например:
<HTML>
<XML ID="xmldso">
<?xml version="1.0"?>
некоторый XML...
</XML>
Поскольку идентификатор каждого острова данных уникален, его можно включить в Острова данных страницы встроены везде, где это необходимо, и эти DSO независимы друг от друга.
В дополнение к методу прямого внедрения в приведенном выше примере вы также можете использовать внешние ссылки для связывания островов данных.
Например:
<XML ID="xmldso" SRC="myXML.xml">
</XML>
Таким образом, только когда клиенты компании продолжают использовать IE 4.0 и для решения проблем совместимости этих клиентов, Java-апплет — это варианты, которые следует учитывать программистам.
В технологии DSO, реализованной в IE 5.0, если данные являются результатом запроса к базе данных с помощью языка SQL, они сохраняются в наборе записей ADO (объекты данных ActiveX). Сервер отправляет этот элемент управления ActiveX (обычно набор записей ADO) клиенту, где программа клиентского сценария выполняет дальнейшую обработку. Фактически, IE 5.0 обрабатывает острова данных XML как специальный набор записей ADO.
Привязка XML-данных
1. Сопоставление набора записей ADO
Каждый основной элемент XML сопоставляется с записью в наборе записей ADO, а подэлементы соответственно сопоставляются с полями (также называемыми доменами) в наборе записей.
Например, остров данных XML book.xml существует следующим образом:
<XML ID="xmldso">
<?xml version="1.0"?>
<booklist>
<book>
<title>Откровенный разговор о компьютерах</title>
< isbn>72 -80088-005</isbn>
</book>
<book>
<title> Микроволновая печь Gourmet </title>
<isbn>72-80081-082</isbn>
</book>
</booklist>
</XML >
В настоящее время сопоставленный набор записей ADO имеет следующий вид:
title isbn
Straight Talk About Computers 72-80088-005
Gourmet Microwave 72-80081-082
2. Привязка к элементам HTML
После внедрения островов данных в документ HTML вы можете привязать острова данных XML к элементам HTML. Каждая запись DSO (т. е. остров данных) имеет уникальный идентификационный номер. Сначала установите для атрибута DATASRC в элементе HTML соответствующий идентификатор, чтобы связать элемент HTML с островом данных. Затем определите извлеченный элемент XML, установив значение атрибута DATAFLD.
Например, код, привязанный к элементу DIV, выглядит следующим образом:
<DIV ID=title DATASRC=#xmldso DATAFLD="title"></DIV>
<DIV ID=price DATASRC=#xmldso DATAFLD="isbn"></ DIV>
Примечание. Не все элементы HTML можно привязать к островам данных XML. В настоящее время этот механизм привязки DSO поддерживают следующие элементы:
A. APPLET, BUTTON, DIV, FRAME, IFRAME, IMG, INPUT (здесь типы: CHECKBOX, HIDDEN, LABEL, PASSWORD, RADIO и TEXT), LABEL, MARQUEE, SELECT, SPAN, TABLE и TEXTAREA.
3. Явные данные XML в табличном формате.
Если вы привязываете данные XML к элементу TABLE, они могут автоматически отображаться в многострочном табличном формате.
Например, код, который привязывает данные XML к элементу TABLE, выглядит следующим образом:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD>
<TR><TH>Заголовок</TH>
<TH>ISBN</TH ></TR >
</THEAD>
<TBODY>
<TR><TD><DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV>< /TD>< /TR>
</TBODY>
</TABLE>
Таким образом, они связываются путем установки атрибута DATASRC в элементе TABLE на #xmldso. Таблица разделена на две части: заголовок (THEAD) и тело таблицы (TBODY). Каждый элемент <book> будет отображаться как строка таблиц. Какие данные отображаются в каждом столбце, определяется атрибутом DATAFLD в элементе DIV.