<!-- 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 из других источников

До сих пор примеры, которые вы видели, привязывались к содержимому XML, полученному из файлов. Это стандартный сценарий для элемента управления XmlDataSource, но это не единственная возможность, которая имеется в вашем распоряжении. Другой вариант — применить XML, как текст через свойство XmlDataSource.Data.

Свойство Data можно установить в любой точке перед тем, как произойдет связывание. Подходящим для этого может быть обработчик событий Page.Load:

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

562

Hosted by uCoz