XML и связывание данных Презентацию подготовил Шакирзянов Айрат, гр. 950б Все, что происходит в мире XML связано с хранением данных. Одна из технологий, позволяющих извлекать данные, не прибегая к методу программирования, именуется связыванием данных. Связывание данных с HTML-элементами Лишь немногие элементы в Internet Explorer поддерживают свойства, обеспечивающие связывание с объектами DSO (Data Source Objects, применяются для чтения документа). Для этого применяются атрибуты DATASRC и DATAFLD этих элементов. Атрибуту DATASRC в качестве значения присваивается название объекта DSO, а атрибуту DATAFLD – имя поля данных, связываемое с элементом. После этого элемент будет отображать данные из текущей записи DSO. Вы можете использовать методы moveFirst, moveLast, moveNext и movePrevious, чтобы сделать другие записи текущими, причем связанные элементы будут обновляться автоматически. Например, если управляющий элемент типа «текстовое поле» связывается с полем NAME в записи dsoCustomer DSO, то этот управляющий элемент будет отображать имя Charles при первой загрузке страницы. После вызова метода moveNext в качестве текущей выбирается следующая запись, а управляющий элемент отобразит имя Franklin. Текст HTML-документа 01.html <HTML> <HEAD> <TITLE> Customer Data </TITLE> </HEAD> <BODY> Name: <SPAN ID=“NAME”>Charles</SPAN><BR> ID: <SPAN ID=“CUSTOMER_ID”>58704</DPAN><BR> Purchase date: Date: <SPAN ID=“PURCHASE_DATE”> 10/15/2003</SPAN><BR> Department: <SPAN ID=“DEPARTMENT”> Meat</SPAN><BR> Product: <SPAN ID=“PRODUCT_NAME”>Ham</SPAN><BR> Name: <SPAN ID=“NAME”>Franklin</SPAN><BR> ID: <SPAN ID=“CUSTOMER_ID”>58705</DPAN><BR> Purchase date: Date: <SPAN ID=“PURCHASE_DATE”> 10/15/2003</SPAN><BR> Department: <SPAN ID=“DEPARTMENT”> Produce</SPAN><BR> Product: <SPAN ID=“PRODUCT_NAME”>Tomatoes</SPAN><BR> Name: <SPAN ID=“NAME”>Phoebe</SPAN><BR> ID: <SPAN ID=“CUSTOMER_ID”>58706</DPAN><BR> Purchase date: Date: <SPAN ID=“PURCHASE_DATE”> 10/15/2003</SPAN><BR> Department: <SPAN ID=“DEPARTMENT”> Meat</SPAN><BR> Product: <SPAN ID=“PRODUCT_NAME”>Turkey</SPAN><BR> Name: <SPAN ID=“NAME”>Mark</SPAN><BR> ID: <SPAN ID=“CUSTOMER_ID”>58707</DPAN><BR> Purchase date: Date: <SPAN ID=“PURCHASE_DATE”> 10/15/2003</SPAN><BR> Department: <SPAN ID=“DEPARTMENT”> Meat</SPAN><BR> Product: <SPAN ID=“PRODUCT_NAME”>Beef</SPAN><BR> Name: <SPAN ID=“NAME”>Nancy</SPAN><BR> ID: <SPAN ID=“CUSTOMER_ID”>58708</DPAN><BR> Purchase date: Date: <SPAN ID=“PURCHASE_DATE”> 10/15/2003</SPAN><BR> Department: <SPAN ID=“DEPARTMENT”> Frozen</SPAN><BR> Product: <SPAN ID=“PRODUCT_NAME”>Broccoli</SPAN><BR> </BODY> </HTML> HTML-элементы Internet Explorer, детализирующие связываемые свойства атрибутов DATASRC и DATAFLD A связывается со свойством href. Не обновляет данные. APPLET связывается со свойством param. Обновляет данные. BUTTON связывается со свойством value. Не обновляет данные. DIV связывается со свойствами innerText и innerHTML. Не обновляет данные. FRAME связывается со свойством src. Не обновляет данные. IFRAME связывается со свойством src. Не обновляет данные. IMG связывается со свойством src. Не обновляет данные. INPUT TYPE=BUTTON связывается со свойством value. Не обновляет данные. INPUT TYPE=CHECKBOX связывается со свойством checked. Обновляет данные. INPUT TYPE=HIDDEN связывается со свойством value. Обновляет данные. INPUT TYPE=PASSWORD связывается со свойством value. Обновляет данные. INPUT TYPE=RADIO связывается со свойством checked. Обновляет данные. INPUT TYPE=TEXT связывается со свойством value. Обновляет данные. LABEL связывается со свойством value. Не обновляет данные. MARQUEE связывается со свойствами innerText и innerHTML. Не обновляет данные. OBJECT связывается со свойством objects. Обновляет данные. PARAM связывается со свойством param. Обновляет данные. SELECT связывается со свойством text выбранного жлемента списка. Обновляет данные. SPAN связывается со свойствами innerText и innerHTML. Не обновляет данные. TABLE конструирует таблицу в целом. Не обновляет данные. TEXTAREA связывается со свойством value. Обновляет данные. Кроме того, HTML-теги включают определенные события, применяемые в процессе связывания данных: onafterupdate происходит после изменения данных элемента посредством DSO; onbeforeunload происходит перед выгрузкой страницы; onbeforeupdate происходит до изменения данных элемента посредством DSO; onerrorupdate происходит в случае прекращения процесса изменения данных вследствие ошибки. Добавим управляющий элемент dsoCustomer на веб-страницу и подключим его с помошью DSO к документу 01.html: <HTML> <HEAD> <TITLE> Data Binding With the MSHTML DSO </TITLE> </HEAD> <BODY> <CENTER> <H1> Data Binding With the MSHTML DSO </H1> <OBJECT ID=“dsoCustomer” DATA=“01.html” HEIGHT=“0” WIDTH=“0”> </OBJECT> - Таким же образом поле CUSTOMER_ID связывается с другим текстовым полем. Текстовые данные объекта DSO могут отображаться непосредственно на веб-странице – без использования текстового управляющего элемента – путем привязки объекта DSO к элементу <SPAN> следующим образом: <OBJECT ID=“dsoCustomer” DATA=“01.html” HEIGHT=“0” WIDTH=“0”> </OBJECT> Name: <INPUT TYPE=“TEXT” DATASRC=“#dsoCustomer” DATAFLD=“NAME” SIZE=“10”> <P> ID: <INPUT TYPE=“TEXT” DATASRC=“#dsoCustomer” DATAFLD=“CUSTOMER_ID” SIZE=“5”> <P> Purchase date: <SPAN DATASRC=“#dsoCustomer” DATAFLD=“PURCHASE_DATE”></SPAN> - Чтобы показать, каким образом связываются другие управляющие элементы, поле DEPARTMENT, которое принимает значения Produce, Meat или Frozen, будет связано с управляющим элементом <SELECT>, отображающим раскрывающийся список. Этот управляющий элемент связывается с DSO dsoCustomer таким же образом, как это делается в случае с другими элементами; однако следует определить возможные значения связываемого поля DEPARTMENT, выступающие в качестве элементов <OPTION> в управляющем элементе <SELECT>: <P> Department: <SELECT DATASRC=“#dsoCustomer” DATAFLD=“DEPARTMENT” SIZE=“1”> <OPTION VALUE=“Produce”>Produce <OPTION VALUE=“Meat”>Meat <OPTION VALUE=“Frozen”>Frozen </SELECT> <P> Product: <SPAN DATASRC=“#dsoCustomer” DATAFLD=“PRODUCT_NAME”> </SPAN> - Аналогичным образом поле PRODUCT_NAME привязывается к другому элементу <SPAN>. При первой загрузке страницы отображается имя покупателя, его идентификатор, дата покупки, название отдела и ID товара первой записи элементов, которые размещены на странице. Однако в этом случае имеют место некоторые проблемы. Объект DSO не отображается на странице. В связи с этим возникает вопрос о том, каким образом пользователь может просматривать различные записи? Ответ на поставленный выше вопрос заключается в применении методов набора записей: moveFirst, moveLast, moveNext и movePrevious, вызываемых после щелчка на отображаемых кнопках. К объекту набора записей в DSO можно обращаться по имени dsoCustomer.recordset. Таким образом, вызов метода moveFirst для перехода к первой записи выглядит следующим образом: dsoCustomer.recordset.moveFirst(). Перед использованием методов moveNext и movePrevious стоит проверить, можно ли совершить переход к следующей или предыдущей записи,- если выйти за пределы набора записей, связанные элементы будут на странице пустыми. Можно воспользоваться свойствами набора записей BOF (beginning of file, начало файла) и EOF(end of file, конец файла) для определения нахождения в начале или в конце набора записей соответственно. <P> <BUTTON ONCLICK=“dsoCustomer.recordset.moveFirst()”>&lt;&lt; </BUTTON> <BUTTON ONCLICK=“if (!dsoCustomer.recordset.BOF) dsoCustomer.recordset.movePrevious()”>&lt; </BUTTON> <BUTTON ONCLICK=“if (!dsoCustomer.recordset.EOF) dsoCustomer.recordset.moveNext()”>&gt; </BUTTON> <BUTTON ONCLICK=“dsoCustomer.recordset.moveLast()”>&gt;&gt; </BUTTON> </CENTER> </BODY> </HTML> Соответствующая веб-страница показана ниже. Пользователь может перемещаться по записям файла 01.html, используя кнопки, размещенные внизу страницы.