UPDATE 6th Sept 09
Version 1.1 Released. The control now contains CacheXslt and CacheHtml properties. N.B. Caching is based on the controls ID, so use unique ID's.
SUMMARY
This package allows xslt files to be referenced from a template without the need to create an intermediary macro. This can remove the need for macro's completely from some sites, with the exception of RTE injected macros.
Example: you have a xslt called Navigation.xslt which you need to add to a template. Rather than creating a macro you can now just write
<XsltResult:XsltResult runat="server" XsltFilename="xslt/Navigation.xslt" NavigationType="Primary" />
All xslt extensions are still loaded as normal.
N.B. Remember to register the control using <%@ Register TagPrefix="XsltResult" Assembly="XsltResult" Namespace="XsltResult" %>.
PARAMETERS
The parameter 'NavigationType' in the example above is a completely custom parameter that XsltResult doesn't know about (and doesn't care about!). If such parameters are detected then they are passed directly to the xslt file. They should be declared in your xslt file as follows:
<xsl:param name="NavigationType" />
SUB FOLDERS
As you specify the XsltFilename you can now organise your xslt files into sub folders. For Example:
INLINE XSLT
I've also included support for InlineXSLT. You can use this when you don't wish to create an separate xslt file. This may be because you will only use this piece of xslt once.
<XsltResult:XsltResult runat="server">
<InlineXslt>
<xsl:param name="currentPage"/>
<xsl:template match="/">
<xsl:value-of select="$currentPage/@nodeName"/>
</xsl:template>
</InlineXslt>
</XsltResult:XsltResult>
The above example doesn't include the full xslt file, however you can specify it if you wish.
BUGS & ISSUES
Please raise any issues on the forum below. All feedback is welcome and appreciated.
The source code is now available below.