XML: nedir, belge yapısı ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-03-08 Okuma süresi: 8 dk

XML (eXtensible Markup Language), özel etiketler kullanarak yapılandırılmış verileri depolamak ve iletmek için bir metin biçimidir. Yapılandırma dosyalarında, web servislerinde ve Android geliştirmede yaygın olarak kullanılır. W3C konsorsiyumuna göre, XML şartnamesi 2008 yılından beri istikrarlı bir standart olarak kalmaktadır. XML, şemalar aracılığıyla doğrulama yeteneği ile katı bir veri yapısı sağlar.

Anahtar Noktalar

  • XML — yapılandırılmış veriler için özel etiketlerle genişletilebilir işaretleme dili
  • Katı yapı — zorunlu kapanış etiketleri, kök eleman ve XSD ile doğrulama
  • Ad alanları — bir belgede ad çakışmalarını önleme mekanizması
  • XSLT — XML'in diğer biçimlere dönüştürülmesi: HTML, PDF, CSV
  • Android geliştirme — XML düzenler, bildirim ve kaynaklar için kullanılır

XML nedir?

XML, belgeleri hem insan hem de makine tarafından okunabilir bir biçimde kodlamak için bir dizi kural tanımlayan bir işaretleme dilidir. HTML'nin aksine, XML'in sabit bir etiket kümesi yoktur — geliştiriciler veri yapısına karşılık gelen kendi etiketlerini oluşturur.

XML, 1996 yılında W3C konsorsiyumu tarafından SGML'nin (Standard Generalized Markup Language) basitleştirilmiş bir alt kümesi olarak geliştirilmiştir. XML'in ana amacı, içeriği veri sunumundan ayırmaktır. Görünümü tanımlayan HTML'nin aksine, XML verilerin yapısını ve anlamını tanımlar.

XML'in temel özelliği genişletilebilirliktir. Bir projede yeni veri türleri ortaya çıkarsa, geliştirici mevcut yapıyı değiştirmeden yeni etiketler ekler. Bu, XML'i uzun vadeli veri depolama ve farklı sistemler arasında değişim için uygun hale getirir.

XML'in ana uygulama alanları

  • Android geliştirme — düzen dosyaları, bildirim, kaynaklar (strings, colors, themes)
  • Yapılandırma — Maven POM, Ant build, web yapılandırmaları (web.xml)
  • Web servisleri — SOAP, XML-RPC, RSS/Atom akışları
  • Belge iş akışı — SVG, DocBook, Office Open XML
  • Veritabanları — SQL Server (XML türü), Oracle, PostgreSQL

XML sözdizimi ve yapısı

XML sözdizimi HTML'den daha katıdır. Her açılış etiketinin karşılık gelen bir kapanış etiketi olmalı, öznitelikler tırnak içine alınmalı ve etiket adları büyük/küçük harf duyarlıdır. Belge, diğerlerini içeren tam olarak bir kök elemana sahip olmalıdır.

Bir XML belgesi, XML sürümünü ve kodlamasını belirten bir bildirimle başlayabilir. Ardından, içinde iç içe elemanlar, öznitelikler, metin içeriği ve yorumlar bulunabilen kök eleman gelir. Boş elemanlar <element /> olarak yazılır.

xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <book id="bk001">
        <title>XML Developer Guide</title>
        <author>John Smith</author>
        <price currency="USD">29.99</price>
        <published>2026-03-15</published>
    </book>
    <book id="bk002">
        <title>Advanced XML Schemas</title>
        <author>Jane Doe</author>
        <price currency="USD">49.99</price>
        </book>
</catalog>

Düzgün biçimlendirilmiş XML kuralları

Düzgün biçimlendirilmiş (Well-formed) XML temel kurallara uymalıdır: her açılış etiketi için kapanış etiketi zorunludur, iç içe yerleştirme katıdır (etiket çakışması yasaktır), öznitelik değerleri her zaman tırnak içindedir. Herhangi bir kuralın ihlali belgeyi geçersiz ve ayrıştırılamaz hale getirir.

  1. Bir kök eleman — belge tam olarak bir kök içerir
  2. Doğru iç içe yerleştirme — etiketler çakışmamalıdır
  3. Kapanış etiketleri — kendiliğinden kapananlar dışındaki tüm elemanlar için zorunlu
  4. Büyük/küçük harf duyarlılığı — <Book> ve <book> farklı elemanlardır
  5. Özniteliklerde tırnak işaretleri — öznitelik değerleri çift veya tek tırnak içinde

XML ad alanları ve şemaları

XML ad alanları, bir belgede farklı sözlüklerden öğeler kullanıldığında ad çakışması sorununu çözer. Bir ad alanı, sözlüğü benzersiz şekilde tanımlayan bir URI ile xmlns özniteliği tarafından tanımlanır.

