XML
Genişletilebilir İşaretleme Dili
- Okunuşu
- eks em el
Kısaca
XML (Extensible Markup Language), kendi tanımladığınız iç içe etiketlerle yapılandırılmış veriyi tutan, insanın ve makinenin okuyabildiği metin biçimidir.
XML nedir?
XML, 1998'de bir W3C Önerisi (Recommendation) oldu. HTML gibi köşeli parantezli etiketler kullanır, ama etiketler sabit değildir: bir kitap listesi <book>, <title> ve <author> kullanabilir, bir fatura da kendi sözlüğünü. Öğelerin nitelikleri ve iç içe çocukları olabilir ve her belgenin tam olarak bir kök öğesi vardır; bu da XML'i karmaşık, hiyerarşik belgeler için çok uygun yapar.
Etrafında bir standartlar ailesi oluştu. XML Schema (XSD), bir belgenin hangi öğeleri ve türleri içerebileceğini tarif eder, böylece belge doğrulanabilir; XPath bir belgenin parçalarını seçer; XSLT bir XML belgesini başka birine dönüştürür; isim alanları (namespace) da farklı kaynaklardan gelen sözlüklerin ad çakışması olmadan karıştırılmasını sağlar.
XML fark edilmediğinde bile her yerdedir: SOAP web servisleri, RSS ve Atom beslemeleri, SVG görselleri, Android arayüz dosyaları, Maven'ın pom.xml'i, arama motorları için site haritaları ve aslında içi XML dolu ZIP arşivleri olan .docx ve .xlsx gibi Office dosyaları. Birçok bankacılık, kamu ve sağlık entegrasyonu hâlâ XML mesajları alıp veriyor.
Sık yapılan bir yanlış, JSON'un XML'i tamamen gereksiz kıldığını düşünmektir. JSON daha hafiftir ve doğrudan nesnelere karşılık gelir, bu yüzden web API'lerinde kazandı; ama XML'in JSON'da olmayan güçlü yanları vardır: karışık metin ve işaretleme, yorumlar, nitelikler, isim alanları ve olgun doğrulama. XML ayrıştırıcıları da güvenli şekilde yapılandırılmalıdır, çünkü dış varlıklar (external entities) gibi özellikler XXE saldırılarına kapı açar.
Önemli noktalar
- XML, kendi tanımladığınız etiketlerle yapılandırılmış veri için bir metin biçimidir.
- 1998'de bir W3C standardı oldu.
- XSD belgeleri doğrular, XPath sorgular, XSLT dönüştürür.
- SOAP, RSS, SVG, site haritaları ve Office dosyaları XML kullanır.
- Web API'lerinde JSON hâkim, ama XML belgelere ve sıkı doğrulamaya uyar.
Örnek
import xml.etree.ElementTree as ET
xml = """
<library>
<book id="1" lang="en">
<title>Dune</title>
<author>Frank Herbert</author>
</book>
<book id="2" lang="en">
<title>The Left Hand of Darkness</title>
<author>Ursula K. Le Guin</author>
</book>
</library>
"""
root = ET.fromstring(xml)
for book in root.findall("./book"): # an XPath-style path
print(book.get("id"), book.findtext("title"))Sık sorulan sorular
XML ile JSON arasındaki fark nedir?
İkisi de yapılandırılmış veriyi metin olarak saklar. JSON daha kısadır ve doğrudan nesnelere ve dizilere karşılık gelir; bu yüzden çoğu web API'si onu kullanır. XML daha uzundur ama nitelikleri, isim alanlarını, yorumları, karışık içeriği ve resmî şemaları destekler.
XML ile HTML arasındaki fark nedir?
HTML'in web sayfalarını göstermek için sabit bir etiket kümesi vardır ve hatalara karşı hoşgörülüdür. XML'in önceden tanımlanmış etiketi yoktur, veriyi tarif etmek için kullanılır ve iyi biçimli (well-formed) olmalıdır, yoksa ayrıştırıcılar onu reddeder.
XXE saldırısı nedir?
XML External Entity injection: kötü niyetli bir belge, ayrıştırıcıya yerel dosyaları okutmak ya da iç URL'leri çağırtmak için bir dış varlık kullanır. Ayrıştırıcıda dış varlıkları kapatmak bunu önler.
Sık karşılaştırılanlar
İlgili sayfalar
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- SOAPBackend ve API'ler, s. 44SOAP, her isteği ve yanıtı genellikle resmi bir WSDL sözleşmesiyle tanımlanan katı bir zarfa saran, XML tabanlı bir web servisi mesajlaşma protokolüdür.
- HTMLWeb Geliştirme, s. 19HTML, başlık, paragraf, bağlantı, görsel ve form gibi öğelerle web sayfalarının yapısını ve içeriğini tanımlayan işaretleme dilidir.
- SerileştirmeBackend ve API'ler, s. 42Serileştirme, bellekteki veri yapılarını JSON ya da bayt gibi bir biçime dönüştürme işlemidir; böylece veriler saklanabilir veya ağ üzerinden gönderilebilir.
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- YAMLDevOps ve Bulut, s. 52YAML, parantez yerine girinti kullanan, insanın okuyabileceği bir veri biçimidir; DevOps araçlarında ve CI/CD pipeline'larında yapılandırma için yaygındır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin