XML比较HTML给予了Web开发人员更大的编程灵活性。这种技能驱动开发组织测验把XML同自己的产品集成起来。微软便是采纳如此行动的先驱者。微软的简直一切产品中都能看到XML的身影。举个比如:微软是怎么在其SQL Server产品线中集成XML的呢?下面咱们就来看看要害的FOR XML子句。
以XML的名义获取信息
SQL Server和XML之间的集成首要一点便是依据SQL数据创立XML文件。XML文件的结构并不杂乱,用简略的脚本和ADO记载集就能够轻松发生。这个使命尽管不算费事,但开发人员却需求针对他们从服务器获取的成果调集发生不同的脚本,或许编写更为杂乱的通用脚本。SELECT 句子则由此而装备了新的FOR XML子句。
该子句的语法如下所示:
[ FOR { XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ] } ]
FOR XML子句的XML方式由三种参数值表明:RAW、AUTO或许EXPLICIT。方式决议了成果XML的方式和组成。下面咱们就更深化些地经过以下示例了解以上各个XML选项。
RAW示例
咱们履行以下的SQL句子:
SET ROWCOUNT 3SELECT Orders.OrderID, Orders.OrderDate, ProductIDFROM Orders, [Order Details]WHERE Orders.OrderID = [Order Details].OrderIDORDER BY Orders.OrderIDFOR XML RAW
履行后发生的成果如下:
<row OrderID=10248 OrderDate=1996-07-04T00:00:00 ProductID=11/>
<row OrderID=10248 OrderDate=1996-07-04T00:00:00 ProductID=42/>
<row OrderID=10248 OrderDate=1996-07-04T00:00:00 roductID=72/>
AUTO示例
咱们履行以下的SQL句子:
‘成果限制为3条记载。SET ROWCOUNT 3SELECT Orders.OrderID, Orders.OrderDate, ProductIDFROM Orders, [Order Details]WHERE Orders.OrderID = [Order Details].OrderIDORDER BY Orders.OrderIDFOR XML AUTO
发生的成果如下所示:
<Orders OrderID=10248 OrderDate=1996-07-04T00:00:00>
<Order_x0020_Details ProductID=11/>
<Order_x0020_Details ProductID=42/>
<Order_x0020_Details ProductID=72/>
</Orders>
EXPLICIT示例
Explicit方式给予查询编程人员对发生XML的彻底操控能力。但是这种操控力度却要价不菲:你得编写每一查询以便SQL句子能包含XML信息。
有关的语法很杂乱,并且超出了本文的评论规模。[ , XMLDATA ] [ , ELEMENTS ] [ , BINARY BASE64 ] 是相应的可选参数。
可选元素
示例能够让咱们对各种设置的内部作业机理有更多的了解,下面咱们就进一步研讨下FOR XML句子的可选元素XMLDATA。
假设你设置该选项,那么XML-Data schema就会包含在成果调集里。以下是SQL句子:
SET ROWCOUNT 3SELECT Orders.OrderID, Orders.OrderDate, ProductIDFROM Orders, [Order Details]WHERE Orders.OrderID = [Order Details].OrderIDORDER BY Orders.OrderIDFOR XML AUTO, XMLDATA
以上的SQL句子发生以下成果:
urn:schemas-microsoft-com:datatypes>order=many>…
ELEMENTS
ELEMENTS选项指示各数据列作为子元素而非特点回来。假设你选用AUTO方式就能够只选用该选项。
BINARY BASE64
运用该选项表明你期望选用base64编码格局表明二进制数据。
注:本文仅仅对FOR XML子句的简略阐明,这儿要提示你的是这一部分不过是XML同SQL Server集成需求留意的一点,其他方面的问题还包含IIS的OPENXML 函数和模版文件等。