XML’e Başlamak

XML İLE VERİ PAYLAŞMAK

Bu aydan itibaren XML uygulamaları geliştirmekle ilgili yazı dizimize başlıyoruz. Bu diziyi takip eden okuyucularımız XML ile neler yapılabileceğini öğrenmekle kalmayıp, XML’i kendi uygulamalarında kullanabilecek bilgiye sahip olacaklardır görüşündeyiz.
 

XML NE GETİRİYOR

XML yani eXtensible Markup Language veri paylaşımı için tasarlanmış ve uygulama geliştiricileri tarafından benimsenmiş bir dildir. Dünyadaki uygulama geliştiricilerinin otorite olarak kabul ettiği ve www’deki birçok standardı belirleyen World Wide Web Consortium (W3C) tarafından tasarlanmış ve halen geliştirilmeye devam etmektedir.

XML’in önemli özelliklerinden birisi veri taşıma becerisidir. XML belgelerinin dünyadaki her uygulama tarafından tanınması için geliştiriciler bu konsorsiyumun kurallarına bağlı kalmaktadırlar.

Bu dilin “platformdan bağımsız” şeklinde tanımlanmasının sebebi budur. Çünkü bütün uygulama geliştiriciler, W3C’nin kurallarını kabul etmiş ve XML belgelerini tanımak için aynı yöntemleri kullanmışlardır. Zaten bir dilin platformdan bağımsız olması, kendisiyle doğrudan ilgili bir şey olmayıp, platformların geliştiricileri tarafından kabul görmüş olmasıyla alakalıdır.

XML’in en önemli özelliği budur. Kabul görmüş bir veri paylaşım dili olması.

RÜZGARIN ESTİĞİ YÖN

Hemen bütün büyük geliştirici kuruluşlar, XML destekli uygulamalarını çoktan geliştirmiş bulunuyor. Peki XML’in uzun süreden beri ve bu kadar fazla ön planda olmasının sebebi nedir? XML çok önceden var olmasına rağmen, özellikle son zamanlarda onun adından bu kadar söz ettiren şey ne? Neden başka bir dil değil de XML?

Bu dilin doğuşu aslında bazı ihtiyaçların belirgin şekilde farkedilmesinin devamında oluyor. Veri aktarmak HTML ile yani herhangi bir web sayfası ile yapılabiliyordu. Örneğin borsa verilerini dağıtan bir sayfadan bilgi almak mümkündü.

Internet’te her türlü bilgiye ulaşmak mümkün ama elde edilen bilgileri tanımlamak, analiz etmek, yeniden biçimlemek mümkün değildi. Bunları sağlamak için geliştirilen dile XML adı verildi. Genişletilebilir İşaretleme Dili. Ve bu dil istenildiği kadar genişletilebilen ve tekrar biçimlendirilebilen bir yapıya sahipti. XML’de veri ile biçim HTML’dekinin aksine birbirinden ayrıdır. Tek bir veri dosyasından, farklı şablon dosyaları kullanılarak birçok biçimlendirilmiş sayfa üretmek mümkün olabiliyor ve veri dosyası biçimlendirilmemiş halini her zaman koruyor.

W3C konsorsiyumu XML’i, HTML’yi türettiği SGML (Standart Generalized Markup Language) dilinden türetti. HTML (Hypertext Markup Language) dili sayfa gösterimi üzerinde yetenekli fakat veri aktarma işlemleri için uygun değildir. HTML’nin görevi, hazır gelen verileri ya da başka şeyleri gösterime sunmaktır.

HTML’de bütün tanımlamalar ve adlar bellidir ve bunların dışına çıkılmaması gerekir. XML’de verinin kendisi önplandadır. XML dosyalarında, biçimlenmemiş hazır veriler bulunur ve etiket adlarını belirlerken, belli temel kurallara bağlı kalmak koşuluyla herhangi bir tanımlayıcı isim kullanmak mümkündür. XML’den türetilen sektörel alt diller de HTML gibi standart etiket adlarına sahip olacaklar ama işleyiş olarak XML temel alınacak.

Bunlara karşılık XML, HTML’nin yerini almak için üretilmedi. Aksine HTML ile beraber çalışıp daha yetenekli veri sayfaları oluşturulabiliyor. XML’in kullanım alanları Internet uygulamaları ile sınırlı olmayıp, geliştirilme amacı, birbiriyle bilgi alışverişi yapması istenen uygulamalar için ortak bir dil sunmaktır.

Gelinen bu aşamadan sonra XML kullanarak, dünyadaki bütün uygulamaların birbirleriyle bilgi alışverişi yapması mümkün gözüküyor. Zira XML verileri, kendi kendilerini tanımlıyorlar. Bu açıdan hem bilgisayarlar, hem de insanlar XML dosyalarını okuyup anlayabilirler.

Artık arama motorları web sitelerini tararken gerekli bilgilere daha kolay ulaşabilecekler. Her web sitesinde XML biçimindeki dosyalarda site hakkında bilgiler yer alabilir. Arama motorları da siteyi araştırırken öncelikle bu XML dosyasından yararlanabilir. Bu yöntem, hem hız, hem mantıklı arama sonuçları sağlayacaktır.

XML standart bir dil olarak kabul edildiğine göre, XML uyumlu bir uygulamaya veri gönderirken, uygulamanın veri alma biçimini öğrenmeye gerek kalmayacak. Birbirinden bağımsız, tamamen ayrı sistemler XML aracılığıyla haberleşecekler.

Peki bu haberleşme nasıl olacak? HTML ile bu tür şeyler başarılabilir olsa da global bir anlaşma standardı var olmadıktan sonra verisini dağıtmak isteyen herkesin ayrı bir dili olacaktı. Her Web sunucusunun ayrı kodlar dağıtmaması için HTML’nin standardlarını belirleyen W3C, verisini global düzeyde dağıtmak isteyenler için de XML dilinin kurallarını belirledi.

W3C konsorsiyumu bundan sonra sektörel veri paylaşım dilleri üzerinde çalışıyor. W3C.ORG sitesinde MathML ve diğer yeni diller hakkında bilgi almak mümkün. Tabii XML hakkındaki tüm spesifikasyonları da orada bulabilirsiniz.

.NET VE XML

Yeni gelişen teknolojiler alanında en ön sıralarda olanlardan biri de Microsoft’un .NET teknolojisi. Herkes az veya çok .NET hakkında bir bilgiye sahip. Ve XML’in .NET’te nasıl bir yerinin olduğu da çoğu kişi tarafından biliniyordur. Sadece Microsoft değil, diğer yazılım firmaları da ürünlerini XML ile tam uyumlulaştırma sürecindeler.

Özellikle elektronik ticaretçilerin, yeniden biçimlendirilebilmesine olanak sağlayan bir veri paylaşma diline ihtiyaçları vardı. Bunu karşılaması amaçlanan XML dilini, Microsoft’un yeni .NET mimarisinde desteklemesi gerektiği muhakkak. Çünkü akıllı mobil cihazlar için uygulama desteği de sağlayan ve XML ile uyumlu .NET yazılım paketi çok geniş perspektifte, geliştiricilere hitap ediyor.

Microsoft XML ile son derece uyumlu ürünler çıkardı. XML geliştirme araçlarından, verilerini XML biçiminde dışarıya veren programlara kadar, bir çok uygulamada XML yer edinmiş bulunuyor. Hatta Microsoft’un yayınladığı bazı belgelerde .NET mimarisinin en çok destek verdiği şeyin XML dili ve XML Web Servisleri olduğu yazıyor.

Microsoft’un geliştirdiği XML web servisleri yetenekli web uygulamarı geliştirmek için güçlü araçlar içeriyor. MSXML paketi XML servisleri sağlamak için birkaç yıldır geliştiriliyor. Bunun dışında Visual Studio.NET ise, XML uygulamaları ve servisleri geliştirmek gerçekten güçlü bir ürün.

BUNDAN SONRA NE OLACAK

Her sektör için ortak dil oluşturma çalışmaları devam ediyor. Bankacılık, sağlık, sigorta, medya, meteoroloji, trafik, astronomi, din ve akla gelebilecek bir çok sektör ve grup için XML tabanlı alt diller oluşturuluyor. Kurumlar birbirleri ile bilgi alışverişi yaparken, oluşturulan bu alt dillerden kendileri ile ilgili olanını alıp serbestçe kullanabilecekler.

E-Devlet tartışmalarının yapıldığı şu günlerde, veri paylaşım teknolojilerinden öncelikle devlet olarak nasıl faydalanabileceğimizi araştırmamız gerekiyor. Hastaneye giden bir vatandaşımızın tedavisi yapılmadan önce nüfus merkezinde tutulan veritabanından yapılan sorgulamaların sonucu, istemci program tarafından kolaylıkla anlaşılabilir ve alınan veriler başka yerlere dağıtıldığında yeniden sorgulanabilir ve biçimlendirilebilir olacaktır.