XML Schema (XSD), bir XML belgesinin yapısını tanımlamak için kullanılan bir dildir. XSD, hangi eleman ve özniteliklerin izin verildiğini, bunların veri türlerini, zorunluluğunu ve kısıtlamalarını tanımlar. Şemalar, işleme öncesinde belgenin otomatik olarak doğrulanmasını sağlar ve bu entegrasyon çözümleri için kritiktir.

Teknoloji Amaç Örnek
DTD Temel yapı doğrulaması Eski, daha az özellik
XSD Katı tipleme ve doğrulama Endüstri standardı
RELAX NG XSD'ye kompakt alternatif XSD'den daha basit ve okunabilir
XSLT XML'in diğer biçimlere dönüştürülmesi XML'den HTML, PDF, CSV'ye
XPath Gezinme ve düğüm seçimi XML ağacına sorgular

Mobil geliştirmede XML

XML, Android geliştirmede anahtar bir rol oynar. Android işletim sistemi, kullanıcı arayüzünü (düzen dosyaları), uygulama yapılandırmasını (AndroidManifest.xml), kaynakları (strings, colors, themes) ve vektör grafiklerini (VectorDrawable) tanımlamak için XML kullanır. iOS'ta XML daha az sıklıkla, esas olarak Storyboard ve yapılandırma plist dosyaları için kullanılır.

Android'de, her uygulama ekranı bir View bileşenleri hiyerarşisi (ConstraintLayout, LinearLayout, TextView, Button) ile bir XML dosyasıyla tanımlanır. Bu yaklaşım, uygulama mantığını sunumdan ayırarak bakımı ve farklı ekranlara uyarlamayı basitleştirir. Kaynak XML dosyaları, kodu değiştirmeden uygulamanın yerelleştirilmesine olanak tanır.

Android düzen örneği

Tipik bir düzen dosyası, her biri konum, boyut ve stil özniteliklerine sahip iç içe elemanlarla bir kök ConstraintLayout içerir. Android, başlangıçta performansı optimize etmek için XML'i AXML ikili biçiminde derler.

xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/welcome"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Mobil platformlarda XML ayrıştırma

XML ayrıştırma mobil platformlarda iki ana yaklaşımla yapılır: DOM (Document Object Model) tüm belgeyi bir ağaç olarak belleğe yükler, SAX (Simple API for XML) belgeyi akış şeklinde okur ve olay işleyicileri çağırır. DOM küçük belgeler için uygundur, SAX ise bellek kısıtlaması olan büyük dosyalar için.

Android'de yerleşik ayrıştırıcılar bulunur: akış ayrıştırması için XmlPullParser ve DOM yaklaşımı için DocumentBuilder. iOS, bir temsilci protokolüyle Foundation XMLParser kullanır. Nesneleri XML'e serileştirmek için, PHP'de SimpleXML veya Java'da Jackson XML gibi kütüphaneler sıklıkla kullanılır.

Android'de XML ayrıştırma (Kotlin)

Android, verimli XML ayrıştırma için XmlPullParser kullanılmasını önerir. Ayrıştırıcı, olay odaklı modda çalışır: sonraki öğeye geçmek için next() işlevini çağırır ve olay türünü (START_TAG, TEXT, END_TAG) döndürür. Bu, minimum bellek tüketimiyle her boyuttaki belgenin işlenmesine olanak tanır.

kotlin
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException

fun parseCatalog(parser: XmlPullParser): List<Book> {
    val books = mutableListOf<Book>()
    var eventType = parser.getEventType()
    var currentBook: Book? = null

    while (eventType != XmlPullParser.END_DOCUMENT) {
        when (eventType) {
            XmlPullParser.START_TAG -> {
                when (parser.getName()) {
                    "book" -> currentBook = Book()
                    "title" -> parser.next()
                    "author" -> parser.next()
                }
            }
            XmlPullParser.TEXT -> {
                currentBook?.apply {
                    title = parser.getText() ?: ""
                }
            }
            XmlPullParser.END_TAG -> {
                if (parser.getName() == "book") {
                    currentBook?.let { books.add(it) }
                }
            }
        }
        eventType = parser.next()
    }
    return books
}

Uygulamalarda XML örnekleri

XML kullanım örnekleri, gerçek projelerdeki rolünü gösterir. Android geliştirmenin yanı sıra, XML derleme yapılandırması, veri tanımı ve belge iş akışı için kullanılır. XML sözdizimini anlamak, Maven, SOAP servisleri ve birçok kurumsal araçla çalışmak için gereklidir.

Maven yapılandırması (POM)

