|
SQL 视图定义是只读的,并且必须通过嵌入式 XQuery 来操作;而使用带有批注的架构的 XML 视图则不是这样。而且,SQL 视图在应用 XQuery 表达式之前生成 XML 结果,而 XML 视图上的 XPath 查询在基础表上计算 SQL 查询。
添加业务逻辑
可以用多种方式将业务逻辑添加到 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);
}
上一页 [1] [2] [3] [4] 更多精彩:学习网->http://www.haohao888.com.cn 网络编程->http://www.51wlpc.com 电脑设备->http://www.xpmaster.cn
|