Internet bankamızda iken bağlı bulunduğumuz belediyenin veritabanını sorgulayarak çevre temizlik vergimizi kolaylıkla öder duruma gelebiliriz.

Kişisel hesap programımızda tek bir ekranda bütün borçlarımızı Internet’ten yüklememiz mümkün olabilir. Programımız su, elektrik, doğalgaz borcunu öğrenir, bankada ne kadar paramız olduğuna bakar, borsadaki pörtföyümüzün toplam değerini bulup kişisel hesap tablolarımızı veya mal varlıklarımızı çıkarabilir. Bu tür bilgi ağlarını tasarlamak, veri aktarımında ortak bir dilde birleşildiği için eskisine göre daha kolay olabilir.

Bundan sonra sırada ne var? Aslında birçok kişi kendi yolunu çizmiş ve herkes rüzgarın estiği yönde daha önde olmaya çalışıyor. XML veya bir başkası. Sektörler için önemli olan şey XML’in kendisi değil, ortak bir dil olarak kabul görmesidir.

İlk kez böylesine geniş kabul gören bir platformda herkes kendine bir yer bulmaya çalışıyor. Görünen o ki, veri paylaşımı çok değerli ve getirisi çok fazla olacak.

GELİŞTİRİCİLER NASIL YAPMALI

Buraya kadar geliştiricilerin XML’i ne ile ve nasıl kullanabileceklerinden bahsetmedik. XML için iki türlü kullanım mevcut. İstemci tarafında ya da sunucu tarafında XML dosyalarını işlemek mümkün olabiliyor.

Sunucu tarafında işlenen XML verileri HTML biçiminde iletilebilirler. Bu, sunucu bilgisayarlar için yük getiren ve genellikle önerilmeyen bir yöntemdir. Zaten bu şekilde yeniden tanımlanabilen veri aktarmak mümkün olmaz ve bu işlem veriyi XML olarak yayınlamamak anlamına gelir.

Web gözatıcı eski bazı programlar XML’i desteklemeyebilirler. Sunucu tarafında XML çalıştırmanın bir sebebi uyumsuz gözatıcılarda sorun çıkmasını önlemektir. Aslında böyle bir durum için şu anki yapılar zaten ihtiyacı karşılayabilir düzeydedir. Öyleyse XML’i sunucu tarafında biçimlemenin gerçek sebebi nedir? ASP ile kolayca yapılabilen işlemleri neden yeni bir dil ile tekrarlamak gerekebilir ki?

XML uyumlu web gözatıcılar verileri alıp biçimlendirmeyi kendileri yapabiliyorlar. XML veri dosyası ile birlikte biçim bilgilerinin bulunduğu bir başka dosya da ek olarak yüklenebiliyor. XML dosyalarının içinde, zorunlu olmasa da, kullanılacak biçimleme dosyasının yolu ve biçimleme yöntemleri yazılabiliyor. Varsa bu biçim dosyasını da beraberinde yükleyen web gözatıcı programı biçim dosyasına bakarak XML dosyasındaki verileri gösterime sunuyor. Bir veri sayfasını bu şekilde kişiselleştirmek mümkündür. Üretilen XML belgesine, ziyaretçinin kendi seçebileceği bir şablon dosyasını uygulamak çok kolaydır.

XML için standart biçimleme dili olarak XSL öneriliyor ve XSL zaten bunun için özel olarak geliştirilmiş bir başka dil. Bununla birlikte HTML’den alışık olduğumuz CSS biçim dosyalarını kullanarak XML verilerini biçimlemek mümkün. XML’i genişletmek için geliştirilmiş başka yapılar da mevcut. Yeni yapılanan ve sektörde yer almaya çalışan bir dil için ek desteklerin sağlanması önemli olsa gerek. Zira XML sektörde çok yaygın olması amaçlanan bir dil ve insanların benimsemesi için eski kalıplara desteğini sunması gerekiyor.

XML’in sunucu tarafında biçimlendirilmesinin sebeplerinden birinin, web gözatıcılardaki uyumsuzlukların olabileceğini söylemiştik. Sunucu tarafında iken istemcideki gözatıcının ne olduğunu anlayıp, XML biçimlemelerini kabul edip etmeyeceğine karar verdikten sonra, gerekli sayfaların yüklenmesi sağlanabiliyor. İstemcinin Internet Explorer’ın yeni bir sürümü olduğunu anladığımızda geçerli sayfamızın gönderilmesini sağlayabiliriz. Aksi halde XML dosyasını sunucu tarafında biçimleyip göndermek gerekebilir.

