webForumDet fria alternativet

xml och xsl

0 svar · 161 visningar · startad av kristoffer

kristofferMedlem sedan juni 20001 257 inlägg
#1

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.

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)