科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[Sql server]2005的XML最佳实施策略(21)

[Sql server]2005的XML最佳实施策略(21)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Microsoft SQL Server 2005 为 XML 数据处硖峁┝斯惴旱闹С帧ML 值可以自然地存储在 XML 数据类型列中,而后者可以根据 XML 架构集合进行类型化,或者保持非类型化。

作者:Shankar Pal 来源:microsoft 2007年9月16日

关键字: 实施策略 SQL Server SQL Server 2005 数据库

  • 评论
  • 分享微博
  • 分享邮件
 

添加业务逻辑

可以用多种方式将业务逻辑添加到 XML 数据中:

• 您可以编写行或列约束,在插入和修改 XML 数据的过程中实施特定于域的约束。

• 您可以在 XML 列上编写相应的触发器,使其当您在该列中插入或更新值时引发。该触发器可以包含特定于域的验证规则,或者填充属性表。

• 可以使用托管代码编写 SQLCLR 函数并向其传递 XML 值,并且使用由 System.Xml 命名空间提供的 XML 处理功能。这方面的一个例子是将 XSL 转换应用于 XML 数据,如下所示。您还可以将 XML 反序列化为一个或多个托管类,并且使用托管代码来操作它们。

• 您可以编写 T-SQL 存储过程和函数,激活 XML 列上的处理以满足您的业务需要。

示例:应用 XSL 转换

考虑 CLR 函数 TransformXml(),它接受一个 XML 数据类型实例和一个存储在文件中的 XSL 转换,将该转换应用于 XML 数据,并且在结果中返回转换后的 XML。用 C# 编写的主干函数如下所示:

public static SqlXml TransformXml (SqlXml XmlData, string xslPath) {
// Load XSL transformation
   XslTransform xform = new XslTransform();
   XPathDocument xslDoc = new XPathDocument (xslPath);
   xform.Load (xslDoc.CreateNavigator(),null);

   // Load XML data 
   XPathDocument xDoc = new XPathDocument (XmlData.CreateReader());
   XPathNavigator nav = xDoc.CreateNavigator ();

   // Return the transformed value
   SqlXml retSqlXml = new SqlXml (xform.Transform(nav, null));
   return (retSqlXml);
}

在注册该程序集,并且创建了对应于 TransformXml() 的用户定义 T-SQL 函数 SqlXslTransform() 之后,就可以像在下面的查询中那样从 T-SQL 中调用该函数:

SELECT SqlXslTransform (xCol, 'C:\yukon\xsltransform.xsl')

FROM T

WHERE xCol.exist('/book/title/text()[contains(.,"custom")]') =1

查询结果包含转换后的 XML 的行集。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章