Россия, Санкт Петербург |
Отображение содержимого 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.