Anasayfa / Yazılım / SQL / FOR XML PATH Kullanımı

FOR XML PATH Kullanımı

Tablo şeklinde oluşturulmuş verilerden karmaşık XML belgeleri oluşturulmak isteniyorsa en iyi kullanılacak araç FOR XML PATH’tir. Çünkü PATH modu XPATH standardının avantajlarını almaktadır. XPATH, XML hiyerarşileri geliştirmek için kullanılan bir W3C standardıdır. XPATH ayrıca XQuery ve XPointer gibi diğer kullanışlı araçları da içermektedir.

Burada kısaca W3C nedir açıklayayım. W3c veya diğer adı ile World Wide Web Consortium (www.w3.org), bir gruptur. Bu grup kimisi ücretli kimisi gönüllü olarak hizmet eden ve internet standartlarını tanımlayan profesyonellerden oluşmaktadır. Standartların tek bir merkezden geliştirilmesi ve belirlenmesi tabi bu aşamada çok önemli, aksi halde istenmeyen durumlar ile karşılaşılabilirdi. İşte XPATH’de bu grup tarafından XML belgeleri oluşturabilmek için geliştirilmiş bir standarttır.

Şimdi PATH kullanımına basit bir örnek verelim. Bunun için AdventureWorks2012 veri tabanı üzerinde çalışıyorum. Production.Product tablosu üzerinde SELECT deyimini kullanarak aşağıdaki gibi kodlarımı yazıyorum.

SELECT p.FirstName,
p.LastName,
s.Bonus,
s.SalesYTD
FROM Person.Person p
JOIN Sales.SalesPerson s
ON p.BusinessEntityID = s.BusinessEntityID
FOR XML PATH

Bu sorgumu çalıştırdıktan sonra, Results alanında link şeklinde XML dokümanım oluşur, ilgili linke tıkladığımda XML dokümanımı elde etmiş olurum. Aşağıdaki gibi bir veri elde ediyorum. Hepsini yazmıyorum..


  Stephen
  Jiang
  0.0000
  559697.5639


  Michael
  Blythe
  4100.0000
  3763178.1787


  Linda
  Mitchell
  2000.0000
  4251368.5497

...
...
...

Herhangi bir değişiklik olmadan XML PATH ile basit bir şekilde XML dokümanını elde ettik. Burada dikkat edileceği üzere element odaklı bir XML dokümanı mevcut. Her bir satır için bir element üretildi. Tabi daha karmaşık XML dokümanları da elde edebilirsiniz. Bunun içinde aşağıdaki örneği inceleyelim. Burada da attribute odaklı bir XML dokümanı oluşturacağız.

SELECT p.FirstName "@FirstName",
p.LastName "@LastName",
s.Bonus "Sales/Bonus",
s.SalesYTD "Sales/YTD"
FROM Person.Person p
JOIN Sales.SalesPerson s
ON p.BusinessEntityID = s.BusinessEntityID
FOR XML PATH

Bu sorgumu çalıştırdıktan sonra, Results alanında link şeklinde XML dokümanım oluşur, ilgili linke tıkladığımda XML dokümanımı elde etmiş olurum. Aşağıdaki gibi bir veri elde ediyorum. Hepsini yazmıyorum..


  
    0.0000
    559697.5639
  


  
    4100.0000
    3763178.1787
  


  
    2000.0000
    4251368.5497
  

...
...
...

Bu sorgum aslında WITH deyimi ile birlikte OPENXML ile yapmış olduğumuz sorgulara oldukça benzemektedir.

Şimdi sorgum sonucu elde etmiş olduğum XML dokümanı üzerinde satır adları row olarak listelenmiş durumda. Ben bunları istediğim şekilde değiştirebilirim. Örneğin bunu ürün şeklinde yazacak bir sorgu oluşturalım.

SELECT ProductID "@ProductID",
Name "Product/ProductName",
Color "Product/Color"
FROM Production.Product
FOR XML PATH ('Ürün')

Bu sorgumu çalıştırdıktan sonra, Results alanında link şeklinde XML dokümanım oluşur, ilgili linke tıkladığımda XML dokümanımı elde etmiş olurum. Aşağıdaki gibi bir veri elde ediyorum. Hepsini yazmıyorum.

<Ürün ProductID="1">
  
    Adjustable Race
  

<Ürün ProductID="2">
  
    Bearing Ball
  

<Ürün ProductID="3">
  
    BB Ball Bearing
  

...
...

KArmaşık şekilde XML dokümanları oluşturabilmek için en sık tercih edilen metot PATH modudur. Ayrıca doküman üzerinde daha fazla kontrol sağlayabilmektedir, EXPLICIT modu da kontrol sağlar ancak PATH modu EXPLICIT modu gibi karışık değildir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir