Презентацию к данной лекции Вы можете скачать здесь.
Рассмотрим, каким образом можно отобразить содержимое XML-документа на web-странице с помощью серверного элемента управления ASP.NET Xml и преобразования XSLT.
Чтобы отобразить сведения из XML-файла на web-странице, необходимо предоставить сведения о форматировании и отображении. Кроме того, необходимо предоставить инструкции относительно размещения данных из XML-файла. Например, можно отобразить каждый элемент из XML-файла в виде одной строки таблицы.
Для этих целей обычно используется язык XSL-преобразований для создания XSL-файлов. XSL-преобразования содержат следующие сведения.
Можно определить несколько преобразований и затем применить их к одному и тому же XML-файлу.
После создания XSL-преобразований необходимо применить их к XML-файлу. При этом XML-файл обрабатывается путем его преобразования в соответствии с одним из XSL-файлов.
Этот процесс лучше делать с помощью серверного элемента управления Xml, выполняющего роль "местозаполнителя" на ASP.NET-странице. Можно указать в его свойствах определенный XML-файл и XSL-преобразование. При обработке страницы элемент управления выполняет чтение XML-файла, применяет преобразование и отображает результат.
Предположим, у нас есть xml-файл, в котором содержатся сведения о товарах. Нам нужно иметь возможность отображать как все данные целиком, так и лишь заголовки. Для этого мы создадим два файлы XLS-преобразования, один XML-файл и одну ASP.NET- страницу [1].
Запускаем Visual Web Developer. Создаем XML-файл Products.xml и сохраняем его в папке App_Data.
<?xml version="1.0" encoding="windows-1251" ?>
<Products>
<Product id="101">
<ProductName>Sharp LC-32 LE600 RU</ProductName>
<Price>38990 руб.</Price>
<Manufacturer>Польша</Manufacturer>
<Warranty>3 года</Warranty>
<Description>
Серия ЖК телевизоров c оригинальной "шарповской" Full HD панелью 10-го поколения и светодиодной подсветкой Full LED.
</Description>
</Product>
<Product id="109">
<ProductName>Samsung UE-32 B6000</ProductName>
<Price>39900 руб.</Price>
<Manufacturer>Россия</Manufacturer>
<Warranty>2 года</Warranty>
<Description>
Элегантный Samsung UE-32 B6000, оснащенный технологией устранения бликов Ultra Clear Panel, поможет вам
превратить свою гостиную в уютный кинозал. Благодаря использованию светодиодов (LED) для подсветки
вместо обычных люминесцентных ламп толщина этого телевизора составляет всего 3 см.
</Description>
</Product>
<Product id="123">
<ProductName>Philips 42PFL9803H/10</ProductName>
<Price>99900 руб.</Price>
<Manufacturer>Бельгия</Manufacturer>
<Warranty>1 год</Warranty>
<Description>
Погрузитесь в мир незабываемых впечатлений с 42-дюймовым широкоформатным телевизором Philips 42PFL9803H/10.
Новая технология Ambilight Spectra 2, которая используется в нем, добавит яркости и четкости изображению,
а LED Lux передаст всю цветовую гамму изображения максимально естественно.
</Description>
</Product>
</Products>
Теперь добавим в проект два XSL-преобразования: Products_all.xslt, с помощью которого на экран будут выводиться все данные и Products_headers.xslt (выводит только заголовки). Оба файла нужно сохранить в папке App_Data.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html>
<body>
<table cellspacing="10" cellpadding="4">
<xsl:for-each select="Products/Product">
<tr bgcolor="#CCCCCC">
<td class="info">
Название товара: <strong>
<xsl:value-of select="ProductName"/>
</strong>
<br /><br />
Цена: <strong>
<xsl:value-of select="Price"/>
</strong>
<br /><br />
Страна-производитель: <strong>
<xsl:value-of select="Manufacturer"/>
</strong>
<br /><br />
Гарантия: <strong>
<xsl:value-of select="Warranty"/>
</strong>
<br /><br />
<br /><br />
<xsl:value-of select="Description"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html>
<body>
<table cellspacing="3" cellpadding="8">
<tr bgcolor="#AAAAAA">
<td class="heading">
<strong>Название товара</strong>
</td>
<td class="heading">
<strong>Цена</strong>
</td>
<td class="heading">
<strong>Страна-производитель</strong>
</td>
</tr>
<xsl:for-each select="Products/Product">
<tr bgcolor="#DDDDDD">
<td width="25%" valign="top">
<xsl:value-of select="ProductName"/>
</td>
<td width="20%" valign="top">
<xsl:value-of select="Price"/>
</td>
<td width="55%" valign="top">
<strong>
<xsl:value-of select="Manufacturer"/>
</strong>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Добавим к проекту ASP.NET-страницу. Из панели инструментов перетащим элемент управления Xml и настроим его таким образом, чтобы свойство DocumentSource стало равно "~/Products.xml", а свойство TransformSource стало равно "~/App_Data/Products_headers.xslt".
Дале, нам нужно разместить элемент управления CheckBox выше элемента управления Xml. У элемента управления CheckBox свойство Text нужно сделать равным "Только заголовки", Свойство checked - True, AutoPostBack - тоже True. Дважды щелкнем по элементу управления Checkbox и введем в обработчике событий следующий код:
If CheckBox1.Checked Then
Xml1.TransformSource = "~/App_Data/Products_headers.xslt"
Else
Xml1.TransformSource = "~/App_Data/Products_all.xslt"
End If
Запустив проект, мы получим следующий результат:

