XML Nedir, ne değildir?
XML bir çok açıdan tanımlamak mümkündür. Tarihsel gelişimi, yapısal mimarisi ve işlevselliği bunlardan bir kaçıdır. Bu yazımda çok pratik olarak XML in ne olduğunu ve daha da önemlisi ne olmadığını açıklamaya çalışacağım.
Ayrıca temel bir takım XML kavramlarına değineceğim.
Öncelikle XML bir markup dilidir. Ancak tek başına kullanılmayan bir markup dilidir. Atası SGML dir.
İşlevsel açıdan bakıldığında verileri metin tabanlı tanımlamamızı sağlar.
Bu anlamıyla bir veritabanı (programı değil) gibi düşünülebilir.
Verileri tanımlamamız için metin tabanlı bir ortam söz konusudur ve tanımlama belirteçleri olarakda etiketler (taglar) kullanır. Bu etiketlerle yapılan tanımlama, veriye bir kimlik kazandırır.
Metin tabanlı olması internet ortamında, yani değişik sistemlerin barındıran ortamlarda veri taşınmasını sorunsuz hale getirir. Böylece, internet ortamında bile veriler sorunsuz olarak saklanabilir ve iletilebilir. Özellikle binary tabanlı (ikili) veri depolamasını ve aktarımını kullanan vertabanı programları gibi uyumsuzluk problemi yaşanmaz. Firewall lara takılma sorunu yoktur. Diğer bir ifade ile XML günümüzün ve geleceğin veri depolama ve aktarım ortamıdır.
XML temel olarak verinin açıklanmasına ve düzenlenmesine odaklanmıştır. Yukarıda da söylediğim gibi tek başına kullanılmayan bir dildir.
XML ile tanımlanan belgeler, bir uygulamada veri olarak kullanılır.
Bu bir web sayfasının içeriğini oluşturan veriler olabileceği gibi, herhangi bir desktop uygulamsındaki veriyi sağlayan bir kullanımda olabilir.
XML de HTML de olduğu gibi tanımlı etiketler yoktur. Etiketleri, belgeyi oluşturan istediği gibi tanımlayabilir. Bundan dolayı genişletilebilir ön ekini almaktadır. Örneğin HTML de önceden tanımlı bir çok etiketten biri olan <H1></H1> etiketleri belirli bir boyutta başlık bilgisini temsil ederken, XML de bunun gibi önceden tanımlanmış bir etiket yoktur. Bütün etiket tanımlarını kendimiz yaparız. Örneğin
<isim>zafer</isim>
XML, HTML in yerini alacak bir markup dili değildir, aksine onu tamamlayan bir yapıdır. Veri taşınması ve kullanılması üzerine tesis edilen XML, HTML sayfalarındada bir veri kaynağı olarak kullanılır.
XML belgelerinin dosya uzantısı .xml dir. Basit bir xml belgesi aşağıdaki gibidir:
<isim>
<ad>zafer</ad>
<soyad>demirkol</soyad>
</isim>
XML belgelerinin istediğimiz yapıda olmasını DTD veya Schema gibi teknolojiler sağlar. Bunlar sayesinde, önceden tanımladığımız kurallar bütününe belgelerin uygun olup olmadığı (geçerliliği) denetlenebilir.
Örneğin kullanmak istediğimiz XML belgesinin yapısında yukarıdaki basit örneğimizdeki gibi “isim” elementi içinde mutlaka “ad” ve “soyad” etiketleri ile tanımlanmış elementler bulunmasını istiyorsak, bunu ayrı bir DTD veya Schema da tanımlamalıyız. XML belgemiz bu tanımlara uygun olarak oluşturulmuşsa, o uygulama için bu XML belgemiz geçerlidir. DTD ve Schema oldukça geniş konular olup ayrı yazıları gerektiriyor. Burada sadece “geçerli” “geçersiz” XML belgesinin ne anlama geldiğini vurgulamak istedim.
XML ile ilgil temel diğer bir kavramsa, iyi biçimli (well formated) belge kavramıdır. XML belgeleri oluşturma tekniğine yönelik fazla kural olmasada yine üç beştane yapısal kural vardır. Örneğin “açılan tag kapanır” gibi. Bu yazım kuralları ile ilgi ayrı bir makale düşünüyorum. Burada söylenmesi gereken XML yazım kurallarına uygun oluşturulmuş bir XML belgesinin iyi biçimli belge olarak adlandırıldığıdır. İyi biçimli olmayan belgeler Intenet explorer da açılmaz ve hata verir.
Örneğin yukarıdaki basit örneğimiz iyi biçimli, yani XML yazım kurallarına uygun olarak oluşturulduğu için İnternet Explorer bu belgeyi gösterir;

halbuki iyi biçimlilik kurallarına uymayan aşağıdaki belgeyi göstermez ve hata verir;
<isim>
<ad>zafer<ad>
<soyad>demirkol</soyad>
</isim>
(“ad” etiketi kapanmamış)

Oysa geçerlilik denetiminde Explorer herhangi bir hata vermez. Diğer bir ifade ile geçerlilik denetimi yapmaz. Bu anlamda bir belge “iyi biçimli” olabilir fakat “geçerli” olmayabilir.
Son olarak XML belgelerinin şekilsel düzenlemesinin (görüntülenmesinin) bir çok metodu vardır. Bunlar bir HTML sayfasında CSS olabileceği gibi, ayrıca XML için geliştirilmiş olan ve XML belgelerinin görünümünü düzenleyen XSL (eXtensible Style Language) dir. Ama bu da çok detaylı bir konu ve ayrı pek çok makaleyi gerektirir.
Bu yazımızda, XML in ne olduğunu, ne olmadığını gördük. Ayrıca temel bir takım XML kavramları ile tanıştık. Diğer makalelerde detaylarla buluşmak üzere hoşçakalın.