XSLT extensions

Je kunt sommige functies uit de xslt rendering halen en in een bibliotheek (.dll)  bestand stoppen. Deze bibliotheek is dan door de Sitecore in de IIS geladen en telkens je een xslt rendering doet kun je ze  gebruiken.

Voordelen

Het voordeel hiervan is dat de xslt bestand minder complex eruit ziet en daardoor dus gemakkelijker te onderhouden. Bovendien kun je deze functies hergebruiken. Denk aan algemene functies die in alle Sitecore projecten wordt gebruikt maar ook binnen een project vaak voorkomende projecten.
Sommige zaken kun je helemaal niet in de xslt oplossen, bijvoorbeeld een stukje informatie uit de database halen.  Soms wil je ook niets vragen maar wel een melding doen of een trace achterlaten.

Implementatie in C#

Als je doodgewone functies wilt maken zonder initiële constructies met parameters, hoef je niets speciaal doen. Maak gewoon een public class met public methode zoals deze voorbeeld:

 

namespace XsltExtensions
{
    public class eFocus
    {
        public string GetCopyright()
        {
            return " eFocus 2008";
        }
    }
}

 

Eenmaal dat je de code hebt gecompileerd krijg je een .dll die je moet copieren op bin folder van je Sitecore project.

Configureren van web.config

Open de xslExtensions sectie en voeg de volgende toe:

<extension mode="on"
   type="XsltExtensions.eFocus, XsltExtensions"
   namespace="http://www.efocus.nl/efocus"
   singleInstance="true" />

Let op: 
bij type is het gedeelte voor de comma de namespace 
+ classname waarin je functie zit, na de comma is alleen de namespace

Gebruiken

In een sample.xslt bovenaan maak een referentie naar deze namespace zoals hierop volgt:

xmlns:eFocus="http://www.efocus.nl/efocus"

Vervolgens maak je gebruik van deze functie zoals deze:

 

<xsl:value-of select="eFocus:GetCopyright()" />

Let op dat je de namespace wel altijd uniek houd, het handigst is dat je per project een eigen namespace maakt en hier je functies inzet: dus in de webconfig en xslt file pas je de namespace aan bijvoorbeeld:

 



xmlns:te="http://www.sitecore.net/te"
exclude-result-prefixes="dot sc te lh">

Je functies roep je dan aan met de te prefix:

<

En in de webconfig wijst deze namespace dan weer naar de namespace van je class:

<

extension mode="on" type="Tendris.Extension, Tendris" namespace="http://www.sitecore.net/te" singleInstance="true">xsl:value-of select="te:GetTopDate()"/>

 

Houd dus in dat je een class hebt: Extensions met als namespace: Tendris en als functie GetTopDate().

{{opmerking.Naam}}:

{{opmerking.OpmerkingText}}

            

Saving your comment....

Naam is verplicht!
Email is verplicht!
Opmerking is verplicht!