(рис 15.2) Отображение только заголовков(рис 15.1) Отображение всей информацииДалее, мы покажем, каким образом можно визуализировать данные, записанные в XML-файле с помощью
Вначале нам нужно создать XML-файл - MythicalAnimals.xml, в котором будут храниться сведения о мифических животных:
<?xml version="1.0" encoding="windows-1251" standalone="yes" ?>
<MythicalAmimals>
<Animal Title="Сфинкс"
Place="Египет, Месопотамия, Греция"
Description="Египетскими сфинксами называют мифических существ,
которые в скульптурной традиции культуры представляют собой стражей.
Арабское название Великого Сфинкса, Абу аль-Холь, переводится как "отец страха".">
<comments>
<userComment rating="4"
comment="В отличие от сфинкса в Египте, Месопотамии и Греции,
где это существо "прожило" ровно столько же, сколько и сама цивилизация,
азиатский сфинкс жив до сих пор. Первые изображения этого мифического существа
появились в Азии как подражание эллинистическому искусству, но сфинксы Мадхуры,
Каусамби и Санчи, датируемые третьим веком до нашей эры,
абсолютно не похожи на своих греческих сородичей. " />
<userComment rating="2"
comment="В шестнадцатом веке появилось такое понятие как "французский сфинкс".
Это существо представляло собой льва с головой и грудью прекрасной девушки,
чьи уши нередко были украшены серьгами. Ученые считают это гротеском древнего образа,
утверждая, что идентичными фигурами был украшен дворец Нерона." />
</comments>
</Animal>
<Animal Title="Минотавр"
Place="Эллада"
Description="В греческой мифологии Минотавр представлял собой наполовину человека,
наполовину быка. Он проживал в центре Лабиринта - запутанной конструкции,
построенной на Крите для царя Миноса и спроектированной архитектором Дедалом,
чтобы удерживать чудовище вдали от людей. Минотавр переводится с греческого как "миносский бык",
а на Крите его называют Астерион и связывают с царем Миносом кровными узами.">
<comments>
<userComment rating="3"
comment="Когда пришла очередь третьего жертвоприношения, стать одним из семи юношей,
вызвался Тезей. Он пообещал отцу, что в случае удачи, повесит белый флаг на своем корабле на обратном пути.
Дочь Миноса, Ариадна, влюбилась в Тезея, и дала ему клубок ниток, чтобы он не смог заблудиться в лабиринте.
Тезей убил Минотавра и вывел афинян из пещеры." />
<userComment rating="4"
comment=" На обратном пути Тезей забыл сменить черные паруса на белые и причалил с ними к родным берегам.
Эгей каждый день выглядывал на скале своего сына, и, увидев, черные паруса,
от горя бросился в море, которое с тех пор называется Эгейским.
Минос же, будучи в ярости, оттого что Тезею удалось сбежать, заключил Дедала и Икара
в высокую башню, откуда они смогли сбежать при помощи самодельных крыльев. " />
</comments>
</Animal>
<Animal Title="Химера"
Place="Холмистые равнины Ликии"
Description="Химера (греч. "коза) - мифическое создание, фигурирующее в мифе про Беллерофонта.
Согласно этому мифу чудовище Химера наводило страх на всю округу.
Представляло оно собой существо с исполинским телом козы, львиной головой, крыльями и змеиным хвостом.
Из медной пасти Химеры бил огонь. Своих жертв чудовище затаптывало, опаливало огнем или убивало огромным хвостом." >
<comments>
<userComment rating="3"
comment="В современном русском языке химерами называют несбыточные мечтания,
существа с причудливыми очертаниями (чаще всего, совершенно отличными от прообраза
в древнегреческом мифе)." />
</comments>
</Animal>
<Animal Title="Кентавры"
Place="Греция"
Description="В греческой мифологии кентавры представляли собой расу существ,
внешний вид которых представлял собой получеловека-полуконя.
В ранней аттической росписи они изображены в виде человеческого торса,
прикрепленного к телу коня." >
<comments>
<userComment rating="4"
comment="Греческое слово кентавр может иметь такую этимологию, как кен-таурос,
то есть "раб быка". Некоторые считают, что своего кентавра герки взяли из Месопотамии,
где он символизировал бога Ваала, олицетворявшего дождь и плодородие,
поражающего рогами демона Мота, олицетворяющего летнюю засуху (в греческом варианте Мот стал называться Лупусом).
И только позднее в Греции образ кентавров перенесли на чужеземцев с севера,
скачущих на лошадях. " />
</comments>
</Animal>
<Animal Title="Горгульи"
Place="Греция"
Description="Горгулий можно с уверенностью назвать ближайшими родственниками химер.
Однако используется это понятие, в основном, не в мифологическом контексте,
а в архитектурном, где горгулью нередко путают с собственно химерой.
Как такового понятий горгулья в мифологическом словаре не существует,
оно появилось только в районе двенадцатого века с определенным архитектурным стилем
и происходило от латинских корней или французского gargouille,
что означало "стекать, глотать", так как фигурки были прикреплены к стокам на крыше зданий." >
</Animal>
</MythicalAmimals>
Файл нужно сохранить в каталоге /App_Data.
Чтобы сделать данные доступными для элементов управления на web-странице ASP.NET, используется элемент управления источника данных [2].
Откроем файл Default.aspx и переключимся в
Из группы Данные в панели элементов перетащим на страницу элемент управления XmlDataSource.
В меню ЗадачиXmlDataSource выберем команду Настроить источник данных.
Откроется диалоговое окно Настройка источника данных <DataSourceName>.
В поле Файл данных вводим ~/App_Data/MythicalAnimals.xml.
Нажмем кнопку OК.
Элемент управления XmlDataSource делает данные в XML-файле доступными для элементов управления, находящихся на странице. Данные доступны в двух форматах: иерархическом и табличном. Элементы управления, привязанные к элементу управления XmlDataSource, могут получать данные в том формате, который им подходит.
Теперь можно отображать XML-данные в списочном элементе управления. Отобразим часть XML-данных в
Из группы Данные в панели элементов перетащим на страницу
В списке Выбор источника данных в меню Задачи
Нажмем клавиши CTRL+F5 для запуска страницы.
(рис 15.3) Связывание XML-файла с элементом управления GridViewДалее, мы продемонстрируем, как использовать элементы управления XmlDataSource и TransformFile. В качестве примера мы выбрали классификацию живых организмов.
Запускаем MS Visual Web Developer 2008 Express Edition. Создаем asp.net-страницу со следующим кодом (Default.aspx):
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head id="Head1" runat="server">
<title>Пример связывания XML-файла с элементом управления TreeView</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource id="XmlDataSource1"
runat="server" datafile="Life.xml"
transformfile="Life.xsl"/>
<asp:treeview id="TreeView1" runat="server" datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding depth="1" datamember="TypeOfAnimals"
textfield="name" valuefield="name"/>
<asp:treenodebinding depth="2" datamember="ClassOfAnimals"
textfield="title" valuefield="AnimalID"/>
<asp:treenodebinding depth="3" datamember="order"
textfield="name" valuefield="num"/>
</databindings>
</asp:treeview>
</form>
</body>
</html>
Затем создаем файл Life.xml:
<?xml version="1.0" encoding="windows-1251" ?>
<kingdom>
<TypeOfAnimals name="Членистоногие">
<ClassOfAnimals AnimalID="0000000000">
<title>Насекомые</title>
<Description>Имеют шесть ног</Description>
<orders>
<order num="1" name="ЖЕСТКОКРЫЛЫЕ" />
<order num="2" name="ЧЕШУЕКРЫЛЫЕ" />
<order num="3" name="ПЕРЕПОНЧАТОКРЫЛЫЕ" />
</orders>
</ClassOfAnimals>
<ClassOfAnimals AnimalID="0000000001">
<title>Ракообразные</title>
<Description>Ракообразные населяют любые существующие на Земле водоемы</Description>
<orders>
<order num="1" name="УСОНОГИЕ" />
<order num="2" name="ВЕСЛОНОГИЕ" />
<order num="3" name="ЛИСТОНОГИЕ" />
<order num="4" name="ДЕСЯТИНОГИЕ" />
<order num="5" name="РОТОНОГИЕ" />
</orders>
</ClassOfAnimals>
</TypeOfAnimals>
<TypeOfAnimals name="Хордовые">
<ClassOfAnimals TypeOfAnimals="novel" AnimalID="1111111111">
<title>Млекопитающие</title>
<Description>Вскармливают детенышей молоком</Description>
<orders>
<order num="1" name="ПРИМАТЫ" />
<order num="2" name="ПАРНОКОПЫТНЫЕ" />
<order num="3" name="КИТООБРАЗНЫЕ" />
</orders>
</ClassOfAnimals>
<ClassOfAnimals TypeOfAnimals="novel" AnimalID="1111111112">
<title>Птицы</title>
<Description>Класс ПТИЦЫ (Aves) класс позвоночных животных,
тело которых покрыто перьями и передние конечности видоизменены
в органы полета - крылья.</Description>
<orders>
<order num="1" name="ВОРОБЬИНЫЕ" />
<order num="2" name="ГАГАРЫ" />
<order num="3" name="ГОЛУБИ" />
<order num="4" name="ДЯТЛЫ" />
<order num="5" name="ЖУРАВЛИ" />
<order num="6" name="КИВИ" />
</orders>
</ClassOfAnimals>
</TypeOfAnimals>
</kingdom>
Таблица стилей XSL (файл Life.xsl), выполняющая преобразование данных XML, обладает следующей структурой:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="kingdom">
<kingdom>
<xsl:apply-templates select="TypeOfAnimals"/>
</kingdom>
</xsl:template>
<xsl:template match="TypeOfAnimals">
<TypeOfAnimals>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates select="ClassOfAnimals"/>
</TypeOfAnimals>
</xsl:template>
<xsl:template match="ClassOfAnimals">
<ClassOfAnimals>
<xsl:attribute name="AnimalID">
<xsl:value-of select="@AnimalID"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="title"/>
</xsl:attribute>
<xsl:attribute name="Description">
<xsl:value-of select="Description"/>
</xsl:attribute>
<xsl:apply-templates select="orders/order" />
</ClassOfAnimals>
</xsl:template>
<xsl:template match="order">
<order>
<xsl:attribute name="num">
<xsl:value-of select="@num"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates/>
</order>
</xsl:template>
</xsl:stylesheet>
Запустите проект. Результат получится такой:
(рис 15.4) Отображение содержимого XML-файла с помощью элемента управления TreeViewТаблицы XSLT применяются для преобразования содержимого исходного XML-документа в другой документ, отличный по формату или структуре (например, для преобразования XML в HTML). Элемент управления XmlDataSource делает данные в XML-файле доступными для элементов управления, находящихся на странице. Данные доступны в двух форматах: иерархическом и табличном. Элементы управления, привязанные к элементу управления XmlDataSource, могут получать данные в подходящем формате. Табличные данные удобно отображать с помощью
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.