Чтобы получить более практичный результат с привязкой данных TreeView, вам придется воспользоваться трансформацией XSL для создания более подходящей структуры, как описано в следующем разделе.
Совет. Чтобы научиться форматировать TreeView, включая изменение внешнего вида линий и изображений узлов, обратитесь к главе 16.
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