Genişletilebilir İşaretleme Dili, İngilizcede Extensible Markup Language olarak adlandırılan ve XML şeklinde kısaltılan, verileri yapılandırmak, tanımlamak, depolamak ve farklı sistemler arasında taşımak için kullanılan metin tabanlı bir işaretleme dilidir. XML, verinin nasıl görüneceğinden çok, ne anlama geldiğini ve nasıl organize edildiğini tanımlamaya odaklanır. Bu nedenle XML; web servisleri, veri aktarımı, yapılandırma dosyaları, ürün feed’leri, sitemap dosyaları ve farklı yazılımlar arasındaki veri alışverişi için uzun yıllardır kullanılan önemli bir standarttır.
XML’i daha iyi anlamak için önce işaretleme dili kavramını açıklamak gerekir. İşaretleme dilleri, metin veya veri parçalarını etiketler aracılığıyla anlamlandırmaya yarar. HTML, web sayfalarının yapısını ve tarayıcıda nasıl görüntüleneceğini tanımlamak için kullanılırken; XML, verinin yapısını ve anlamını tanımlamak için kullanılır. Bu nedenle XML, HTML’in yerine geçmek üzere tasarlanmış bir dil değildir. İki dil benzer şekilde etiket yapısı kullanır, ancak kullanım amaçları farklıdır.
HTML’de kullanılan etiketler önceden tanımlıdır. Örneğin bir web sayfasında ana başlık kullanmak için <h1>, paragraf yazmak için <p>, bağlantı vermek için <a> etiketi kullanılır. Tarayıcı bu etiketlerin ne anlama geldiğini bilir ve içeriği buna göre görselleştirir. Örneğin <h1>Araba Markaları</h1> ifadesi, tarayıcıya bu metnin birinci seviye başlık olduğunu anlatır. Yani HTML daha çok içeriğin web sayfasında nasıl yapılandırılacağı ve görüntüleneceğiyle ilgilidir.
XML’de ise etiketler çoğunlukla kullanıcı veya sistem tarafından tanımlanır. Örneğin araba modellerini içeren bir veri yapısı oluşturmak istiyorsanız <araba>, <arabaAdi>, <marka>, <model>, <yil> gibi etiketler kullanabilirsiniz. Bu etiketlerin isimleri, verinin bağlamına göre sizin tarafınızdan belirlenebilir. Bu esneklik, XML’in “genişletilebilir” olarak adlandırılmasının temel nedenidir. Ancak etiket isimleri serbestçe seçilebilse de XML dosyasının doğru çalışması için belirli sözdizimi kurallarına uyulması gerekir.
Basit bir XML örneği şu şekilde düşünülebilir:
<arabalar>
<araba>
<marka>Porsche</marka>
<model>911</model>
<kategori>Spor Araba</kategori>
</araba>
</arabalar>
Bu örnekte XML, verinin nasıl görüneceğini değil, hangi bilgilerin hangi yapı içinde bulunduğunu açıklar. <arabalar> kök öğe, <araba> her bir kayıt, <marka>, <model> ve <kategori> ise o kayda ait veri alanlarıdır. Bu yapı sayesinde farklı sistemler, dosyanın içindeki bilgileri daha kolay okuyabilir, işleyebilir ve başka sistemlere aktarabilir.
XML’de etiketlerin yanı sıra nitelikler, yani attribute yapıları da kullanılabilir. Örneğin bir araba kaydında kategori bilgisini ayrı bir etiket olarak yazmak yerine nitelik şeklinde de tanımlayabilirsiniz:
<araba kategori="spor">
<marka>Porsche</marka>
<model>911</model>
</araba>
Bu örnekte kategori="spor" ifadesi, <araba> öğesine ek bilgi sağlayan bir niteliktir. XML’de bazı bilgiler öğe olarak, bazı bilgiler ise nitelik olarak tutulabilir. Hangi yöntemin daha doğru olduğu, verinin yapısına, okunabilirliğe ve sistemin ihtiyaçlarına göre belirlenmelidir. Genel olarak karmaşık veya tekrar kullanılacak veriler için öğe kullanmak, kısa tanımlayıcı bilgiler için nitelik kullanmak daha anlaşılır olabilir.
XML’in en önemli avantajlarından biri insan tarafından okunabilir ve makine tarafından işlenebilir olmasıdır. XML dosyaları düz metin formatındadır; bu nedenle farklı işletim sistemleri, programlama dilleri ve yazılımlar tarafından okunabilir. Bir sistemde oluşturulan XML dosyası, başka bir sistem tarafından işlenebilir ve veri aktarımı için ortak bir format olarak kullanılabilir. Bu özellik XML’i özellikle entegrasyon, veri paylaşımı ve platformlar arası iletişim için değerli hale getirir.
E-ticaret alanında XML, ürün feed’leri için sıkça kullanılır. Bir e-ticaret sitesi ürün adı, fiyat, stok durumu, kategori, marka, görsel URL’i ve ürün bağlantısı gibi bilgileri XML dosyasıyla pazaryerlerine, fiyat karşılaştırma sitelerine veya reklam platformlarına aktarabilir. Benzer şekilde SEO’da XML sitemap dosyaları, web sitesindeki önemli URL’leri arama motorlarına bildirmek için kullanılır. Böylece arama motorları sitenin önemli sayfalarını daha kolay keşfedebilir.
XML ayrıca yapılandırma dosyalarında, haber akışlarında, belge formatlarında ve web servislerinde de kullanılabilir. RSS feed’leri, SOAP tabanlı web servisleri, bazı ofis dokümanı formatları ve çeşitli sistem konfigürasyonları XML mantığından yararlanabilir. Günümüzde JSON birçok modern web uygulamasında daha hafif ve pratik bir veri formatı olarak öne çıksa da XML, kurumsal sistemlerde, eski entegrasyonlarda, belge tabanlı yapılarda ve belirli standartlarda hâlâ yaygın şekilde kullanılmaktadır.
XML’in doğru çalışması için kurallı bir yapıya sahip olması gerekir. Her açılan etiket kapatılmalı, öğeler doğru iç içe yerleştirilmeli, dosyada tek bir kök öğe bulunmalı ve büyük-küçük harf duyarlılığına dikkat edilmelidir. Örneğin <Marka> ve <marka> XML açısından farklı etiketlerdir. Bu kurallara uygun yazılan XML dosyaları “well-formed” olarak adlandırılır. Ayrıca bazı durumlarda XML Schema veya DTD kullanılarak dosyanın hangi kurallara göre oluşturulacağı da tanımlanabilir.
XML’in faydalarından biri de verinin sunumdan ayrılmasını sağlamasıdır. Veriler XML içinde düzenli şekilde tutulabilir, daha sonra farklı sistemler veya arayüzler bu veriyi kendi ihtiyacına göre işleyebilir. Aynı XML verisi bir web sayfasında, mobil uygulamada, raporlama aracında veya başka bir entegrasyon sisteminde kullanılabilir. Bu yapı, veri yönetimini daha esnek hale getirir ve sistemler arası uyumluluğu artırabilir.
Kısacası XML, verileri anlamlı, düzenli ve sistemler arasında taşınabilir şekilde tanımlamak için kullanılan genişletilebilir bir işaretleme dilidir. HTML gibi etiket yapısı kullanır; ancak HTML’den farklı olarak içeriğin görünümünden çok verinin yapısına odaklanır. Kendi etiketlerinizi oluşturabilmeniz, XML’i esnek ve farklı kullanım senaryolarına uyarlanabilir hale getirir. Ürün feed’leri, sitemap dosyaları, veri entegrasyonları, yapılandırma dosyaları ve belge formatları XML’in yaygın kullanım alanları arasında yer alır.