Bir web gözatıcının (web browser) XML’i desteklemesi ya da desteklememesi nasıl olur? XML’i destekleyen bir web gözatıcı, sunucu tarafından gönderilen XML dosyasını ve varsa ekteki biçim dosyasını doğru anlayıp yorumlayabiliyordur. Aksi halde sunucunun daha akıllı davranıp gözatıcının anlayabileceği, biçimlendirilmiş hazır kodlar göndermesi gerekir.

XML’E BAŞLAYIN

XML’e başlarken geliştiricilerin aklına gelebilecek bazı sorular olacaktır. XML ve yardımcı bileşenleri bir çok uygulamada faydalar sağlıyor. Örneğin XML dosyaları ayrı olabilse de ASP kullanarak ASP uzantılı ama XML biçiminde dosyalar üretilebiliyor. Bu, tüm XML dosyasının karşı tarafa gönderilmesini önlüyor.

Bir ASP dosyasında Response nesnesinin ContentType özelliğini “text/xml” olarak ayarladığınızda dosyanın uzantısı .asp olsa da içerik türü XML olacak ve web gözatıcı bu sayfayı XML biçiminde görüntüleyecek.

Aynı şey XSL dosyaları için de geçerli. Ayrıca bu şekilde XSL dosyalarına parametre göndermek de mümkün olabiliyor. XSL dosyaları kayıtlarda arama, filtreleme, sıralama ve daha bir çok işi yapabiliyor. Dışarıdan alınacak parametrelerle işlemler kolaylaşıyor.

Tek bir HTML dosyası içinde script kodu ile XML dosyası okunabiliyor ve sayfa geçişleri olmadan aynı sayfada kayıtlar arasında geçiş yapılabiliyor. Diğer bir çok uygulama için kolaylaştırıcı XML teknikleri mevcut. Ekteki kişiler dosyasını incelediğinizde XML verilerinin bu dosyanın içinde olduğunu göreceksiniz. Dosyadaki kodlar ile kayıtlar arasında ileri geri hareket edilebiliyor, kayıt ekleme, silme ve değiştirme işlemleri yapılabiliyor.

XML dosyaları ile birlikte varsa biçim dosyalarının da gönderilebileceğinden bahsetmiştik. CSS dosyaları (Cascade Style Sheets – Basamaklı Biçim Sayfaları) XML’in biçimlenmesinde kullanılabilenlerden bir tanesidir.

Önce doğru yazılmış bir XML dosyasının yapısını inceleyin.

personel.xml

<?xml version="1.0"?>
<PERSONEL>
   <KISI>
      <AD>Ali</AD>
      <BIRIM>Muhasebe</BIRIM>
   </KISI>
   <KISI>
      <AD>Hülya</AD>
      <BIRIM>İhracat</BIRIM>
   </KISI>
</PERSONEL>

Bir XML dosyasının içeriği tam olarak yukarıdaki şekilde olabilir. Bu metni XML uzantılı bir dosyaya kaydedip Internet Explorer ile açtığınızda resimdeki gibi görünür.

XML dosyalarında HTML’deki gibi ama serbestçe adlandırabileceğimiz etiketler kullanabiliyoruz. Veriler bu etiketlerin arasına yerleştiriliyor. HTML’nin aksine etiket adlarını yazarken büyük ve küçük harf uyumluluğunu sağlamak gerekiyor.

Üstteki örnek dosyanın kodunda ilk satırdaki geçerli sürüm bilgisinden sonra tanımlı PERSONEL adlı kök alanından sonra, herbiri personel kayıtlarını ifade eden KISI adlı alt öğeler bulunuyor. Bu veri kümesini aşağıdaki gibi tablolaştırdığımızda biraz daha anlaşılır olacaktır.

PERSONEL AD BIRIM
KISI Ali Muhasebe
KISI Hülya İhracat

XML ile birlikte yapısal veri tablolarından farklı veri tablolalama metotları gelişiyor. Artık kayıt kümelerinin kayıt satırlarından oluştuğunu söylemek yerine kayıt kümelerinin hem kayıt satırlarından, hem de altalta birçok kayıt kümesinden oluşabileceğini söyleyebiliyoruz.

personel2.xml

