Чтобы получить более практичный результат с привязкой данных TreeView, вам придется воспользоваться трансформацией XSL для создания более подходящей структуры, как описано в следующем разделе.

Совет. Чтобы научиться форматировать TreeView, включая изменение внешнего вида линий и изображений узлов, обратитесь к главе 16.

Использование XSLT

XmlDataSource включает похожую встроенную поддержку трансформаций XSL. Разница в том, что при этом таблицы стилей не используются для преобразования XML в HTML. Вместо этого вы применяете их для преобразования исходного XML-документа в структуру XML, которую легко привязать. Например, вы можете сгенерировать XML-документ только с нужными результатами и упрощенной структурой (с элементами, преобразованными в атрибуты) для облегченной привязки данных.

Чтобы специфицировать таблицу стилей, можно установить свойство XmlDataSource.TransformFile на файл с трансформацией XSL либо применить таблицу стилей как одну длинную строку, используя для этого свойство XmLDataSource.Transform. Можно использовать вместе таблицы стилей и выражения XPath, но таблица стилей всегда применяется первой.

<asp:XmlDataSource ID="sourceDVD" runat="server" DataFile="DvdList.xml"
   TransformFile="DVDTreeList.xsl" /">

Одна веcкая причина для применения XSLT средства XmlDataSource состоит в том, что это позволяет подготовить данные XML для отображения в иерархическом элементе управления, таком как TreeView. Например, предположим, что вы хотите создать список кинозвезд, сгруппировав их по фильмам. Вы также хотите поместить все содержимое в атрибуты, чтобы его было легко привязать.

Вот как будет выглядеть окончательный XML:

<Movies>
  <DVD ID="1" Title="The Matrix">
    <Star Name="Keanu Reeves" />
    <Star Name="Laurence Fishburne" />
  </DVD>
  <DVD ID="2" Title="Forest Gump">
    <Star Name="Tom Hanks" />
    <Star Name="RobLn Wright" />
  </DVD>
...
</Movies>

Можно трансформировать исходный XML в такую разметку, используя следующую таблицу стилей XSLT:

<xsl:stylesheet xmln3:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml"/>
    <xsl:template match="/">

предыдущая    следующая страница    вначало главы    оглавление

561

Hosted by uCoz