2009-11-28 5 views
0

Mise à jour: Pour contourner ce problème, j'ai créé un simple fichierwatcher qui "toucherait" les dates modifiées de tous les fichiers parents qui référencent le fichier include. Les détails sont sur notre blog, http://offroadcode.com/blog/2010/4/28/xsltouch,-taking-the-pain-out-of-editing-included-xslt-templates/ /Mise à jour(.net) Les modifications apportées au fichier XSL enfant inclus ne sont pas prises en compte tant que le fichier XSL parent n'est pas touché?

Ok donc j'ai un fichier XSL de modèles pratiques dans un fichier un tas d'autres fichiers XSL comprennent (à l'aide) pour garder mon design agréable et sec. J'utilise .net pour exécuter les fichiers XSL par rapport à mon XML. Le problème est quand je fais une modification aux fichiers XSL de l'enfant et réexécute mes transformations (c'est-à-dire actualise le navigateur) le changement n'est pas montré, il ne sera pas jusqu'à ce que je touche ou chatouille le fichier parent.

Je pense que .net met en cache les fichiers XSL, mais comme l'enfant n'est jamais appelé directement, il n'est pas mis en cache directement, il n'est actualisé que lorsque le parent est re-mis en cache. Son plausable? Le problème est que je ne peux rien trouver à l'arrière. Est-ce que quelqu'un sait si j'ai raison et plus important encore quelqu'un sait-il comment je peux empêcher que cela se produise sur ma machine de développement au moins pour accélérer mon cycle de code/rafraîchissement?

Editer: J'utilise XSL 1 et .net 1 aussi.

+0

Pourquoi la balise '.net', si vous utilisez votre XSLT dans le navigateur? –

+0

Je ne fais pas les transformations dans le navigateur mais côté serveur en utilisant .net. les résultats de la transformation est une sortie HTML que nous envoyons le fil au navigateur. J'espère que cela pourra aider? –

Répondre

1

J'ai fini par créer un petit programme d'aide pour cela dans .net qui utilise un simple fichier sur mes dossiers de modèles et quand un fichier .xsl est enregistré il fait une regex rapide à travers tous les autres modèles à la recherche de inclure le fichier enregistré. Si c'est le cas, les dates modifiées de ce fichier sont "chatouillées", ce qui oblige à rafraîchir le cache de .net.

Cela fonctionne très bien et est agréable et transparent. SVN ne remarque pas que les fichiers chatouillés sont modifiés, ce qui est un bonus car il arrête d'énormes vérifications. J'espère ranger le code et le publier dans la nouvelle année.

Regardez cet espace :)

0

Lorsque vous <xsl:include/> ou <xsl:import/> autres fichiers XSLT les résultats de l'iclude ou de l'importation sont mis en cache jusqu'à ce que la feuille de style parent soit rechargée. Il n'y a aucun couplage entre les feuilles de style parent et enfant qui permettrait à la feuille de style enfant d'informer le parent qu'il a été mis à jour et qu'il doit être réimporté. À des fins de développement, le moyen le plus rapide de gérer cela est de redémarrer l'AppDomain dans lequel votre application est chargée. Pour une application Windows, cela signifie redémarrer l'application elle-même - pour ASP.NET, cela signifie recopier l'AppPool qui héberge votre site Internet.

+0

est-ce une chose .net cependant? Pas moyen de surcharger la mise en cache? Je réfléchis passer un temps de déjeuner créer un observateur de fichier qui pourrait toucher tous les modèles qui incluent mes fichiers enfants enregistrés, mais il semble une étape arbward à faire –

+0

Recylcing prend plus de temps que d'avoir le fichier parent ouvert, en ajoutant un espace et en enregistrant le fichier :( –

Questions connexes