Udostępnij za pośrednictwem


Columns with a Name

Określone warunki, w których zestaw wierszy kolumn, których nazwy są mapowane, wielkość liter, do wynikowego pliku XML są następujące:

  • Rozpoczyna się nazwa kolumna znak (@).

  • Nazwa kolumna nie można uruchomić z znak (@).

  • Nazwa kolumna nie można uruchomić z znak @ i zawierają znak ukośnika (/).

  • Kilka kolumn współużytkują ten sam prefiks.

  • Jedna kolumna ma inną nazwę.

Nazwa kolumna rozpoczyna się od na znak (@)

Jeżeli zaczyna się nazwa kolumna znak (@) i nie zawiera znaku kreski ułamkowej (/), atrybut <row> tworzony jest elementem, który ma odpowiednie wartości kolumna. Na przykład, poniższa kwerenda zwraca dwu-kolumna (@ PmId, nazwa) zestawu zestaw wierszy.W wynikowym pliku XML PmId dodaje się odpowiedniego elementu <row> atrybut i wartości ProductModelID przypisano do niego.

SELECT ProductModelID as "@PmId",       NameFROM Production.ProductModelWHERE ProductModelID=7FOR XML PATH go

Jest to wynikiem:

<row PmId="7">
  <Name>HL Touring Frame</Name>
</row>

Należy zauważyć, że atrybuty muszą pochodzić przed żadnych innych typów węzłów, takich jak element węzłów i węzłów tekstu, w tym samym poziomie.Następująca kwerenda będzie zwracać błąd:

SELECT Name,
       ProductModelID as "@PmId"
FROM Production.ProductModel
WHERE ProductModelID=7
FOR XML PATH 
go

Nazwa kolumna nie uruchamia się z na znak (@)

Jeśli nazwa kolumna nie zostanie uruchomiony z znak (@), nie jest jednym z testów węzła wyrażenie XPath, a nie zawiera znaku kreski ułamkowej (/), element XML, który jest podelement elementu wiersza <row> Domyślnie jest tworzony.

Następująca kwerenda określa nazwę kolumna, w wyniku.Dlatego też <result> element podrzędność zostanie dodany do <row> element.

SELECT 2+2 as result
for xml PATH

Jest to wynikiem:

<row>
  <result>4</result>
</row>

Następująca kwerenda określa nazwę kolumna, ManuWorkCenterInformation, XML, zwracane przez XQuery, określone względem kolumna instrukcji XML typu.Dlatego też <ManuWorkCenterInformation> element zostanie dodany jako element podrzędność <row> element.

SELECT 
       ProductModelID,
       Name,
       Instructions.query('declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
                /MI:root/MI:Location 
              ') as ManuWorkCenterInformation
FROM Production.ProductModel
WHERE ProductModelID=7
FOR XML PATH 
go

Oto wynik:

<row>
  <ProductModelID>7</ProductModelID>
  <Name>HL Touring Frame</Name>
  <ManuWorkCenterInformation>
    <MI:Location ...LocationID="10" ...></MI:Location>
    <MI:Location ...LocationID="20" ...></MI:Location>
     ...
  </ManuWorkCenterInformation>
</row>

Nazwa kolumna nie uruchamia się z na znak (@) i zawierają znak ukośnika (/)

Jeśli nazwa kolumna nie zostanie uruchomiony z znak (@), ale zawiera znak ukośnika (/), wskazuje nazwę kolumna, hierarchii XML.Na przykład, jeśli nazwa kolumna jest Name1/Name2/Name3.../Name"n ", każda nazwaI reprezentuje nazwę elementu, który jest zagnieżdżony w elemencie bieżącego wiersza (dla I = 1) lub jest w obszarze elementu, który ma nazwę nazwai-1.Jeśli nazwan rozpoczyna się od '@', jest mapowany atrybut namen-1 element.

Na przykład poniższa kwerenda zwraca z IDENTYFIKATORA pracownika i nazwy, która są reprezentowane jako złożonych EmpName zawierającą nazwę imię, drugie i ostatni element.

SELECT EmployeeID "@EmpID", 
       FirstName  "EmpName/First", 
       MiddleName "EmpName/Middle", 
       LastName   "EmpName/Last"
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.EmployeeID = C.ContactID
AND    E.EmployeeID=1
FOR XML PATH

Nazwy kolumn są używane jako ścieżka przy konstruowaniu XML w trybie PATH.Nazwa kolumna, która zawiera wartości IDENTYFIKATORA pracownika, rozpoczyna się od '@'.therefore, atrybut EmpID, zostanie dodany do elementu <row> .Wszystkie pozostałe kolumna zawierają znak ukośnika ('/ ') w nazwie kolumna oznacza hierarchii.Wynikowy plik XML będzie miał <EmpName> podrzędność pod <row> element, a także <EmpName> będą mieli podrzędność <First>, <Middle> i <Last> elementy podrzędność elementu.

<row EmpID="1">
  <EmpName>
    <First>Gustavo</First>
    <Last>Achong</Last>
  </EmpName>
</row>

Drugie imię pracownika ma wartość null, i domyślnie wartość null jest mapowany na Brak elementu lub atrybut.Elementy generowane dla wartości NULL, należy dyrektywa elementów można podać XSINIL pokazanych w tej kwerendy.

SELECT EmployeeID "@EmpID", 
       FirstName  "EmpName/First", 
       MiddleName "EmpName/Middle", 
       LastName   "EmpName/Last"
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.EmployeeID = C.ContactID
AND    E.EmployeeID=1
FOR XML PATH, ELEMENTS XSINIL

Jest to wynikiem:

<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      EmpID="1">
  <EmpName>
    <First>Gustavo</First>
    <Middle xsi:nil="true" />
    <Last>Achong</Last>
  </EmpName>
</row>

Domyślnie tryb ścieżka generuje zorientowane na element XML.Dlatego określanie dyrektywa elementów w kwerendzie tryb ścieżka nie ma znaczenia.Niemniej jednak jak pokazano w poprzednim przykładzie, dyrektywa elementów jest użyteczne z XSINIL do generowania elementy o wartości null.

Oprócz identyfikator i nazwę poniższa kwerenda pobiera adres pracownika.Według ścieżka w nazwach kolumn dla kolumn adres <Address> element podrzędność zostanie dodany do <row> element i szczegóły dotyczące adresu są dodawane jako obiekty podrzędność elementu <Address> element.

SELECT EmployeeID   "@EmpID", 
       FirstName    "EmpName/First", 
       MiddleName   "EmpName/Middle", 
       LastName     "EmpName/Last",
       AddressLine1 "Address/AddrLine1",
       AddressLine2 "Address/AddrLIne2",
       City         "Address/City"
FROM   HumanResources.Employee E, Person.Contact C, Person.Address A
WHERE  E.EmployeeID = C.ContactID
AND    E.AddressID = A.AddressID
AND    E.EmployeeID=1
FOR XML PATH

Jest to wynikiem:

<row EmpID="1">
  <EmpName>
    <First>Gustavo</First>
    <Last>Achong</Last>
  </EmpName>
  <Address>
    <AddrLine1>7726 Driftwood Drive</AddrLine1>
    <City>Monroe</City>
  </Address>
</row>

Ten sam prefiks ścieżka udziału kilku kolumn

Jeśli kilka kolejnych kolumn mają ten sam prefiks ścieżka, są pogrupowane pod tą samą nazwą.Jeśli inny obszar nazw prefiksy są używane, nawet wtedy, gdy są one powiązane z tym samym obszarem nazw, ścieżka będą traktowane jako różne.W poprzedniej kwerendy kolumn Imię, MiddleName i nazwisko udostępniać te same prefix.Therefore EmpName, są one dodawane jako obiekty podrzędne <EmpName> element. przypadek także przypadek, gdy była tworzona <Address> element w poprzednim przykładzie.

Jedna kolumna ma inną nazwę

Jeśli pod inną nazwą kolumna pojawi się między nimi, spowoduje to przerwanie grupowanie, jak pokazano w następującej kwerendzie zmodyfikowany.Kwerendy powoduje przerwanie grupowanie imię, MiddleName i nazwisko, jak określono w poprzedniej kwerendy, dodając kolumny adres w zakresie od kolumn Imię i MiddleName.

SELECT EmployeeID "@EmpID", 
       FirstName "EmpName/First", 
       AddressLine1 "Address/AddrLine1",
       AddressLine2 "Address/AddrLIne2",
       City "Address/City",
       MiddleName "EmpName/Middle", 
       LastName "EmpName/Last"
FROM   HumanResources.EmployeeAddress E, Person.Contact C, Person.Address A
WHERE  E.EmployeeID = C.ContactID
AND    E.AddressID = A.AddressID
AND    E.EmployeeID=1
FOR XML PATH

W wyniku kwerendy powoduje utworzenie dwóch <EmpName> elementy. Pierwszy <EmpName> element ma <FirstName> element podrzędność, a drugi <EmpName> element ma <MiddleName> i <LastName> elementy podrzędność elementu.

Jest to wynikiem:

<row EmpID="1">
  <EmpName>
    <First>Gustavo</First>
  </EmpName>
  <Address>
    <AddrLine1>7726 Driftwood Drive</AddrLine1>
    <City>Monroe</City>
  </Address>
  <EmpName>
    <Last>Achong</Last>
  </EmpName>
</row>

See Also

Concepts