XML(Extensible Markup Language) HTML ile pek çok açıdan benzerlik gösteren bir markup dilidir.Verinin tanımlanması ve tarif edilmesi için kulanılır.HTML'deki yapının aksine XML'de kullanılacak olan tag'ler önceden tanımlı değildir.Yani bir XML dökümanının yapısı tamamıyle kullanıcı tarafından oluşturulur.Verinin tarif edilmesi için DTD adı verilen yapılar kullanılmaktadır.XML ve DTD'nin birlikte kullanılması ile dökümanlar kendini tarif eden bir yapı halini alırlar.
XML ve HTML arasındaki en belirgin fark XML'in verinin kendisiyle ilgilenmesi HTML'in ise verinin sunumuyla ilgilenmesidir.Buna bağlı olarak HTML dökümanları veriye ilişkin şekillendirme bilgilerini içerirken XML dökümanları ise verinin tanım bilgilerini içermektedir. XML'in tasarım amaçlarından biri de verinin taşınmasıdır.
Bahsedilen bu özellikleri incelendiğinde XML'in pek çok önemli işlevi yerine getirdiği görülmektedir.
Şimdi çok basit bir XML dökümanını birlikte inceleyelim:
<not>
<kime>Mehmet</kime>
<kimden>Erdem</kimden>
<heading>Hatırlatma</heading>
<body>Kitapları Unutma!</body>
</not>
HTML dökümanlarına çok benzeyen bu yapıda ilk etapta göze çarpan nokta tag yapılarının bizim tarafımızdan tasarlanmış oluşudur.HTML'de kullanılan <p> ve <h1> gibi standart tag yapıları yukarıdaki XML dökümanında kullanılmamıştır.Bahsedilen bu özelliği nedeniyle XML dökümanları genişletilebilir(extensible) bir yapıya sahiptir.Dökümanın bu hali gerçek anlamda herhangi bir şey ifade etmez.Dökümanın iletimi(gönderim veya alım) ya da sunumu için başka şeylerin de yapılması gerekmektedir.
Burada önemli bir nokta olarak XML'i HTML'in yerine geçecek bir dil olarak düşünmek yerine HTML'in tamamlayıcısı olacak olan bir dil şeklinde düşünmek uygundur.
Günümüz bilişim dünyasına bakacak olduğumuzda XML'in her alanda karşımıza çıktığını görmekteyiz.Bu nedenle XML'I bir anlamda geleceğin web dili olarak tanımlamak mümkündür.
XML Nasıl Kullanılabilir?
XML hakkında bilinmesi gereken en önemli nokta bu dilin veriyi taşımak amacıyla tasarlanmış oluşudur.
XML ile veriler yapı bakımından modülerlik kazanmaktadır.Yukarıda bahsettiğimiz gibi XML dökümanları verinin içeriğiyle ilgilenmektedirler.Bu sayede verilerin içerik,yapı ve sunum kısımları ayrı modüller halinde farklı XML dökümanlarında tutulmaktadır.
XML dökümanları Veri Adaları(Data Islands) adı verilen teknik sayesinde HTML sayfaları içerisinde de depolanabilmektedir.Bu teknik sayesinde verinizin sadece sunumuyla ilgilenilmektedir
XML ile verinin alışveriş işlemi gerçekleştirilir.XML,yapısının esnekliği sayesinde birbirine uyumlu olmayan sistemler arasında veri alış verişini rahatlıkla gerçekleştirmektedir.Günümüz bilişim dünyasında bilgisayar sistemleri ve veritabanlarının genellikle birbirine uyumsuz sistemler içerebildiklerini görmekteyiz.Bundan dolayı uygulama geliştiriciler Internet üzerinden bu tip uyumsuz verilerin alış veriş işlemini gerçekleştirmek zorundadırlar.
Verinin XML formatına çevrilmesi ile farklı sistemler ve uygulamalardaki verilerin karmaşıklık derecesi indirgenerek alış veriş işleminin kolaylaştırılması sağlanır.
XML ile finansal bilgilerin Internet üzerinden alış verişi sağlanmaktadır.Günümüzde artık hepimizin sıklıkla duyduğu elektronik iş kavramı açısından incelenecek olduğunda XML'in önemli fonksiyonları yerine getirdiği görülmektedir.Bahsedilen bu fonksiyonları ile XML geleceğin Elektronik İş dili olarak da yeni bir misyonu üstlenmektedir.
XML ile verinin paylaşımı kolaylaştırılır.
XML,veriyi düz metin (plain text) formatında saklamasından dolayı veriyi paylaştırma konusunda da hem yazılım hem de donanımdan bağımsız hareket edebilme imkanını sunmuştur.
Bu sayede farklı uygulamalarda hareket eden farklı veri tipleriyle çalışmak daha da kolaylaşır.Ayrıca işletim sistemlerinin yükseltgenmesi,sunucu,uygulama vb. dışsal faktörlerin yenilenmesi gibi dışsal faktörlerden de asgari ölçüde etkilenilmiş olunur.
XML ile verinin depolanması sağlanır.
XML, verinin dosyalarda veya veritabanlarında saklanması için de kullanılabilir.
XML,yazılım,donanım ve uygulamalardan bağımsız olduğu için verinin daha elverişli olarak kullanımını sağlamaktadır.Yani başka istemci(client) veya uygulamalar tıpkı veri kaynaklarına erişiyormuş gibi XML dosyalarına rahatlıkla erişebilirler.
XML,esnek yapısı nedeniyle başka dillerin de oluşturulabilmesine olanak tanır.Wireless Markup Language(WML) mobil cihazları için kullanılan WAP ortamlarının dilidir ve XML'in türevidir.
XML Sözdizimi(XML Syntax)
XML Syntax basit bir kaç kuraldan ibarettir.Bundan dolayı kullanımı ve öğrenimi oldukça kolaydır.
Bir XML döküman örneğini inceleyelim:
<?xml version="1.0"?>
<not>
<kime>Mehmet</kime>
<kimden>Erdem</kimden>
<heading>Hatırlatma</heading>
<body>Kitapları Unutma!</body>
</not>
XML dökümanları kendini tarif eden bir syntax'a sahiptir.
Dökümanın ilk satırı XML deklerasyonu(XML declaration) olarak isimlendirilir.Bu kısımda XML dökümanının versiyon bilgisi tanımlanır.Yukarıdaki örnekte XML dökümanımızın versiyonu 1.0 olarak belirtilmiştir.
Bir sonraki satırda dökümanın "root element" adı verilen kök elementi belirtilmiştir.Örneğimizde root element "not" tur.
<not>
Daha sonraki satırda 4 adet child element belirtilmiştir.(kimden,kime,heading ve body):
<kime>Mehmet</kime>
<kimden>Erdem</kimden>
<heading>Hatırlatma</heading>
<body>Kitapları Unutma!</body>
Son olarak root elementin bitişini gösteren tag bulunmaktadır: </not> Tüm XML elementleri bir kapanış tag'ine sahip olmalıdırlar.HTML'de ise bazı elementler bitiş tag'lerine sahip olmayabilir.Örneğin aşağıdaki kod parçası HTML için geçerli bir kod olmasına rağmen XML için geçerli değildir: <p>Bu bir paragraftır
<p>Bu başka bir paragraftır
Yukarıdaki kod parçasını XML formatına uyarlayacak olduğumuzda <p>Bu bir paragragftır</p>
<p>Bu başka bir paragraftır</p> ªeklinde bir düzenleme yapmamız gerekecektir.
XML tag'ler için case-sensitive özellik gösterirler.HTML'de ise case-sensitive özellik yoktur. <mektup>Bu syntax yanlıştır</MEKTUP>
<mektup>Doğru bir syntax örneği</mektup>
XML dökümanları içerisinde tüm elementler hiyerarşiye uymalıdırlar.HTML dökümanlarında bazı elementler düzgün bir içiçe olma yapısında olmayabilirler. Aşağıdaki örneği inceleyelim: <b><i>Burada kullanılacak olan dökümanın formatı bold ve italic olacaktır</b></i>
XML syntax kurallarına gore yukarıdaki örneği düzenleyecek olursak: <b><i>Burada kullanılacak olan dökümanın formatı bold ve italic olacaktır</i></b>
Görüleceği üzere elementler belirli bir düzen çerçevesinde içiçe geçmiş durumdadırlar.
XML syntax'ında tüm XML dökümanlarının bir root elementi olması gerekmektedir.XML dökümanları içerisinde ilk tag "root tag" olarak isimlendirilir:
Bahsedilen bu root elementin altındaki tüm elementler "child element" olarak adlandırılır.Bu child elementler ise daha önceden belirtilmiş olan synax'a uymak zorundadır.Yani elementlerin içiçe geçme durumları belirli bir hiyerarşiye gore olmaktadır.
<root>
<child>
<subchild>
….</subchild>
</child>
</root>
Attribute değerleri daima tırnak içine alınmalıdır.
XML elementleri attribute'lara sahip olabilirler ve bu attribute'lar ise tıpkı HTML'de olduğu gibi isim/değer(name/value) çiftlerini içerebilirler.Attibute değerlerinin nasıl kullanıldığını bir örnekle açıklayalım:
<?xml version="1.0"?>
<not date="12/10/99">
<kime>Mehmet</kime>
<kimden>Erdem</kimden>
<heading>Hatırlatma</heading>
<body>Kitapları Unutma</body>
</not>
Dikkat edilecek olursa "not" elementinin sahip olduğu "date" attribute değeri tırnak işareti içerisinde belirtilmiştir.
HTML'de white space adı verilen boşluk karakteri gözönüne alınmaz.Oysa XML dökümanlarında white space karakterler de değerlendirmeye alınır.Yani bir HTML sayfasında "Merhaba,benim adım Erdem" cümleciği sunum sırasında "Merhaba,benim adım Erdem" şeklinde görüntülenir.
Elementler
XML dökümanları daha fazla bilgiyi taşıyabilmek için genişletilebilirler.Aşağıdaki kod satırını incelyelim:
<not>
<kime>Mehmet</kime>
<kimden>Erdem</kimden>
<body>Kitapları Unutma!</body>
</not>
Şimdi yazmış olduğumuz bu kod satırının nasıl bir çıktı vereceğini inceleyelim:
Mesaj
kime:Mehmet
kimden:Erdem
Kitapları Unutma!
Şimdi dökümanımız içerisinde daha fazla bilgiyi sunmak istediğimizi varsayalım:
<not>
<tarih>199-03-01</tarih>
<kime>Mehmet</kime>
<kimden>Erdem</kimden>
<heading>Hatırlatma</heading>
<body>Kitapları Unutma</body>
</not>
Kaynak : Software AG / Türkiye
Alıntı