Alltså, jag måste verkligen få rätt på det här. I Internet Explorer fungerar det, men i asp.net fungerar det inte. Jag vill alltså skapa rekursiv XML till en meny (eftersom menyn kan ha undermenyer osv). I databasen har jag menuID och parentID som är kopplat till menuID.
Jag har en xml-fil:
<?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 en xsl-fil:
<?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>
Ser ni några fel i koden? Det fungerar som sagt i Internet Explorer när jag browsar till filen, men när jag debuggar den i en xsl-debugger eller försöker transformera den i asp.net får jag bara upp
<?xml version="1.0" encoding="UTF-16"?><TREENODES></TREENODES>
Jag är lite osäker på vilken sökväg till filerna jag egentligen skall använda. Jag har skapat ett virtual directory som pekar på det bibliotek som innehåller xml- och xsl-filen. Sedan skall man tydligen även skapa ett virtual name av typen Template som pekar på det virtual directoryt man just skapade. Exempel:
- Jag lägger xml- och xsl-filerna i C:\Inetpub\wwwroot\myproject\xml.
- I "IIS Virtual Directory Managment for SQL Server" skapar jag ett virtual directory som heter myprojectxml och sätter Local Path till C:\Inetpub\wwwroot\myproject\xml och ställer in data source så den hittar rätt databas osv. Jag lägger till ett Virtual Name som heter xmltest och sätter dess Local Path till C:\Inetpub\wwwroot\myproject\xml.
Därefter kan jag surfa till http://localhost/myprojectxml/xmltest/menus2.xml och då se den rätta xml-koden. Det betyder att den hittar databasen och transformeringen fungerar osv, men i asp.net eller i en debugger fungerar det inte.