| Россия |
Отображение содержимого XML-документов
Связывание XML-файла с элементом управления TreeView
Элемент управления TreeView позволяет отображать данные с иерархической структурой. Пользователи могут открывать отдельные узлы, которые в свою очередь содержат дочерние узлы. Элемент управления TreeView используется для отображения данных XML, но его также можно применять для любых данных, которые можно представить иерархически [3,4].
Далее, мы продемонстрируем, как использовать элементы управления XmlDataSource и TreeView для отображения преобразованных данных XML в веб-форме. Преобразование выполняется с использованием таблицы стилей, заданной свойством TransformFile. В качестве примера мы выбрали классификацию живых организмов.
Запускаем MS Visual Web Developer 2008 Express Edition. Создаем asp.net-страницу со следующим кодом ():
<%@ 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><?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 (файл ), выполняющая преобразование данных 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>
Листинг
.
Запустите проект. Результат получится такой:
Краткие итоги
Таблицы XSLT применяются для преобразования содержимого исходного XML-документа в другой документ, отличный по формату или структуре (например, для преобразования XML в HTML). Элемент управления XmlDataSource делает данные в XML-файле доступными для элементов управления, находящихся на странице. Данные доступны в двух форматах: иерархическом и табличном. Элементы управления, привязанные к элементу управления XmlDataSource, могут получать данные в подходящем формате. Табличные данные удобно отображать с помощью элемента управления GridView, а данные с иерархической структурой - TreeView.
Набор для практики
Вопросы:
- Что такое XSLT- преобразование?
- Можно ли к одному XML-файлу применять сразу несколько XSLT-таблиц? Если да, то как?
- Какой элемент управления лучше подходит для иерархических данных? Какой лучше для табличных данных?
Упражнения:
- Создайте приложение, отображающее прайс-лист некой фирмы в кратком и подробном виде с помощью элемента управления Xml.
- Разработайте программу, в которой иерархия: ВУЗ
Факультет
Специальность отображалась бы с помощью элемента управления TreeView. - Отобразите сведения о неком заказе с помощью элемента управления GridView.

