Разработка Web-приложения с помощью Xml Презентацию подготовила Шакирова Айгель, гр.950б Создание Web-приложения на основе файла Xml Выполнение преобразования XSLT на стороне сервера Использование объектной модели документа Xml для создания узлов дерева Xml Проектирование Web-приложения Данные содержатся в файле XML на сервере, а вы инициализируете объект модели XML DOM для создания новых узлов в сохраненном дереве документа. Сценарии на стороне сервера, выполненные в виде Active Server Pages, используются для преобразований XSLT над исходными документами XML для приведения его к формату HTML, когда надо представить все сохраненные данные в виде таблицы. Сохранение данных в документе Данные будут сохраняться в файле XML в рамках корневого элемента. Каждый элемент представляет собой аналог записи в иерархической структуре базы данных и содержит дочерние элементы. <wine_notes> корневой элемент <wine date="6/9/2001 10:40:01"> элемент <house>Chateau de La Chaize</house> <region>Brouilly, France</region> <type>Beaujolais</type> <vintage>1998</vintage> <notes><![CDATA(Full of berries and firm enough to hold its own with a variety of foods, particulary aged hard cheeses)]></notes> </wine> </wine_notes> Создание Web-формы HTML страница должна содержать форму, поля которой соответствуют определенным элементам в файле XML. Каждое из этих полей, за исключением notes создается с помощью стандартного дочернего элемента HTML Input по отношению к элементу Form. <INPUT SIZE="Значение" TYPE=TEXT NAME="Ссылка" MAXELENGTH="Значение"> Поле note указывается с помощью: <TEXTAREA NAME="Ссылка" COLS="Значение" ROWS="Значение"> Для того, чтобы связать каскадную таблицу стилей с текущей страницей, используется элемент LINK, который содержится в <HEAD> <HEAD> <Title>ЭЭЭЭЭЭЭЭ</Title> <LINK rel="stylesheet" type="text/css" href="адрес файла"/> </HEAD> Управление данными на сервере с помощью ASP Сценарий ASP используется для добавления сведений в документ xml. Для этого предусмотрены объекты DOM. Необходимо определить переменные, которые будут содержать данные, полученные с помощью формы, для каждого из узлов элементов в наборе данных. Dim wRegion Dim wHouse Dim wType Dim wVintage Dim wNotes Необходимо определить переменные, которые будут содержать отдельные данные, переданные с помощью DOM узлам в экземпляре документа XML. Переменные нужны для узла документа, корневого узла, узлов notes, а также потребуется атрибут notes, который будет содержать сведения о дате и времени. Dim oWineNotesDOM Dim oWineNotesRootNode Dim oDateStamp Dim oWineNotesNodes Поскольку данные передаются непосредственно из полей формы HTML, вы можете "перехватывать" соответствующие значения HTTP: wHouse=Request("HOUSE") Инициализация объекта DOM выглядит следующим образом: Set oWineNotesDOM=Server.CreateObject("Microsoft.XMLDOM") oWineNotesDOM.async=false Загрузить документ помощью команды: XML можно с oWineNotesDOM.load server.mappath("имя файла xml") Для каждого из узлов документов (elementNameXML) в документе XML вы передаете данные формы новому узлу элемента (oMyObjectName) в результирующей древовидной структуре. Следующий код необходимо повторить для каждого из узлов Set oMyObjectName=oMyDateStampObjectName.appendChild(oMyObjectName.createElement("elementNameXML")) oMyObjectName.Text=MyElementName Отображение сведений с помощью сценария asp Для получение списка всех элементов, содержащихся в документе xml, нужно использовать сценарий, который будет выполнять на сервере преобразования XSL (файл с расширением xsl). Для этого надо инициализировать 2 объекта XML DOM - один для документа XML и другой для документа XSL. После этого, для завершения создания древовидной структуры результатов, надо использовать команду Response.Write oWineNotesXML.TransformNode(oWineNotesXSL) Выполнение преобразований XSLT на стороне сервера с помощью Active Server Pages Dim oWineNotesXML Dim oWineNotesXSL Set oWineNotesXML=Server.CreateObject("Microsoft.XMLDOM") oWineNotesXML.async=False oWineNotesXML.Load Server.MapPath("wine_notes.xml") Set oWineNotesXSL=Server.CreateObject("Microsoft.XMLDOM") oWineNotesXSL.async=False oWineNotesXSL.Load Server.MapPath("wine_notes.xsl") Response.Write oWineNotesXML.TransformNode(oWineNotesXSL) Преобразование содержания с помощью xsl В преобразовании используется один шаблон для корневого элемента документа XML, после чего соответствующие дескрипторы HTML размещаются в результирующем документе. Соответствующий шаблон совпадающий с корневым узлом <xsl:template match="/"> После этого стилей css. можно создать таблицу <xsl:for-each select="wine_notes/wine" order-by="wine[@date]"> <B>Entered:</B><xsl:value-of select="@date"/> <B>House:</B><xsl:value-of select="@house"/> <B>Region:</B><xsl:value-of select="@region"/> <B>Type:</B><xsl:value-of select="@type"/> <B>Vintage:</B><xsl:value-of select="@vintage"/> <B>Notes:</B><PRE><SPAN><xsl:value-of select="notes"></SPAN></PRE> Создание Web-узла Создав все необходимые файлы: • html-для размещения формы • asp-сценарий, на стороне сервера • xml-хранение набора данных • xsl-преобразование, для представления в браузере надо сохранить их в папке на Web-сервере.