Опубликован: 05.08.2010 | Уровень: для всех | Доступ: платный
Лекция 12:

Отображение содержимого 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>
Листинг .

Запустите проект. Результат получится такой:

Отображение содержимого XML-файла с помощью элемента управления TreeView

Рис. 15.4. Отображение содержимого XML-файла с помощью элемента управления TreeView

Краткие итоги

Таблицы XSLT применяются для преобразования содержимого исходного XML-документа в другой документ, отличный по формату или структуре (например, для преобразования XML в HTML). Элемент управления XmlDataSource делает данные в XML-файле доступными для элементов управления, находящихся на странице. Данные доступны в двух форматах: иерархическом и табличном. Элементы управления, привязанные к элементу управления XmlDataSource, могут получать данные в подходящем формате. Табличные данные удобно отображать с помощью элемента управления GridView, а данные с иерархической структурой - TreeView.

Набор для практики

Вопросы:

  1. Что такое XSLT- преобразование?
  2. Можно ли к одному XML-файлу применять сразу несколько XSLT-таблиц? Если да, то как?
  3. Какой элемент управления лучше подходит для иерархических данных? Какой лучше для табличных данных?

Упражнения:

  1. Создайте приложение, отображающее прайс-лист некой фирмы в кратком и подробном виде с помощью элемента управления Xml.
  2. Разработайте программу, в которой иерархия: ВУЗ \to Факультет \to Специальность отображалась бы с помощью элемента управления TreeView.
  3. Отобразите сведения о неком заказе с помощью элемента управления GridView.
Чуадум Шапда
Чуадум Шапда
Россия, Санкт Петербург
Юрий Сысков
Юрий Сысков
Россия, Снежинск, СГФТА, 2005