Przykład: Trwa pobieranie informacji pracowników
W tym przykładzie pobiera identyfikator pracownika i nazwiska pracowników, dla każdego pracownika.W bazie danych AdventureWorks the employeeID można uzyskać z tabela pracowników.Nazwiska pracowników można uzyskać z tabela Kontakt.kolumna ContactID może służyć do łączenia tabel.
Załóżmy, że mają do XML JAWNE transformacja do generowania XML, jak pokazano w poniższym:
<Employee EmpID="1" >
<Name FName="Guy" LName="Gilbert" />
</Employee>
...
Ze względu na to, że dostępne są dwa poziomy w hierarchii, czy zapisać dwie kwerendy SELECT i zastosować UNION ALL.Jest to pierwszy kwerendy, która pobiera wartości <Employee> element i jego atrybuty. Kwerendy przypisuje 1 jako Tag wartość <Employee> elementu i wartość NULL jako Nadrzędny, ponieważ jest to element najwyższego poziom.
SELECT 1 as Tag,
NULL as Parent,
EmployeeID as [Employee!1!EmpID],
NULL as [Name!2!FName],
NULL as [Name!2!LName]
FROM HumanResources.Employee E, Person.Contact C
WHERE E.ContactID = C.ContactID
Jest to drugą kwerendę.Pobiera ona wartości <Name> element. Przypisuje 2 jako Tag wartość elementu <Name> i 1 jako Nadrzędny <Employee> jako nadrzędne w stosunku do identyfikowania wartość znacznika.
SELECT 2 as Tag,
1 as Parent,
EmployeeID,
FirstName,
LastName
FROM HumanResources.Employee E, Person.Contact C
WHERE E.ContactID = C.ContactID
Należy połączyć te kwerendy z UNION ALL, stosuje się do XML jawnych i określić wymagane klauzula ORDER BY.Zestaw wierszy najpierw według IDPracownika, a następnie według nazwy należy posortować tak, aby jako pierwsze występują wartości NULL w nazwie.Wykonując następującą kwerendę bez klauzula FOR XML, można wyświetlić tabela uniwersalnej generowane.
Jest to ostateczne kwerendy:
SELECT 1 as Tag,
NULL as Parent,
EmployeeID as [Employee!1!EmpID],
NULL as [Name!2!FName],
NULL as [Name!2!LName]
FROM HumanResources.Employee E, Person.Contact C
WHERE E.ContactID = C.ContactID
UNION ALL
SELECT 2 as Tag,
1 as Parent,
EmployeeID,
FirstName,
LastName
FROM HumanResources.Employee E, Person.Contact C
WHERE E.ContactID = C.ContactID
ORDER BY [Employee!1!EmpID],[Name!2!FName]
FOR XML EXPLICIT
Jest to wynik częściowy:
<Employee EmpID="1">
<Name FName="Guy" LName="Gilbert" />
</Employee>
<Employee EmpID="2">
<Name FName="Kevin" LName="Brown" />
</Employee>
...
SELECT określa nazwy kolumn w wynikowym zestawie zestaw wierszy.Nazwy te tworzą dwa kolumna grup.Grupa, która ma Tag wartość 1 kolumna Nazwa identyfikuje pracownika, jak element i EmpID jako atrybut. Inna grupa kolumna ma numer seryjny wartości 2 w kolumnie i identyfikuje <Name> jako element i FName i LName z atrybutami.
W poniższej tabela przedstawiono częściową zestawu zestaw wierszy wygenerowanego przez kwerendę:
Tag Parent Employee!1!EmpID Name!2!FName Name!2!LName
----------- ----------- ---------------- -------------------
1 NULL 1 NULL NULL
2 1 1 Guy Gilbert
1 NULL 2 NULL NULL
2 1 2 Kevin Brown
1 NULL 3 NULL NULL
2 1 3 Roberto Tamburello
...
Jest to, jak wiersze w tabela uniwersalne są przetwarzane do wyprodukowania wynikowy drzewo składni XML:
Określa pierwszy wiersz Tag wartość 1.Dlatego grupie kolumna, która ma Tag wartość 1 jest identyfikowany, pracownik! 1! EmpID. To kolumna identyfikuje pracownika jako nazwy elementu.An <Employee> element is then created that has EmpID attributes.Odpowiadające kolumna przypisywania wartości do tych atrybutów.
Drugi wiersz ma Tag wartość 2.Dlatego grupie kolumna, która ma Tag wartości 2 w polu Nazwa kolumna Nazwa! 2! FName Nazwa! 2! LName, jest identyfikowana.Nazwy tych kolumn zidentyfikować nazwy jako nazwy elementu.A <Name> element jest tworzony z atrybutami FName i LName. Odpowiadających sobie wartości kolumna są następnie przypisywane do tych atrybutów.Ten wiersz określa 1 jako Nadrzędny.Ten element podrzędność jest dodawany do poprzedniego <Employee> element.
Ten proces jest powtarzany dla pozostałych zestaw wierszy w zestawie zestaw wierszy.Należy zwrócić uwagę, kolejność zestaw wierszy w tabela uniwersalnej FOR XML JAWNE można przetwarzać zestaw wierszy w kolejności i generuje plik XML, który ma znaczenie.