D. 指定 xml 命令
除了不对包含数据进行实体编码外("<"字符仍是"<"),xml 命令与 element 命令相似。例如,
如果 Customers 表中有一位客户联系人的姓名是 Mar<ia Andears,则下面的查询不对包含数据进
行实体编码,并将生成无效的 XML 文档。
-- Update a customer record. UPDATE Customers SET ContactName='Mar<ia Anders' WHERE ContactName='Maria Anders' GO
下面的查询返回客户 ID 和联系人姓名信息。
编写生成通用表的查询的过程和对通用表行集进行处理以生成所得到的 XML 文档的过程,与在示例
A 或示例 B 中描述的过程相似。
SELECT 1 as Tag, NULL as Parent, Customers.CustomerID as [Customer!1!CustomerID], Customers.ContactName as [Customer!1!ContactName!xml] FROM Customers ORDER BY [Customer!1!CustomerID] FOR XML EXPLICIT GO -- Set customer record back to the original. UPDATE Customers SET ContactName='Maria Anders' WHERE ContactName='Mar<ia Anders' GO
下面显示部分结果。因为在查询中指定了该命令,所以指定的特性名是包含元素的名称。
<Customer CustomerID="ALFKI"> <ContactName>Mar<ia Anders</ContactName> </Customer> <Customer CustomerID="ANATR"> <ContactName>Ana Trujillo</ContactName> </Customer>
E. 指定隐藏命令
下例说明 hide 命令的使用。当希望查询返回一个特性以便对该查询所返回的通用表中的行进行排序,
但是不希望该特性出现在最终所得到的 XML 文档中时,该命令很有用。
假定希望生成下面的层次结构,在该结构中 <Customer> 元素按 CustomerID 进行排序,并且在
每个 <Customer> 元素中,<Order> 元素按 OrderID 进行排序。注意 OrderID 特性不出现在所得
到的 XML 文档中:
<Customer CustomerID="ALFKI"> <Order OrderDate="1997-08-25T00:00:00" /> <Order OrderDate="1997-10-03T00:00:00" /> <Order OrderDate="1997-10-13T00:00:00" /> </Customer>
在这种情况下,为排序而检索 OrderID,但是在为该特性指定列名时指定 hide 命令。结果,OrderID
特性不显示为所得到的 XML 文档的一部分。
编写生成通用表的查询的过程和对通用表行集进行处理以生成所得到的 XML 文档的过程,与在示例 A
或示例 B 中描述的过程相似。
以下是查询语句:
SELECT 1 as Tag, NULL as Parent, Customers.CustomerID as [Customer!1!CustomerID], NULL as [Order!2!OrderID!hide], NULL as [Order!2!OrderDate] FROM Customers UNION ALL SELECT 2, 上一篇:MSSQL 使用 EXPLICIT 模式一 下一篇:没有了 |