pom.xml dosyası bir Maven projesini tanımlar: bağımlılıklar, eklentiler, sürümler ve derleme profilleri. Her bağımlılık groupId, artifactId ve version etiketleriyle belirtilir. Maven, belirtilen kütüphaneleri depolardan otomatik olarak indirir.

xml
<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.9.0</version>
        </dependency>
    </dependencies>
</project>

XML vs JSON: ne zaman ne seçilmeli

XML ve JSON arasındaki seçim, projenin belirli gereksinimlerine bağlıdır. JSON, kompaktlık ve hızın önemli olduğu REST API'leri, mobil uygulamalar ve yapılandırmalar için uygundur. XML, katı doğrulama, ad alanları ve veri dönüşümünün gerektiği Kurumsal sistemlerde, belge iş akışında ve Android geliştirmede vazgeçilmezdir.

XML, uzun vadeli belge depolama senaryolarında kazanır. XSD şemaları sayesinde, XML belgeleri otomatik olarak doğrulanabilir, bu tıbbi, finansal ve hukuki sistemler için kritiktir. XSLT dönüşümleri, tek bir XML kaynağından HTML, PDF ve diğer biçimlerin oluşturulmasına olanak tanır ve belge iş akışını basitleştirir.

JSON ise web API'leri ve mobil uygulamalar için standart haline gelmiştir. JavaScript ile kolay entegrasyon, daha küçük boyut ve yüksek ayrıştırma hızı, JSON'u REST API'leri, WebSocket mesajları ve yapılandırma dosyaları için tercih edilen seçenek haline getirir. Çoğu yeni proje için, JSON ile başlamanız ve yalnızca belirli gereksinimler ortaya çıktığında XML'e geçmeniz önerilir.

Sıkça sorulan sorular

XML, HTML'den nasıl farklıdır?

XML verilerin yapısını ve içeriğini tanımlar, HTML görünümü ve sunumu tanımlar. XML herhangi bir etiket oluşturmaya izin verir, HTML sabit bir kümeye sahiptir. XML sözdiziminde daha katıdır: tüm etiketler kapatılmalıdır, HTML kapatılmamış etiketlere izin verir. XML veriler için, HTML görüntüleme içindir.

XSD nedir ve neden gereklidir?

XSD (XML Schema Definition), bir XML belgesinin yapısını tanımlamak için kullanılan bir dildir. XSD, hangi eleman ve özniteliklerin izin verildiğini, bunların veri türlerini, zorunluluğunu ve kısıtlamalarını tanımlar. Şema, işleme öncesinde bir XML belgesinin otomatik olarak doğrulanmasına olanak tanır, hataları önler ve veri bütünlüğünü sağlar.

Android'de XML nasıl ayrıştırılır?

Android'de, XML ayrıştırma için XmlPullParser kullanın — yerleşik bir akış ayrıştırıcısı. Olay odaklı çalışır: bir döngüde START_TAG, TEXT ve END_TAG'i işler, belleği verimli bir şekilde yönetir. Küçük belgeler için, DocumentBuilderFactory aracılığıyla DOM ayrıştırıcısı uygundur ve tüm belgeyi bir düğüm ağacı olarak belleğe yükler.

DTD ve XSD arasındaki fark nedir?

DTD (Document Type Definition), sınırlı yeteneklere sahip eski bir doğrulama mekanizmasıdır: veri türlerini (her şey dizelerdir) ve ad alanlarını desteklemez. XSD, veri türleri (sayılar, tarihler, numaralandırmalar), ad alanları ve genişletilebilirlik desteği ile modern bir alternatiftir. XSD'nin kendisi bir XML belgesidir, DTD ise kendi sözdizimini kullanır.

XML'de ad alanları neden gereklidir?

Ad alanları, bir XML belgesi farklı kaynaklardan öğeleri birleştirdiğinde ad çakışmalarını önler. Örneğin, bir Android düzeninde View etiketi hem android.view'den hem de bir kütüphaneden gelebilir. Bir URI ile xmlns özniteliği, her eleman ve özniteliğin kaynağını benzersiz şekilde tanımlar.

Özet

  • XML — yapılandırılmış veriler için özel etiketlerle genişletilebilir işaretleme dili
  • Katı sözdizimi — zorunlu kapanış etiketleri, kök eleman, büyük/küçük harf duyarlılığı
  • Ad alanları ve XSD şeması doğrulama sağlar ve ad çakışmalarını önler
  • Android arayüzler, kaynaklar ve uygulama yapılandırması için XML kullanır
  • Ayrıştırma XmlPullParser (akış) veya DOM (bellekte) ile yapılır
  • XSLT, XML'i HTML, PDF ve diğer biçimlere dönüştürmeye olanak tanır
  • REST API'de JSON'dan daha az popüler, ancak XML Kurumsal ve Android'de vazgeçilmez

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun