【问题标题】:(.net) Changes to included child XSL file is not picked up until parent XSL file is touched?(.net) 对包含的子 XSL 文件的更改在触摸父 XSL 文件之前不会被拾取?
【发布时间】:2009-11-28 23:01:29
【问题描述】:

更新:为了解决这个问题,我创建了一个简单的文件观察器,它会“触摸”任何引用包含文件的父文件的修改日期。详情在我们的博客http://offroadcode.com/blog/2010/4/28/xsltouch,-taking-the-pain-out-of-editing-included-xslt-templates/ /更新

好的,所以我在一个文件中有一个方便模板的 XSL 文件,其中包含(使用)一堆其他 XSL 文件,以保持我的设计美观和干燥。

我正在使用 .net 针对我的 XML 运行 XSL 文件。问题是当我对子 XSL 文件进行更改并重新运行我的转换(即刷新浏览器)时,更改不会显示,直到我触摸或挠父文件时才会显示。

我认为 .net 正在缓存 XSL 文件,但由于子文件从未被直接称为未缓存文件,因此只有在重新缓存父文件时才会刷新它。听起来靠谱吗?麻烦的是我找不到任何东西来支持这种预感。

有人知道我是否正确,更重要的是有人知道我如何防止它发生在我的开发机器上,至少可以加快我的代码/刷新周期吗?

编辑:我也在使用 XSL 1 和 .net 1。

【问题讨论】:

  • 如果您在浏览器中运行 XSLT,为什么要使用 .net 标签?
  • 我不是在浏览器中进行转换,而是在服务器端使用 .net。转换的结果是 HTML 输出,我们将其通过线路发送到浏览器。希望有帮助?

标签: .net xslt


【解决方案1】:

我最终在 .net 中为此创建了一个小帮助程序,它简单地在我的模板文件夹上使用文件监视程序,当保存 .xsl 文件时,它会在所有其他模板中执行快速正则表达式,以查找任何包含保存的文件。如果是这样,那么这些文件的修改日期会得到“tickled”,这会强制刷新 .net 的缓存。

这真的很好用,而且很好而且无缝。 SVN 也不会注意到被修改的文件被修改,这是一个奖励,因为它停止了大量的签入。我希望能把代码整理好,在新的一年发布。

注意这个空间:)

【讨论】:

    【解决方案2】:

    当您 <xsl:include/><xsl:import/> 其他 XSLT 文件时,包含或导入的结果将被缓存,直到重新加载父样式表。父样式表和子样式表之间没有耦合,这将允许子样式表通知父样式表它已更新并需要重新导入。

    出于开发目的,处理此问题的最快方法是重新启动加载应用程序的 AppDomain。对于 Windows 应用程序,这意味着重新启动应用程序本身 - 对于 ASP.NET,这意味着回收托管您网站的 AppPool .

    【讨论】:

    • 这是一个 .net 的东西吗?没有办法覆盖缓存?我正在考虑花午餐时间创建一个文件观察器,它可以触摸任何包含我保存的子文件的模板,但这似乎是一个必须做的艰难步骤
    • 回收比打开父文件、添加空格和保存文件花费的时间更长:(
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2011-07-19
    • 1970-01-01
    • 2021-09-15
    • 2023-03-03
    • 2011-12-17
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多