Przykład: Trwa pobieranie informacji o pracowniku
W tym przykładzie pobiera identyfikator pracownika i nazwisko pracownika, dla każdego pracownika.W AdventureWorks2008R2 bazy danych, employeeID można otrzymać od BusinessEntityID kolumna w Employee tabela.Nazwiska pracowników, można otrzymać od Person tabela. BusinessEntityID kolumna można używać do łączyć tabele.
Przyjmijmy, ma dla XML JAWNE transformacja do generowania XML, jak pokazano poniżej:
<Employee EmpID="1" >
<Name FName="Ken" LName="Sánchez" />
</Employee>
...
Ponieważ istnieją dwa poziomy w hierarchii, byłyby dwa zapisu SELECT kwerendy i stosowanie wszystkich Unii.Jest to pierwszy kwerendy, która pobiera wartości dla <Employee> element i jego atrybuty.Program query przypisuje 1 jako Tag wartość dla <Employee> element i NULL jako Parent, ponieważ jest elementem najwyższego poziom.
SELECT 1 as Tag,
NULL as Parent,
E.BusinessEntityID AS [Employee!1!EmpID],
NULL as [Name!2!FName],
NULL as [Name!2!LName]
FROM HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON E.BusinessEntityID = P.BusinessEntityID;
Jest drugą kwerendę.Pobiera wartości dla <Name> elementu.Przypisuje 2 jako Tag wartość dla <Name> element i 1 jako Parent identyfikacji wartość znacznika <Employee> jako nadrzędny.
SELECT 2 as Tag,
1 as Parent,
E.BusinessEntityID,
FirstName,
LastName
FROM HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON E.BusinessEntityID = P.BusinessEntityID;
Łączenie tych kwerend z UNION ALl zastosowanie FOR XML EXPLICITi określ wymagane ORDER BY klauzula.Należy najpierw posortować zestawu zestaw wierszy przez BusinessEntityID a następnie według nazwy tak, aby wartości NULL w nazwie pierwszej.Za wykonanie następującej kwerendy bez klauzula dla XML, można wyświetlić universal tabela wygenerowane.
To jest kwerenda końcowego:
SELECT 1 as Tag,
NULL as Parent,
E.BusinessEntityID as [Employee!1!EmpID],
NULL as [Name!2!FName],
NULL as [Name!2!LName]
FROM HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON E.BusinessEntityID = P.BusinessEntityID
UNION ALL
SELECT 2 as Tag,
1 as Parent,
E.BusinessEntityID,
FirstName,
LastName
FROM HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON E.BusinessEntityID = P.BusinessEntityID
ORDER BY [Employee!1!EmpID],[Name!2!FName]
FOR XML EXPLICIT;
Jest to wynik częściowy:
<Employee EmpID="1">
<Name FName="Ken" LName="Sánchez" />
</Employee>
<Employee EmpID="2">
<Name FName="Terri" LName="Duffy" />
</Employee>
...
Pierwszy SELECT Określa nazwy kolumn w wynikowym zestawie zestaw wierszy.Nazwy te tworzą dwa kolumna grup.Grupy o Tag wartość 1 kolumna Nazwa identyfikuje Employee jako element i EmpID jako atrybut.Grupa inne kolumna ma Tag wartość 2 kolumna i identyfikuje <Name> jako element i FName i LName jako atrybuty.
W poniższej tabela przedstawiono częściową zestaw wierszy wygenerowanego przez kwerendę:
Tag Parent Employee!1!EmpID Name!2!FName Name!2!LName
--- ------ ---------------- ------------ ------------
1 NULL 1 NULL NULL
2 1 1 Ken Sánchez
1 NULL 2 NULL NULL
2 1 2 Terri Duffy
1 NULL 3 NULL NULL
2 1 3 Roberto Tamburello
...
Jest to, jak wiersze w tabela uniwersalnych są przetwarzane do wyprodukowania wynikowy drzewo XML:
Określa pierwszy wiersz Tag wartość 1.Dlatego kolumna grupy, który ma Tag wartość 1 jest identyfikowany Employee!1!EmpID.Ta kolumna określa Employee jako nazwę elementu. <Employee> Element jest tworzony w ma EmpID atrybuty.Odpowiednie wartości kolumna są przypisane do tych atrybutów.
Drugi wiersz ma Tag wartość 2.Dlatego grupy kolumn o Tag wartość 2 nazwy kolumna Name!2!FName, Name!2!LName, jest identyfikowana.Te kolumna zidentyfikować nazwy Name jako nazwę elementu.A <Name> utworzeniu elementu, który ma FName i LName atrybuty.Odpowiednie wartości kolumna są przypisywane do tych atrybutów.Identyfikuje ten wiersz 1 jako Parent.Ten element podrzędność jest dodawany do poprzedniego <Employee> elementu.
Ten proces jest powtarzany dla pozostałych zestaw wierszy w zestawie zestaw wierszy.Uwaga kolejność zestaw wierszy tabela universal tak dla XML JAWNE można przetwarzać zestaw wierszy w kolejności i wygenerować plik XML, który ma znaczenie.