2012-06-20 4 views
0

J'utilise XSLT 1.0 et C# 2.0. et je veux mettre en cache mon document chargé, de sorte que chaque fois que la page suivante est appelée, il faut utiliser le document de cache au lieu de le charger à nouveau.Comment mettre en cache un document XML dans xslt 1.0

Voici une partie de XSLT où je reçois le chemin physique de C# dans param sitespath, je sais que je peux mettre en cache ce document en utilisant C#, mais je suis cache à la recherche du document chargé dans xslt 1.0

Sample code:

<xsl:param name="sitespath"/> 
<xsl:variable name="siteInfoPath" select="document($sitespath)/sitedata/region/site/language"/> 

maintenant, je veux mettre en cache variable siteInfoPath de telle sorte que chaque fois qu'il ne se charge pas comme document, il va d'abord vérifier essayer variable mise en cache pour charger à partir du cache sinon il va charger à nouveau.

Est-ce possible?

Veuillez nous suggérer!

Merci.

Répondre

0

Je ne pense pas que vous pouvez mettre en cache un résultat de la fonction document() dans le xslt pour plusieurs transformations. La fonction document() est évaluée lors de l'exécution. Ce que vous pouvez faire cependant est de mettre en cache le document dans vos programmes C# et de le passer à la transformation en tant que paramètre externe (vous devrez probablement passer XPathNavigator, voir la documentation XsltArgumentList.AddParam ici http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx pour plus de détails).

+0

Merci Pawel, En fait, cela a déjà été, mais il ira dans notre prochaine version, mais je cherchais une solution courte afin que jusqu'à ce que ma prochaine promotion se passe. Si nous pouvons le faire au niveau xslt alors cela évitera de promouvoir –

+0

Comme je l'ai dit - la méthode document() est évaluée au moment de l'exécution. Vous pouvez utiliser une variable globale pour mettre en cache les noeuds pour une transformation mais pas pour plusieurs (et une transformation sans rapport). Vous pouvez y penser à partir de votre programme C#. Si vous définissez une variable sur 5, arrêtez le processus et réexécutez l'application, la variable ne sera pas 5, sauf si vous la définissez à nouveau. – Pawel

Questions connexes