<?xml version="1.0"?>
<SUBELER>
   <ISTANBUL>
      <KISI>
         <AD>Ali</AD>
         <BIRIM>Muhasebe</BIRIM>
      </KISI>
      <KISI>
         <AD>Hülya</AD>
         <BIRIM>İhracat</BIRIM>
      </KISI>
      <KISI>
         <AD>Uğur</AD>
         <BIRIM>Teknik Servis</BIRIM>
      </KISI>
   </ISTANBUL>
   <ANKARA>
      <KISI>
         <AD>Mehtap</AD>
         <BIRIM>Muhasebe</BIRIM>
      </KISI>
      <KISI>
         <AD>Turgay</AD>
         <BIRIM>İdari</BIRIM>
      </KISI>
   </ANKARA>
</SUBELER>

Yukarıdaki örnekte gerçekte olmayan bir şirket için ISTANBUL ve ANKARA şubelerindeki 5 kişinin bilgileri görüntüleniyor.

Siz bunu SUBELER veritabanındaki ISTANBUL ve ANKARA adlı tabloların birleştirilmesi şeklinde düşünebilirsiniz. Tabii bunların daha altına doğru kayıt kümeleri uzayıp gidebilir.

XML dosyalarında Kök (Root) adı verilen etiketlerle bütün kayıt kümesinin başlangıcı ve sonu belirtilir. Bu etiket sadece bir kez kullanılır. Örnekte bu, SUBELER adlı etikettir.

Alt bloklar birden çok olabilir. Kök etiketinin altında ISTANBUL ve ANKARA adlı iki alt element ve onların altında da birkaç tane KISI elementi yer alıyor. Her bir KISI elementinin altında ise kişileri tanımlayıcı en alt elementler var.

Peki bunlardan nasıl faydalanacağız? Elimizdeki paylaşmak istediğimiz bazı verileri XML dosyalarına, uygun bir şekilde aktardık. Bundan sonra ne yapacağız? Verilerimizi XML biçimine dönüştürmek bize ne kazandırmış olacak?

XML teknolojisini kullanıyor olmak, verilerin XML dosyaları halinde tutulması gerektiği anlamına gelmiyor. Paylaşmak sözkonusu olduğunda XML biçimi kullanılacaktır sadece. Geliştiricilerin tercihlerine göre kimi zaman statik XML sayfaları kullanılacak, kimi zaman da veritabanından alınan güncel bilgiler dinamik sayfalar halinde yayınlanacak.

Dinamik sayfaları ASP ile oluşturmak için ise aşağıdaki gibi bir kod bloğu yeterlidir.

<%@ Language=VBScript %>
<% Response.ContentType = "text/xml" %>

<?xml version="1.0"?>

<%
  ‘XML verileri üretiliyor. Veritabanından alınan bilgiler response.write ile yazdırılabilir.
  response.write "<KISILER>"
  response.write "<KISI>ali</KISI>"
  response.write "<KISI>ahmet</KISI>"
  response.write "<KISI>ayse</KISI>"
  response.write "</KISILER>"
%>

XML dosyalarını oluşturmak için Notepad’i ya da herhangi bir metin editörünü kullanabilirsiniz. Microsoft’un çıkardığı XML Notepad programı bu işi kolaylaştırıyor. Bu programı CD’mizdeki dosyalar arasında bulabilirsiniz. CD’deki msxml4.msi dosyası ile diğer XML servislerini yükleyebilirsiniz.

Gerekli dosyalar ve örnek kodlar CD’mizdeki XML klasöründe mevcut. Uygulamaların çalışır halleri ise http://BilgiTeknoloji.net  sitesinde.

XML: Extensible Markup Language
Genişletilebilir İşaretleme Dili
HTML: Hypertext Markup Language
Hiper Metin İşaretleme Dili
SGML: Standart Generalized Markup Language
Standart Genel İşaretleme Dili

 
ARAÇLAR:

XML Notepad
http://msdn.microsoft.com/library/en-us/dnxml/html/xpsetup.exe
(XML belgeleri  oluşturmak ve düzenlemek için. Bu adreste yoksa Microsoft sitesinde aratmayı deneyin.)

Microsoft XML Core Services 4.0 RTM
http://download.microsoft.com/download/xml/Install/4.0/W98NT42KMeXP/EN-US/msxml4.msi
(Microsoft’un XML belgeleri ile çalışmak için ücretsiz dağıttığı güçlü bir uygulama. Bu adreste yoksa msdn.microsoft.com/xml adresinden ulaşmayı deneyin.)
 

DOSYALAR:

kisiler.htm
personel.xml
personel2.xml
haberler.xml


Serkan ŞAHİNOĞLU
(Chip Dergisi, Şubat 2002)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.