por Jerônimo Jardel Vogt

Vimos nos artigos anteriores o uso da cláusula de consulta FOR XML e os diferentes modos RAW, AUTO e EXPLICIT, suportada pelo SQL Server 2005 e usada para retornar dados do banco de dados em formato XML. Este artigo descreve o uso do modo PATH.

O que é o modo de consulta PATH

O modo PATH faz uso de uma sintaxe chamada XPath, que possibilita a construção de documentos XML customizados, através do mapeamento de colunas relacionais para nodos XML, como atributos, elementos, subelementos e nodos texto. Isto possibilita a geração de fragmentos XML complexos sem a complexidade de um modo de consulta EXPLICIT.

Considere os seguintes recursos da sintaxe XPath:

F    Os nodos XML em uma árvore são expressos como paths, separados por barra (/).

F    Atributos são representados com um prefixo de arroba (@).

F    Paths relativos podem ser representados através do uso de um simples ponto (.) para representar o nodo atual e dois pontos (..) para representar o pai do nodo atual.

O exemplo abaixo mostra como você pode usar o modo de consulta PATH para retornar um fragmento XML contendo uma lista de empregados.

 

SELECT EmployeeID "@EmpID",

       FirstName "EmpName/First",

       LastName "EmpName/Last"

  FROM Person.Contact

       INNER JOIN HumanResources.Employee

          ON Person.Contact.ContactID = Employee.ContactID

   FOR XML PATH

 

Esta consulta produz um fragmento XML no seguinte formato:


12-12pic01.JPG
 

Observe que a coluna EmployeeID é mapeada para o atributo EmpID com um prefixo de arroba (@), e as colunas FirstName e LastName são mapeadas para subelementos do elemento pai EmpName com um marcador de barra (/).

O próximo exemplo mostra como você pode usar o argumento opcional ElementName na consulta com PATH para modificar o nome do elemento de linha padrão.

 

SELECT EmployeeID "@EmpID",

       FirstName "EmpName/First",

       LastName "EmpName/Last"

  FROM Person.Contact

       INNER JOIN HumanResources.Employee

          ON Person.Contact.ContactID = Employee.ContactID

   FOR XML PATH('Employee')

 

O resultado é um fragmento XML como mostrado no exemplo abaixo.


12-12pic02.JPG
Com esse artigo, terminamos nossa exploração sobre a construção de documentos XML usando a cláusula FOR XML. Mais informações sobre XML em geral, procure por “Understanding XML” no site MSDN. E para mais informações sobre a cláusula FOR XML, veja o tópico “Constructing XML Using FOR XML” no SQL Server Books Online. Um grande abraço e até a próxima.