gpt4 book ai didi

asp.net - 使用 xml 类型在 SQL Server 2005 中存储 XSLT?

转载 作者:行者123 更新时间:2023-12-04 08:18:36 25 4
gpt4 key购买 nike

我的 ASP.NET Web 应用程序中有很多 XSL 文件。很多。我使用这种通用转换方法生成了一堆 AJAX HTML 响应:

public void Transform(XmlDocument xml, string xslPath) 
{
...
XslTransform myXslTrans = new XslTransform();
myXslTrans.Load(xslPath);
myXslTrans.Transform(xml,null, HttpContext.Current.Response.Output);
}

我想使用 xml 类型的列将 XSL 定义移动到 SQL Server 中。
我会将整个 XSL 文件存储在 SQL 中的一行中,并且每个 XSL 都是独立的(没有导入)。我会将 SQL 中的 XSL 定义读出到我的 XslTransform 对象中。

像这样的东西:
public void Transform(XmlDocument xml, string xslKey) 
{
...

SqlCommand cmd = new SqlCommand("GetXslDefinition");
cmd.AddParameter("@xslKey", SqlDbType.VarChar).Value = xslKey;
// where the result set has a single column of XSL: "<xslt:stylesheet>..."
...

SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read()) {
SqlXml xsl = dr.GetSqlXml(0);
XslTransform myXslTrans = new XslTransform();
myXslTrans.Load(xsl.CreateReader());
myXslTrans.Transform(xml,null, HttpContext.Current.Response.Output);
}
}

这似乎是一种简单的方法:
  • 为每个 XSL 添加元数据,如 lastUsed、useCount 等。
  • 批量更新/搜索功能
  • 防止大量磁盘访问
  • 避免引用相对路径和组织文件
  • 允许在不重新部署的情况下更改 XSL(我什至可以编写一个管理页面来选择/更新数据库中的 XSL)

  • 有没有人试过这个?有什么注意事项吗?

    编辑

    响应者列出的警告:
  • 不保证磁盘访问会减少
  • 这将破坏 xsl:includes
  • 最佳答案

    我能看到的两个大问题是:

  • 我们使用很多包含来确保我们只做一次,将 XSLT 存储在数据库中会阻止我们这样做。
  • 它使更新 XSL 变得更加有趣——我们很高兴将新的 .xsl 文件转储到已部署的站点中,而无需对站点进行全面更新。就此而言,我们有一些代码可以在文件夹中查找特定于客户端的 xsl,这些代码可以返回到根目录中的公共(public)代码(模板) - 所以我根本不确定重新部署的东西,但这在很大程度上取决于特定的用例,你的肯定和我们的不同。

  • 在磁盘访问方面,嗯......数据库仍然必须访问磁盘以提取数据,如果您正在谈论缓存,那么数据库不是启用缓存的要求。

    必须就更新/搜索选项达成一致 - 您可以使用 Powershell 做一些事情,但这需要在服务器上运行,这并不总是一个好主意。

    从技术上讲,我看不出有什么理由不这样做(除了上面提到的愿望之外),但实际上,无论哪种方式,它似乎都与良好的论点相当平衡。

    关于asp.net - 使用 xml 类型在 SQL Server 2005 中存储 XSLT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848702/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com