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:yukonxsltransform.xsl')
FROM T
WHERE xCol.exist('/book/title/text()[contains(.,"custom")]') =1
查询结果包含转换后的 XML 的行集
。 SQLCLR 打开了一个全新的世界,可以使用它将 XML 数据分解到表或属性提升中,并使用 System.Xml 命名
空间中的
托管类来查询 XML 数据
。有关详细信息,请参阅 SQL Server 2005 和 Microsoft Visual Studio"Whidbey"联机图书。