The error diaplayed on page: Error reading XSLT file: \xslt\mtt_ultimateNav.xslt
and error displayed under debug show trace:
Error loading XSLT mtt_ultimateNav.xslt Could not load file or assembly 'file:///C:\Windows\TEMP\2ntrr1se.dll' or one of its dependencies. Access is denied.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,
String codeBase, Evidence assemblySecurity, RuntimeAssembly
locationHint, StackCrawlMark& stackMark, Boolean
throwOnFileNotFound, Boolean forIntrospection, Boolean
suppressSecurityChecks) at
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName
assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark,
Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence assemblySecurity) at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly() at System.Xml.Xsl.Xslt.Scripts.CompileAssembly(List`1 scriptsForLang) at System.Xml.Xsl.Xslt.Scripts.CompileScripts() at System.Xml.Xsl.Xslt.QilGenerator.Compile(Compiler compiler) at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil) at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver) at umbraco.macro.CreateXsltTransform(XmlTextReader xslReader, Boolean debugMode) at umbraco.macro.getXslt(String XsltFile) at umbraco.macro.loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)
The site is hosted on a hosted server at Surftown.dk.
Please give me some advis, so that I can continue...
<!-- Holds the start node for the navigation. Optional --> <xsl:param name="startNodeId" select="/macro/startNodeId"/> <!-- Holds number of sublevels to generate. Macro parameter is optional. Defaults to one if not supplied --> <xsl:param name="maxDrilldownLevel" select="netaddicts-be:ReadMacroParameter(//macro/maxLevels,'1')"/>
<xsl:template match="/">
<!-- Check whether a start node has been supplied --> <xsl:choose> <xsl:when test="$startNodeId != ''">
<!-- Start building the top navigation from the node supplied by start node id --> <xsl:call-template name="buildTopNavigation"> <xsl:with-param name="navigationNodes" select="umbraco.library:GetXmlNodeById($startNodeId)"/> </xsl:call-template>
</xsl:when> <xsl:otherwise>
<!-- Start building navigation from top level node --> <xsl:call-template name="buildTopNavigation"> <xsl:with-param name="navigationNodes" select="umbraco.library:GetXmlAll()"/> </xsl:call-template>
</xsl:otherwise> </xsl:choose>
</xsl:template>
<!-- Start building the top navigation (first level navigation) --> <xsl:template name="buildTopNavigation"> <xsl:param name="navigationNodes"/>
<!-- Create var for easier reading/processing --> <xsl:variable name="currentProcessedNode" select="."/> <xsl:variable name="currentLevel" select="0"/>
<!-- Check whether node should be visible in first level navigation --> <xsl:if test="string($currentProcessedNode/data [@alias = 'umbracoNaviHide']) != '1'">
<li>
<!-- Build the navigation link using the node currently being processed in the for-each loop --> <xsl:call-template name="buildLink"> <xsl:with-param name="node" select="$currentProcessedNode"/> </xsl:call-template>
<!-- Build next level navigation only if applicable --> <!-- Still need to check whether all child nodes have been set to umbracoHideChildren = 1 whereas umbracoNaviHide = 0 this case would yield an empty ul element --> <xsl:if test="(count($currentProcessedNode/node) > 0) and (string($currentProcessedNode/data [@alias = 'umbracoHideChildren']) != '1') and ($currentLevel < $maxDrilldownLevel)"> <xsl:call-template name="buildNavigation"> <xsl:with-param name="parentNode" select="$currentProcessedNode"/> <xsl:with-param name="level" select="$currentLevel + 1"/> </xsl:call-template> </xsl:if>
</li>
</xsl:if>
</xsl:for-each> </ul>
</xsl:template>
<!-- A template used for building the non top navigation tree --> <xsl:template name="buildNavigation"> <xsl:param name="parentNode"/> <xsl:param name="level"/> <ul> <!-- Iterate over the child nodes--> <xsl:for-each select="$parentNode/node">
<!-- Create var for easier reading/processing --> <xsl:variable name="currentProcessedNode" select="."/>
<!-- Check whether node should be processed --> <xsl:if test="string($currentProcessedNode/data [@alias = 'umbracoNaviHide']) != '1'">
<li class="child">
<!-- Build the navigation link --> <xsl:call-template name="buildLink"> <xsl:with-param name="node" select="$currentProcessedNode"/> </xsl:call-template>
<!-- Build next level navigation only if applicable; recursive call --> <!-- Still need to check whether all child nodes have been set to umbracoHideChildren = 1 whereas umbracoNaviHide = 0 this case would yield an empty ul element --> <xsl:if test=" (count($currentProcessedNode/node) > 0) and (string($currentProcessedNode/data [@alias = 'umbracoHideChildren']) != '1') and ($level < $maxDrilldownLevel)"> <xsl:call-template name="buildNavigation"> <xsl:with-param name="parentNode" select="$currentProcessedNode"/> <xsl:with-param name="level" select="$level + 1"/> </xsl:call-template> </xsl:if>
</li>
</xsl:if>
</xsl:for-each> </ul> </xsl:template>
<!-- A template that builds our navigation link based on node properties --> <xsl:template name="buildLink"> <xsl:param name="node"/>
<xsl:choose>
<!-- Build link to external page --> <xsl:when test="string($node/data [@alias = 'externalURL']) != ''">
<!-- A template that builds a link to an external page --> <xsl:template name="buildExternalLink"> <xsl:param name="node"/>
<!-- <xsl:call-template name ="outputNode"> <xsl:with-param name="currentNode" select="$node"/> </xsl:call-template> -->
<a> <!-- Set the href attribute --> <xsl:attribute name="href"> <xsl:value-of select="$node/data [@alias = 'externalURL']"/> </xsl:attribute> <!-- Set the target attribute if available from the properties --> <xsl:if test="string($node/data [@alias = 'externalTarget']) != ''"> <xsl:attribute name="target"> <xsl:value-of select="$node/data [@alias = 'externalTarget']"/> </xsl:attribute> </xsl:if> <!-- Set the title attribute if available from the properties --> <xsl:if test="string($node/data [@alias = 'navTooltip']) != ''"> <xsl:attribute name="title"> <xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/> </xsl:attribute> </xsl:if> <!-- Set actual text for the link, either available from the properties or just plain umbraco link--> <xsl:choose> <xsl:when test="string($node/data [@alias = 'navText']) != ''"> <xsl:value-of select="string($node/data [@alias = 'navText'])"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$node/@nodeName"/> </xsl:otherwise> </xsl:choose> </a>
<!-- <xsl:call-template name ="outputNode"> <xsl:with-param name="currentNode" select="$node"/> </xsl:call-template> -->
<a> <!-- Set the href attribute based on the redirect supplied --> <xsl:attribute name="href"> <xsl:value-of select="netaddicts-be:FixLink(string($node/data [@alias = 'umbracoRedirect']))"/> </xsl:attribute> <!-- Set the title attribute if available from the properties --> <xsl:if test="string($node/data [@alias = 'navTooltip']) != ''"> <xsl:attribute name="title"> <xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/> </xsl:attribute> </xsl:if> <!-- Set actual text for the link, either available from the properties or just plain umbraco link--> <xsl:choose> <xsl:when test="string($node/data [@alias = 'navText']) != ''"> <xsl:value-of select="string($node/data [@alias = 'navText'])"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$node/@nodeName"/> </xsl:otherwise> </xsl:choose> </a>
<!-- <xsl:call-template name ="outputNode"> <xsl:with-param name="currentNode" select="$node"/> </xsl:call-template> -->
<a> <!-- Set the href attribute, either the alias if available, else use NiceUrl() --> <xsl:attribute name="href"> <xsl:choose> <xsl:when test="string($node/data [@alias = 'umbracoUrlAlias']) != ''"> <xsl:value-of select="netaddicts-be:FixLink(string($node/data [@alias = 'umbracoUrlAlias']))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="umbraco.library:NiceUrl($node/@id)"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> <!-- Set the title attribute if available from the properties --> <xsl:if test="string($node/data [@alias = 'navTooltip']) != ''"> <xsl:attribute name="title"> <xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/> </xsl:attribute> </xsl:if> <!-- Set actual text for the link, either available from the properties or just plain umbraco link--> <xsl:choose> <xsl:when test="string($node/data [@alias = 'navText']) != ''"> <xsl:value-of select="string($node/data [@alias = 'navText'])"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$node/@nodeName"/> </xsl:otherwise> </xsl:choose> </a>
<msxsl:script language="C#" implements-prefix="netaddicts-be"> <![CDATA[ //Function is taken from XSLTSearch by Douglas Robar from Percipient Studios (http://www.percipientstudios.com/) public string ReadMacroParameter(string value, string defaultValue) { if (value == "") return defaultValue; else return value.Replace(" ", ""); } //Function fixes a possible wrongly formatted link public string FixLink(string oldLink) { string newLink = string.Empty; if (!oldLink.StartsWith("/")) newLink += "/"; newLink += oldLink; if (!oldLink.EndsWith(".aspx")) newLink += ".aspx"; return newLink; } ]]> </msxsl:script>
Umbraco 4.7 and Dynamic Nav.
Hi,
I have a problem implementing a dynamic navigation under my umbraco 4.7 project.
This navigation http://packages.maliciousthinktank.com/navdemo.aspx
The error diaplayed on page: Error reading XSLT file: \xslt\mtt_ultimateNav.xslt
and error displayed under debug show trace:
Could not load file or assembly 'file:///C:\Windows\TEMP\2ntrr1se.dll' or one of its dependencies. Access is denied.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence assemblySecurity)
at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
at System.Xml.Xsl.Xslt.Scripts.CompileAssembly(List`1 scriptsForLang)
at System.Xml.Xsl.Xslt.Scripts.CompileScripts()
at System.Xml.Xsl.Xslt.QilGenerator.Compile(Compiler compiler)
at System.Xml.Xsl.Xslt.Compiler.Compile(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
at umbraco.macro.CreateXsltTransform(XmlTextReader xslReader, Boolean debugMode)
at umbraco.macro.getXslt(String XsltFile)
at umbraco.macro.loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)
The site is hosted on a hosted server at Surftown.dk.
Please give me some advis, so that I can continue...
Best Regards
Klaus
By the way, here is the Navigation file..
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library"
xmlns:netaddicts-be="urn:netaddicts-be:xslt"
exclude-result-prefixes="msxml umbraco.library netaddicts-be">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<!-- Holds the start node for the navigation. Optional -->
<xsl:param name="startNodeId" select="/macro/startNodeId"/>
<!-- Holds number of sublevels to generate. Macro parameter is optional. Defaults to one if not supplied -->
<xsl:param name="maxDrilldownLevel" select="netaddicts-be:ReadMacroParameter(//macro/maxLevels,'1')"/>
<xsl:template match="/">
<!-- Check whether a start node has been supplied -->
<xsl:choose>
<xsl:when test="$startNodeId != ''">
<!-- Start building the top navigation from the node supplied by start node id -->
<xsl:call-template name="buildTopNavigation">
<xsl:with-param name="navigationNodes" select="umbraco.library:GetXmlNodeById($startNodeId)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- Start building navigation from top level node -->
<xsl:call-template name="buildTopNavigation">
<xsl:with-param name="navigationNodes" select="umbraco.library:GetXmlAll()"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Start building the top navigation (first level navigation) -->
<xsl:template name="buildTopNavigation">
<xsl:param name="navigationNodes"/>
<ul class="mainNav">
<!-- Iterate child nodes -->
<xsl:for-each select="$navigationNodes/child::node">
<!-- Create var for easier reading/processing -->
<xsl:variable name="currentProcessedNode" select="."/>
<xsl:variable name="currentLevel" select="0"/>
<!-- Check whether node should be visible in first level navigation -->
<xsl:if test="string($currentProcessedNode/data [@alias = 'umbracoNaviHide']) != '1'">
<li>
<!-- Build the navigation link using the node currently being processed in the for-each loop -->
<xsl:call-template name="buildLink">
<xsl:with-param name="node" select="$currentProcessedNode"/>
</xsl:call-template>
<!-- Build next level navigation only if applicable -->
<!-- Still need to check whether all child nodes have been set to umbracoHideChildren = 1 whereas umbracoNaviHide = 0
this case would yield an empty ul element -->
<xsl:if test="(count($currentProcessedNode/node) > 0)
and (string($currentProcessedNode/data [@alias = 'umbracoHideChildren']) != '1')
and ($currentLevel < $maxDrilldownLevel)">
<xsl:call-template name="buildNavigation">
<xsl:with-param name="parentNode" select="$currentProcessedNode"/>
<xsl:with-param name="level" select="$currentLevel + 1"/>
</xsl:call-template>
</xsl:if>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
<!-- A template used for building the non top navigation tree -->
<xsl:template name="buildNavigation">
<xsl:param name="parentNode"/>
<xsl:param name="level"/>
<ul>
<!-- Iterate over the child nodes-->
<xsl:for-each select="$parentNode/node">
<!-- Create var for easier reading/processing -->
<xsl:variable name="currentProcessedNode" select="."/>
<!-- Check whether node should be processed -->
<xsl:if test="string($currentProcessedNode/data [@alias = 'umbracoNaviHide']) != '1'">
<li class="child">
<!-- Build the navigation link -->
<xsl:call-template name="buildLink">
<xsl:with-param name="node" select="$currentProcessedNode"/>
</xsl:call-template>
<!-- Build next level navigation only if applicable; recursive call -->
<!-- Still need to check whether all child nodes have been set to umbracoHideChildren = 1 whereas umbracoNaviHide = 0
this case would yield an empty ul element -->
<xsl:if test="
(count($currentProcessedNode/node) > 0)
and (string($currentProcessedNode/data [@alias = 'umbracoHideChildren']) != '1')
and ($level < $maxDrilldownLevel)">
<xsl:call-template name="buildNavigation">
<xsl:with-param name="parentNode" select="$currentProcessedNode"/>
<xsl:with-param name="level" select="$level + 1"/>
</xsl:call-template>
</xsl:if>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
<!-- A template that builds our navigation link based on node properties -->
<xsl:template name="buildLink">
<xsl:param name="node"/>
<xsl:choose>
<!-- Build link to external page -->
<xsl:when test="string($node/data [@alias = 'externalURL']) != ''">
<xsl:call-template name="buildExternalLink">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</xsl:when>
<!-- Build link for redirecting to a custom supplied url -->
<xsl:when test="string($node/data [@alias = 'umbracoRedirect']) != ''">
<xsl:call-template name="buildRedirectLink">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</xsl:when>
<!-- Default link builder -->
<xsl:otherwise>
<xsl:call-template name="buildNormalLink">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- A template that builds a link to an external page -->
<xsl:template name="buildExternalLink">
<xsl:param name="node"/>
<!--
<xsl:call-template name ="outputNode">
<xsl:with-param name="currentNode" select="$node"/>
</xsl:call-template>
-->
<a>
<!-- Set the href attribute -->
<xsl:attribute name="href">
<xsl:value-of select="$node/data [@alias = 'externalURL']"/>
</xsl:attribute>
<!-- Set the target attribute if available from the properties -->
<xsl:if test="string($node/data [@alias = 'externalTarget']) != ''">
<xsl:attribute name="target">
<xsl:value-of select="$node/data [@alias = 'externalTarget']"/>
</xsl:attribute>
</xsl:if>
<!-- Set the title attribute if available from the properties -->
<xsl:if test="string($node/data [@alias = 'navTooltip']) != ''">
<xsl:attribute name="title">
<xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/>
</xsl:attribute>
</xsl:if>
<!-- Set actual text for the link, either available from the properties or just plain umbraco link-->
<xsl:choose>
<xsl:when test="string($node/data [@alias = 'navText']) != ''">
<xsl:value-of select="string($node/data [@alias = 'navText'])"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$node/@nodeName"/>
</xsl:otherwise>
</xsl:choose>
</a>
</xsl:template>
<xsl:template name="buildRedirectLink">
<xsl:param name="node"/>
<!--
<xsl:call-template name ="outputNode">
<xsl:with-param name="currentNode" select="$node"/>
</xsl:call-template>
-->
<a>
<!-- Set the href attribute based on the redirect supplied -->
<xsl:attribute name="href">
<xsl:value-of select="netaddicts-be:FixLink(string($node/data [@alias = 'umbracoRedirect']))"/>
</xsl:attribute>
<!-- Set the title attribute if available from the properties -->
<xsl:if test="string($node/data [@alias = 'navTooltip']) != ''">
<xsl:attribute name="title">
<xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/>
</xsl:attribute>
</xsl:if>
<!-- Set actual text for the link, either available from the properties or just plain umbraco link-->
<xsl:choose>
<xsl:when test="string($node/data [@alias = 'navText']) != ''">
<xsl:value-of select="string($node/data [@alias = 'navText'])"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$node/@nodeName"/>
</xsl:otherwise>
</xsl:choose>
</a>
</xsl:template>
<xsl:template name="buildNormalLink">
<xsl:param name="node"/>
<!--
<xsl:call-template name ="outputNode">
<xsl:with-param name="currentNode" select="$node"/>
</xsl:call-template>
-->
<a>
<!-- Set the href attribute, either the alias if available, else use NiceUrl() -->
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="string($node/data [@alias = 'umbracoUrlAlias']) != ''">
<xsl:value-of select="netaddicts-be:FixLink(string($node/data [@alias = 'umbracoUrlAlias']))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="umbraco.library:NiceUrl($node/@id)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<!-- Set the title attribute if available from the properties -->
<xsl:if test="string($node/data [@alias = 'navTooltip']) != ''">
<xsl:attribute name="title">
<xsl:value-of select="string($node/data [@alias = 'navTooltip'])"/>
</xsl:attribute>
</xsl:if>
<!-- Set actual text for the link, either available from the properties or just plain umbraco link-->
<xsl:choose>
<xsl:when test="string($node/data [@alias = 'navText']) != ''">
<xsl:value-of select="string($node/data [@alias = 'navText'])"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$node/@nodeName"/>
</xsl:otherwise>
</xsl:choose>
</a>
</xsl:template>
<!-- For debugging purposes, writes out all relevant node properties -->
<xsl:template name="outputNode">
<xsl:param name="currentNode"/>
<ul>
<li>
@id=<xsl:value-of select="$currentNode/@id"/>
</li>
<li>
@nodeName=<xsl:value-of select="$currentNode/@nodeName"/>
</li>
<li>
@umbracoNaviHide=<xsl:value-of select="$currentNode/data [@alias = 'umbracoNaviHide']"/>
</li>
<li>
@umbracoHideChildren=<xsl:value-of select="$currentNode/data [@alias = 'umbracoHideChildren']"/>
</li>
<li>
@navText=<xsl:value-of select="$currentNode/data [@alias = 'navText']"/>
</li>
<li>
@navTooltip=<xsl:value-of select="$currentNode/data [@alias = 'navTooltip']"/>
</li>
<li>
@externalURL=<xsl:value-of select="$currentNode/data [@alias = 'externalURL']"/>
</li>
<li>
@externalTarget=<xsl:value-of select="$currentNode/data [@alias = 'externalTarget']"/>
</li>
<li>
@umbracoRedirect=<xsl:value-of select="$currentNode/data [@alias = 'umbracoRedirect']"/>
</li>
<li>
@umbracoUrlAlias=<xsl:value-of select="$currentNode/data [@alias = 'umbracoUrlAlias']"/>
</li>
</ul>
</xsl:template>
<msxsl:script language="C#" implements-prefix="netaddicts-be">
<![CDATA[
//Function is taken from XSLTSearch by Douglas Robar from Percipient Studios (http://www.percipientstudios.com/)
public string ReadMacroParameter(string value, string defaultValue) {
if (value == "")
return defaultValue;
else
return value.Replace(" ", "");
}
//Function fixes a possible wrongly formatted link
public string FixLink(string oldLink) {
string newLink = string.Empty;
if (!oldLink.StartsWith("/"))
newLink += "/";
newLink += oldLink;
if (!oldLink.EndsWith(".aspx"))
newLink += ".aspx";
return newLink;
}
]]>
</msxsl:script>
</xsl:stylesheet>
Hi Klaus
I don't think your XSLT is the cause of the error.
It could look like a permission problem regarding the temporary files on the server.
I'm sure surftown knows what to do, if you show them the error.
Hello there,
Okay thanks, Before i contact them does anyone else have some saying on this issue?
//Klaus
is working on a reply...