Пример. Задание директивы ELEMENTXSINIL
При указании директивы ELEMENT для извлечения XML с использованием элемента, если столбец имеет значение NULL, соответствующий элемент не будет сформирован при режиме EXPLICIT. Можно указать директиву ELEMENTXSINIL для того, чтобы запросить формирование элементов со значениями NULL, где атрибут xsi:nil установлен в значение TRUE.
Следующий запрос создает XML, включающий адрес работника. Для столбцов AddressLine2 и City в именах столбцов указана директива ELEMENTXSINIL. Это позволяет формировать элемент для значений NULL в столбцах AddressLine2 и City набора строк.
SELECT 1 as Tag,
NULL as Parent,
EmployeeID as [Employee!1!EmpID],
E.AddressID as [Employee!1!AddressID],
NULL as [Address!2!AddressID],
NULL as [Address!2!AddressLine1!ELEMENT],
NULL as [Address!2!AddressLine2!ELEMENTXSINIL],
NULL as [Address!2!City!ELEMENTXSINIL]
FROM HumanResources.EmployeeAddress E, Person.Address A
WHERE E.ContactID = A.ContactID
UNION ALL
SELECT 2 as Tag,
1 as Parent,
EmployeeID,
E.AddressID,
A.AddressID,
AddressLine1,
AddressLine2,
City
FROM HumanResources.EmployeeAddress E, Person.Address A
WHERE E.AddressID = A.AddressID
ORDER BY [Employee!1!EmpID],[Address!2!AddressID]
FOR XML EXPLICIT
Промежуточный результат:
<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
EmpID="1" AddressID="61">
<Address AddressID="61">
<AddressLine1>7726 Driftwood Drive</AddressLine1>
<AddressLine2 xsi:nil="true" />
<City>Monroe</City>
</Address>
</Employee>
...