Example: Constructing Siblings with EXPLICIT Mode

Assume that you want to construct XML that provides sales order information. In this example,

Assume that you want to construct XML that provides sales order information. In this example,

and

elements are siblings. Each Order has one

element, one

element, and one or more

elements.

XML

The following EXPLICIT mode query constructs this XML. The query specifies

values of 1 for

the

element, 2 for the

element, and 3 for the

element. Because

and

are siblings, the query specifies the same

tag value of 1 identifying the

element.

<SalesPerson>
<OrderDetail>
<OrderHeader>
<SalesPerson>
<OrderDetail>
Tag
<OrderHeader>
<SalesPerson>
<OrderDetail>
<SalesPerson>
<OrderDetail>
Parent
<OrderHeader>
<OrderHeader
SalesOrderID
=.
OrderDate
=.
CustomerID
=.
>
<SalesPerson
SalesPersonID
=.
/>
<OrderDetail
SalesOrderID
=.
LineTotal
=.
ProductID
=.
OrderQty
=.
/>
<OrderDetail
SalesOrderID
=.
LineTotal
=.
ProductID
=.
OrderQty
=./
>.
</OrderHeader>
<OrderHeader.
</
OrderHeader
>
USE
AdventureWorks2022;
GO
SELECT
1 as
Tag,
0 as
Parent
,
SalesOrderID as
[OrderHeader!1!SalesOrderID],
OrderDate as
[OrderHeader!1!OrderDate],
CustomerID as
[OrderHeader!1!CustomerID],
NULL as
[SalesPerson!2!SalesPersonID],
NULL as
[OrderDetail!3!SalesOrderID],
NULL as
[OrderDetail!3!LineTotal],
NULL as
[OrderDetail!3!ProductID],
NULL as
[OrderDetail!3!OrderQty]
FROM
Sales.SalesOrderHeader
WHERE
SalesOrderID=43659 or
SalesOrderID=43661
UNION
ALL
SELECT
2 as
Tag,
1 as
Parent
,
SalesOrderID,
NULL
,
NULL
,
SalesPersonID,