kristoffer
2002-07-15, 16:06
Jag vill skapa en TreeView WebControl (http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/treeview.asp) i .NET mha Data Binding med XML och XSL template.
Koden för TreeView-elementet som bindar till ett XML- och ett XSL-dokument ser ut så här<iewc:treeview id="tree1" runat="server" TreeNodeSrc="http://localhost/myxml/xmltest/menus2.xml" TreeNodeXsltSrc="http://localhost/myxml/xmltest/menus2.xsl"></iewc:treeview>
och menus2.xml så här:<?xml version="1.0" ?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl="menus2.xsl">
<sql:query>
select * from menus for xml auto
</sql:query>
</root>
och menus2.xsl så här:<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<TREENODES>
<xsl:apply-templates select="root/menus[not(@parentID)]"/>
</TREENODES>
</xsl:template>
<xsl:template match="menus">
<xsl:variable name="ID" select="@menuID"/>
<treenode>
<xsl:attribute name="Text"><xsl:value-of select="@Title"/></xsl:attribute>
<xsl:attribute name="NavigateURL"><xsl:value-of select="@URL"/></xsl:attribute>
<xsl:attribute name="Target" >main</xsl:attribute>
<xsl:apply-templates select="//menus[@parentID=$ID]"/>
</treenode>
</xsl:template>
</xsl:stylesheet>
Jag har skapat ett virtual directory som pekar på det bibliotek som innehåller xml- och xsl-filen. Jag lade även till ett virtual name av typen Template som pekar på samma bibliotek. När jag kör filen i browsern får jag exakt den xml-kod jag vill ha. Den genererar alltså rätt kod. Problemet är att TreeViewen är tom när jag kör den. Om jag copy/pastear in xml-koden i ett nytt dokument och länkar direkt till det så fungerar det. Men det fungerar alltså inte att länka till xml- och xsl-dokumenten.
Källan till koderna finns på http://sqlxml.org/faqs.aspx?55
Koden för TreeView-elementet som bindar till ett XML- och ett XSL-dokument ser ut så här<iewc:treeview id="tree1" runat="server" TreeNodeSrc="http://localhost/myxml/xmltest/menus2.xml" TreeNodeXsltSrc="http://localhost/myxml/xmltest/menus2.xsl"></iewc:treeview>
och menus2.xml så här:<?xml version="1.0" ?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl="menus2.xsl">
<sql:query>
select * from menus for xml auto
</sql:query>
</root>
och menus2.xsl så här:<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<TREENODES>
<xsl:apply-templates select="root/menus[not(@parentID)]"/>
</TREENODES>
</xsl:template>
<xsl:template match="menus">
<xsl:variable name="ID" select="@menuID"/>
<treenode>
<xsl:attribute name="Text"><xsl:value-of select="@Title"/></xsl:attribute>
<xsl:attribute name="NavigateURL"><xsl:value-of select="@URL"/></xsl:attribute>
<xsl:attribute name="Target" >main</xsl:attribute>
<xsl:apply-templates select="//menus[@parentID=$ID]"/>
</treenode>
</xsl:template>
</xsl:stylesheet>
Jag har skapat ett virtual directory som pekar på det bibliotek som innehåller xml- och xsl-filen. Jag lade även till ett virtual name av typen Template som pekar på samma bibliotek. När jag kör filen i browsern får jag exakt den xml-kod jag vill ha. Den genererar alltså rätt kod. Problemet är att TreeViewen är tom när jag kör den. Om jag copy/pastear in xml-koden i ett nytt dokument och länkar direkt till det så fungerar det. Men det fungerar alltså inte att länka till xml- och xsl-dokumenten.
Källan till koderna finns på http://sqlxml.org/faqs.aspx?55