<!-- Rename the root element. -->
<xsl:element name="Movies">
<xsl:apply-templates select="//DVD" />
</xsl:element>
</xsl:template>
<xsl:template match="DVD">
<!-- Keep the DVD element with the same name. -->
<xsl:element name="{name()}">
<!-- Keep the ID attribute. -->
<xsl:attribute name="ID">
<xsl:value-of select="@ID"/>
</xsl:attribute>
<!-- Put the nested <Title> text into an attribute. -->
<xsl:attribute name="Title">
<xsl:value-of select="Title/text()"/>
</xsl:attribute>
<xsl:apply-templates select="Starring" />
</xsl:element>
</xsl:template>
<xsl:template match="Starring">
<xsl:element name="Stars">
<!-- Put the nested <Star> text into an attribute. -->
<xsl:attribute name="Name">
<xsl:value-of select="Star/text()"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Теперь можно привязать это к TreeView и отобразить со следующим набором привязок:
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="sourceDVD"
AutoGenerateDataBindings="False">
<DataBindings>
<asp:TreeNodeBinding DataMember="Movies" Text="Movies" />
<asp:TreeNodeBinding DataMember="DVD" TextField="Title" />
<asp:TreeNodeBinding DataMember="Stars" TextField="Name" />
</DataBindings>
</asp:TreeView>
До сих пор примеры, которые вы видели, привязывались к содержимому XML, полученному из файлов. Это стандартный сценарий для элемента управления XmlDataSource, но это не единственная возможность, которая имеется в вашем распоряжении. Другой вариант — применить XML, как текст через свойство XmlDataSource.Data.
Свойство Data можно установить в любой точке перед тем, как произойдет связывание. Подходящим для этого может быть обработчик событий Page.Load:
предыдущая следующая страница вначало главы оглавление
562