# XML (Genişletilebilir İşaretleme Dili)

Adres: https://softwaredictionary.org/tr/terimler/xml
Kategori: Backend ve API'ler
Son güncelleme: 2026-10-03
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: Bir XML belgesi ve onu XPath ile okumak (Python)

```python
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.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
