XML Biçimlendir

Doğrula ve XML'i biçimlendir. Sözdizimi vurgulama. Ücretsiz, sonsuza kadar.
Giriş XML
Biçimlendirilmiş XML
Giriş XML

Özel ve güvenli

Her şey tarayıcınızda gerçekleşir. Dosyalarınız sunucularımıza asla dokunmaz.

Çok hızlı

Yükleme yok, bekleme yok. Bir dosyayı bıraktığınız anda dönüştürün.

Gerçekten ücretsiz

Hesap gerekmez. Gizli maliyet yok. Dosya boyutu hilesi yok.

XML (Extensible Markup Language) 25 yıldan fazla bir süredir var, ancak hala modern yazılımın altyapısına dokunmuş durumda: Office belgeleri ve Android düzenlerinden SOAP API'lere, RSS beslemelerine, yapılandırma dosyalarına ve dijital koruma iş akışlarına kadar. Artık popüler değil—bu taç JSON'a gitti—ancak XML, katı yapı, zengin meta veriler ve uzun vadeli birlikte çalışabilirlik önemli olduğunda kritik kalmaya devam ediyor. Bu makalenin amacı XML'i kapsamlı bir şekilde açıklamaktır: nereden geldiği, nasıl çalıştığı, nasıl işlediğimiz ve doğruladığımız, daha yeni formatlarla nasıl karşılaştırıldığı ve 2025 ve sonrasında güvenli ve iyi bir şekilde nasıl kullanılacağı.

1. XML gerçekte nedir

XML, iç içe geçmiş öğeler ve öznitelikler kullanarak yapılandırılmış veri ve belgeleri temsil etmek için basitleştirilmiş bir işaretleme dilidir. World Wide Web Consortium'un Extensible Markup Language (XML) 1.0 Recommendation tarafından tanımlanmıştır ve bu, iyi biçimlendirilmiş XML belgeleri için sözdizimini belirtir ve işlemcilerin bunları nasıl işlemesi gerektiğini açıklar.

XML spesifikasyonu, XML'i SGML'nin (Standard Generalized Markup Language) kısıtlı bir alt kümesi olarak tanımlar ve SGML'nin temel gücünü korurken uygulanması daha basit olacak şekilde tasarlanmıştır: açık işaretleme ile yapılandırılmış metni temsil etme.

Bazı temel özellikler XML'i ayırt eder:

  • Metin tabanlı ve Unicode farkında. XML belgeleri düz metindir ve Unicode/ISO 10646 karakter setlerine dayanır, bu da onları taşınabilir ve dil bağımsız hale getirir.
  • Kendi kendini açıklayan. Etiket adları ve öznitelikler anlam taşır. Yapıyı temel olarak anlamak için ayrı bir şema gerekmez (şemalar bunu çok daha güçlü hale getirse de).
  • Hiyerarşik. XML'in ağaç yapısı doğrudan iç içe geçmiş verilere, belgelere ve yapılandırma hiyerarşilerine eşlenir.
  • Genişletilebilir. Kendi etiketlerinizi ve sözlüklerinizi icat edersiniz; XML'in kendisi izin verilen öğeler kümesini sabitlemez.

2. Kısa bir tarih: SGML'den XML'e ve modern web'e

XML'in kökleri, 1980'lerden kalma bir ISO standardı olan ve yayıncılık ve teknik dokümantasyonda yoğun olarak kullanılan SGML'de yatmaktadır. 1990'ların ortalarına gelindiğinde, web'in HTML'i (kendisi SGML tabanlıydı) her yerdeydi ancak çok sınırlıydı ve sunuma sıkı sıkıya bağlıydı.

1996–1997 civarında, Jon Bosak, Tim Bray, C. M. Sperberg-McQueen, James Clark ve diğerlerini içeren bir çalışma grubu, kolay ve güvenilir bir şekilde ayrıştırılabilen daha basit, web dostu bir SGML alt kümesi tasarlamaya başladı. İlk XML 1.0 Recommendation 1998'de yayınlandı ve XML, SOAP, WSDL, SVG, XSLT ve sayısız endüstriye özgü sözlükler dahil olmak üzere birçok erken web standardı ve protokolünün temeli haline geldi.

Daha sonra, XML 1.1 bazı karakter işleme kenar durumlarını ve kontrol karakterlerini iyileştirdi, ancak XML 1.0 uygulamada baskın varyant olarak kalmaya devam ediyor.

3. Temel XML sözdizimi: iyi biçimlendirilmiş belgeler

XML 1.0 spesifikasyonu, iyi biçimlendirilmiş belgeler için kesin bir sözdizimi tanımlar. En azından, iyi biçimlendirilmiş bir XML belgesi:

  • Tam olarak bir kök öğeye sahiptir.
  • Eşleşen başlangıç ve bitiş etiketleri kullanır.
  • Öğeleri uygun şekilde iç içe geçirir (üst üste binen etiket yok).
  • Öznitelik değerleri için tırnak işaretleri kullanır.
  • Yasal karakterler ve kodlamalar kullanır.

Küçük ama geçerli bir belge şöyle görünebilir:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>George</to>
  <from>Adam</from>
  <message>Hello XML!</message>
</note>

XML bildirimi isteğe bağlıdır, ancak sürümü ve karakter kodlamasını belirtmenin geleneksel yoludur. Belge öğesi <note> tek köktür. Metin düğümleri, öğeler, öznitelikler, yorumlar, işleme talimatları ve varlık referansları birlikte spesifikasyonda açıklanan ağaç yapısını oluşturur.

XML ayrıca iyi biçimlendirilmiş ve geçerli belgeler arasında ayrım yapar:

  • İyi biçimlendirilmiş bir belge sözdizimi kurallarını takip eder.
  • Geçerli bir belge ek olarak yapısını ve içeriğini kısıtlayan bir DTD veya şemaya uyar.

4. Ad alanları: sözlükleri güvenli bir şekilde karıştırma

XML sözlükleri çoğaldıkça, ad çakışmaları bir sorun haline geldi: bir sözlük kitap başlığı için <title> kullanabilir; başka biri iş unvanı için. Çakışmalardan kaçınmak için XML, W3C Recommendation'ında tanımlanan ad alanlarını tanıttı Namespaces in XML.

Örneğin:

<book xmlns:dc="http://purl.org/dc/elements/1.1/">
  <dc:title>XML in Depth</dc:title>
</book>

Burada, dc:title, dc önekini Dublin Core ad alanı URI'sine bağlayarak diğer herhangi bir <title> öğesinden güvenli bir şekilde ayırt edilir. Ad alanları modern XML ekosistemlerinde çok önemlidir: XSD, XSLT, SOAP, RSS ve Office Open XML hepsi bunlara büyük ölçüde güvenir.

5. Doğrulama: DTD'ler, XML Schema ve daha fazlası

5.1 DTD'ler

Orijinal XML spesifikasyonu, belgelerin izin verilen yapısını—izin verilen öğeler, öznitelikler, varlıklar vb.—tanımlamanın kanonik yolu olarak Document Type Definitions (DTD'ler) içeriyordu. DTD'ler kompakt ve XML prologuna iyi entegre edilmiştir, ancak sınırlıdırlar: XML olmayan bir sözdizimi kullanırlar, zayıf tipleme vardır ve ad alanlarıyla mücadele ederler.

5.2 XML Schema (XSD)

DTD sınırlamalarını ele almak için, W3C XML Schema Definition (XSD)'yi standartlaştırdı, şimdi sürüm 1.1'de, XML Schema Definition Language (XSD) 1.1 Part 1: Structures'de. XSD'nin kendisi XML'de yazılmıştır, ad alanlarını destekler ve zengin tipleme (dizeler, sayılar, tarihler, listeler, birleşimler), oluşum kısıtlamaları ve karmaşık içerik modelleri sağlar.

Diğer şema dilleri mevcuttur—RELAX NG ve Schematron gibi—ancak XSD birçok kurumsal ve standart odaklı ortamda fiili standart olarak kalmaya devam ediyor.

5.3 Doğrulama neden önemlidir

Doğrulama, XML'i yapılandırılmış metinden sistemler arasındaki sözleşmelere dönüştürür. Örneğin:

  • Finansal mesajlaşma spesifikasyonları ödeme talimatları için katı şemalar tanımlar.
  • Office Open XML ve RSS gibi standartlar belge formatlarını şemalarla resmileştirir.
  • Derleme ve yapılandırma araçları, hataları erken yakalamak için pom.xml veya web.config gibi dosyaları doğrular.

6. XML işleme: DOM, SAX ve akış

XML'in kendisi sadece metindir. Yararlı bir şey yapmak için, yazılımın onu bir modele ayrıştırması gerekir. İki klasik işleme modeli DOM ve SAX'tır.

6.1 DOM: bellek içi ağaç

W3C'nin DOM Level 3 Core spesifikasyonu , öğeler, öznitelikler, metin, yorumlar ve daha fazlası için düğümlerle tüm belge ağacını temsil eden dil bağımsız bir nesne modeli tanımlar. DOM rastgele erişim dostudur, hakkında akıl yürütmek kolaydır ve kütüphanelerde yaygın olarak desteklenir, ancak tüm belgenin bellekte tutulmasını gerektirir.

6.2 SAX: olay odaklı akış

Simple API for XML (SAX), XML'i bir akış olarak ayrıştıran ve "öğe başlangıcı" veya "öğe sonu" gibi olaylar için geri aramalar tetikleyen olay odaklı bir API'dir. SAX Project site ve Oracle SAX tutorial 'de açıklanmıştır.

SAX, tüm ağacı saklamadan belgeleri tek bir geçişte işler, bu da onu son derece bellek verimli hale getirir ve günlükler, mesaj işleme veya toplu dönüşümler gibi büyük akışlar için idealdir. StAX gibi çekme tabanlı akış API'leri benzer ilkeleri takip eder.

7. XPath, XSLT ve XQuery: XML'i sorgulama ve dönüştürme

7.1 XPath

XPath, /bookstore/book[1]/title gibi yol benzeri ifadeler kullanarak bir XML belgesinin bölümlerini adreslemek için kompakt bir sorgu dilidir. XPath 3.1 'de tanımlanan en son sürüm, modeli haritalar ve diziler aracılığıyla JSON verilerini de işleyecek şekilde genişletir ve büyük bir standart fonksiyon seti tarafından desteklenir.

XPath birçok araçta gömülüdür: XSLT, XQuery, XML Schema assertions ve popüler programlama dillerinde API'ler.

7.2 XSLT

XSL Transformations (XSLT), XML'i diğer formatlara—XML, HTML, metin veya modern işlemcilerde JSON—dönüştürmek için bildirimsel bir dildir. W3C'nin XSLT 3.0 Recommendation 'i, desen eşleştirme ve seçim için XPath'e dayanan şablon tabanlı bir sistem tanımlar.

Stil sayfaları kendileri XSLT ad alanını kullanan XML belgeleridir. XSLT 3.0, devasa belgeler için akış yetenekleri ve JSON ve haritalarla geliştirilmiş entegrasyon ekler.

7.3 XQuery

XQuery, XQuery 3.1 'de tanımlanan XML depoları için tam bir sorgu dilidir. XML veri koleksiyonlarını sorgulamak ve dönüştürmek için tasarlanmıştır, genellikle yerel XML veritabanlarında veya belge depolarında saklanır ve güçlü sonuç kümeleri oluşturmak için FLWOR ifadeleri (for, let, where, order by, return) kullanır.

Birlikte, XPath, XSLT ve XQuery, özellikle yayıncılık, dijital beşeri bilimler, e-devlet ve veri entegrasyon bağlamlarında ölçekte XML ile çalışmak için zengin bir araç seti oluşturur.

8. XML'in bugünkü gerçek dünya kullanımları

JSON web API'lerinde hakim olsa bile, XML hala birçok sistem ve standartta derinlemesine gömülüdür.

8.1 Belge formatları ve standartlar

  • Office Open XML (OOXML). Modern Microsoft Office belgeleri (.docx, .xlsx, .pptx) ECMA-376 Office Open XML ve ilgili ISO standartları tarafından tanımlanan XML dosyalarının ZIP paketleridir.
  • Dijital koruma. Kongre Kütüphanesi gibi kurumlar XML'i (özellikle XML 1.0) yapılandırılmış dijital içeriği temsil etmek için istikrarlı, koruma dostu bir format olarak görür.
  • Bilimsel ve teknik işaretleme. TEI, DocBook ve diğer alana özgü sözlükler XML tabanlıdır ve anlamsal işaretleme ve uzun vadeli arşivlemeyi sağlar.

8.2 Mesajlaşma ve web hizmetleri

  • SOAP. W3C'nin SOAP 1.2 spesifikasyonu, HTTP gibi protokoller üzerinden yapılandırılmış mesajları değiş tokuş etmek için XML tabanlı bir zarf tanımlar.
  • RSS ve sendikasyon. RSS 2.0 spesifikasyonu , besleme sendikasyonu için bir XML formatı tanımlar ve hala bloglar, haberler ve ürün beslemeleri için yaygın olarak kullanılır.

8.3 Yapılandırma ve derleme sistemleri

  • Maven POM. Apache Maven'in Project Object Model (pom.xml) proje meta verilerini, bağımlılıkları, eklentileri ve derleme yapılandırmasını açıklayan bir XML dosyasıdır, POM Reference ve Introduction to the POM 'de belgelenmiştir.
  • Spring Framework XML yapılandırması. Geleneksel Spring uygulamaları genellikle applicationContext.xml veya beans.xml dosyalarında bean'leri ve bağlantıları tanımlar, bir yaklaşım hala Spring referans dokümantasyonu ve Java Guides gibi öğreticilerde açıklanmıştır.
  • .NET yapılandırması. ASP.NET ve WCF, uç noktaları, bağlamaları ve davranışları yapılandırmak için XML biçimlendirilmiş web.config ve app.config dosyalarına güvenir, Microsoft'un web.config dokümantasyonu ve WCF yapılandırma rehberi 'de açıklandığı gibi.

Daha genel olarak, doğrulama ve araçlar önemli olduğunda, özellikle XSD destekli şemalarla, XML yaygın bir yapılandırma formatı olarak kalır.

8.4 Mobil ve UI düzenleri

Android'de, UI düzenleri genellikle res/layout altındaki XML dosyalarında bildirilir. Google'ın dokümantasyonu, görünümleri HTML'e çok benzer şekilde iç içe geçirmek için Android'in XML sözlüğünü kullanarak düzenler yazdığınızı açıklar, her düzen dosyası tek bir kök öğe içerir.

9. XML vs JSON vs YAML

2025'e kadar, JSON web API'leri için popülerlik yarışını açıkça kazandı: bir yakın tarihli karşılaştırma makalesi JSON'u web API yanıtlarının yaklaşık %87'si olarak tahmin ediyor, XML %9 ve YAML %4 ile.

9.1 XML'in güçlü yönleri

JSON ve YAML ile karşılaştırıldığında, XML şunlara ihtiyaç duyduğunuzda parlar:

  • Zengin şemalar ve güçlü doğrulama. XSD, karmaşık türler, kısıtlamalar ve ilişkiler belirtmenize izin verir ve olgun bir araç ve doğrulayıcı ekosistemine sahiptir.
  • Karışık içerik ve belgeler. XML, işaretleme ve metnin iç içe geçtiği metin ağırlıklı belgeler için oluşturulmuştur; JSON ve YAML tamamen yapılandırılmış veriler için daha iyidir.
  • Derin meta veriler ve genişletilebilirlik. Ad alanları ve şemalar, eski tüketicileri bozmadan isteğe bağlı öğelerin ve özniteliklerin eklenebileceği sürüm toleranslı belgeler sağlar.

9.2 JSON ve YAML'ın güçlü yönleri

JSON okumak ve yazmak daha basittir, JavaScript nesnelerine doğal olarak eşlenir ve kabloda daha küçüktür. Öğreticiler sık sık JSON'un bitiş etiketlerini atladığını, daha özlü olduğunu ve özel bir XML ayrıştırıcı olmadan tarayıcılarda yerel olarak ayrıştırılabileceğini belirtir.

YAML, yapılandırma için insan okunabilirliğini vurgular ve Kubernetes ve Ansible gibi DevOps araçlarında popülerdir, ancak karmaşıklığı ve girinti duyarlılığı hatalar getirebilir.

9.3 Doğru formatı seçme

Modern rehberlik şu şekilde olma eğilimindedir:

  • Çoğu web API'si ve istemci-sunucu iletişimi için JSON kullanın.
  • Bulut/DevOps ortamlarında geliştirici odaklı yapılandırma için YAML kullanın.
  • Şema odaklı belgeler, karışık içerik, mevcut XML ekosistemleri (SOAP, OOXML, WCF, Android düzenleri) veya standardizasyon ve araçların olgun olduğu uzun vadeli arşivleme gerektiğinde XML kullanın.

10. Güvenlik: XXE ve diğer XML tuzakları

XML'in esnekliği, özellikle dış varlıklar ve DTD'ler etrafında keskin kenarlarla gelir. OWASP'ın XML External Entity (XXE) Prevention Cheat Sheet 'i, XXE güvenlik açıklarının saldırganların yerel dosyaları okumasına, sunucu tarafı istek sahteciliği yapmasına veya varlık genişletmesini sömürerek hizmet reddine neden olmasına nasıl izin verdiğini belgeler.

Yaygın saldırı vektörleri şunları içerir:

  • Yerel veya uzak kaynaklara referans veren dış varlıklar.
  • DTD'lerde büyük yükler halinde genişleyen parametre varlıkları.
  • Güvenilmeyen ağlar üzerinden DTD alımı.

Azaltma rehberliği genellikle şunları önerir:

  • Mümkün olduğunca ayrıştırıcılarda DTD'leri ve dış varlıkları devre dışı bırakma.
  • OWASP önerilerini takip eden sertleştirilmiş ayrıştırıcı ayarları veya güvenli kütüphaneler kullanma.
  • Riskli özellikleri etkinleştirmeden şemalara karşı doğrulama.

Diğer güvenlik değerlendirmeleri arasında aşırı büyük belgeler (kaynak tükenmesi), kullanıcı girişinden sorgular oluşturan sistemlerde XPath/XQuery enjeksiyonu ve ayrıcalık yükseltmesine veya kod yürütmeye yol açan yanlış yapılandırılmış XML tabanlı yapılandırma dosyaları yer alır.

11. XML için tasarım ve en iyi uygulamalar

Düşünceli kullanıldığında, XML veri ve belgeleri modellemenin temiz, sağlam bir yolu olarak kalır. Bazı pratik rehberlik:

  • Açık bir ağaç modelleyin. XML'inizi ilişkisel bir şemayı doğrudan yansıtmak yerine istikrarlı bir kavramsal ağaç etrafında (örneğin, <invoice><lineItems> <lineItem>) tasarlayın.
  • Öğeleri özniteliklere karşı kasıtlı olarak seçin. Ana içerik ve yapılar için öğeler kullanın; meta veriler ve bayraklar için öznitelikler kullanın.
  • Baştan ad alanlarını kullanın. Küçük sözlükler için bile, bir ad alanı atamak (örneğin, xmlns="https://example.com/ns/invoice") daha sonra acı verici geçişlerden kaçınır.
  • Formatınızı bir şema ile destekleyin. XSD (veya başka bir şema dili) sağlayın ve bunu genel sözleşmenizin bir parçası olarak ele alın. CI ve entegrasyon noktalarında şema doğrulaması kullanın.
  • İnsan tarafından incelenebilir tutun. Güzel yazdırma ve yorumlar hata ayıklama, yapılandırma ve uzun vadeli bakıma yardımcı olur.
  • Verileri sunumdan ayırın. Yapı ve anlam için XML kullanın ve bunu XSLT veya diğer araçlarla HTML, PDF veya diğer formatlara dönüştürün.
  • Uygun işleme modellerini seçin. Küçük ila orta belgeler ve karmaşık sorgular için DOM + XPath/XSLT ideal olabilir; çok büyük akışlar veya kısıtlı ortamlar için SAX, StAX veya olay odaklı işleme kullanın.
  • Ayrıştırıcıları sertleştirin. Güvenilmeyen girişi ayrıştırırken OWASP XXE önleme rehberliğini ve dilinizin güvenlik en iyi uygulamalarını takip edin.

12. XML'in gelecekteki rolü

Günlük web geliştirmede, XML büyük ölçüde merkez sahneyi JSON ve YAML'a bıraktı. Ancak birçok alanda—kurumsal entegrasyon, belge standartları, yapılandırma yönetimi, dijital koruma ve eski sistemler—her şeyi daha yeni formatlara yeniden yazmak ya uygulanamaz ya da istenmez.

W3C ve Ecma gibi standart organları hala XML 1.x, XML Schema, XPath, XSLT, XQuery, SOAP ve OOXML gibi XML tabanlı spesifikasyonları sürdürüyor ve Kongre Kütüphanesi gibi kurumlar XML'i bir arşiv iş atı olarak görmeye devam ediyor.

Geliştiriciler için, bu, Office dosyalarına, Android düzenlerine, birçok Java kurumsal yığınına, .NET yapılandırmasına, eski SOAP/WSDL hizmetlerine veya standart odaklı veri değişimine dokunduğunuzda muhtemelen XML ile etkileşime gireceğiniz anlamına gelir. XML'in sözdizimi, ad alanları, şemalar ve işleme modellerini anlamak, özellikle entegrasyon, altyapı veya uzun ömürlü sistemlerde çalışıyorsanız değerli bir beceri olarak kalır.

XML artık modern web API'lerinin yıldızı olmayabilir, ancak hala büyük miktarda yazılım için sağlam, iyi belirtilmiş ve ağır şekilde araçlandırılmış bir temeldir. Güçlü şemalara, zengin belgelere veya mevcut XML tabanlı standartların geniş manzarasında gezinmeye ihtiyaç duyduğunuzda derinlemesine öğrenmek ödüllendiricidir.

Sık Sorulan Sorular

XML nedir?

XML (eXtensible Markup Language), hem insanlar hem de makineler tarafından okunabilir bir formatta belgeleri kodlamak için kurallar tanımlayan bir işaretleme dilidir.

Neden XML'i biçimlendirmem gerekiyor?

XML'i biçimlendirmek, uygun girintileme ve satır sonları ekleyerek onu insanlar tarafından okunabilir hale getirir.

XML doğrulama ne yapar?

XML doğrulama, XML belgenizin iyi biçimlendirilmiş (sözdizimsel olarak doğru) olup olmadığını ve isteğe bağlı olarak bir şemaya uygun olup olmadığını kontrol eder.

XML verilerim güvenli mi?

Evet! Tüm XML biçimlendirme ve doğrulama tamamen tarayıcınızda gerçekleşir. Verileriniz bilgisayarınızdan asla ayrılmaz.

Bir XML dosyası yükleyebilir miyim?

Evet, 'Dosya aç' düğmesini kullanarak bir XML dosyası yükleyebilirsiniz.

Yaygın XML hataları nelerdir?

Yaygın XML hataları şunları içerir: kapatılmamış etiketler, eşleşmeyen açılış ve kapanış etiketleri, geçersiz karakterler.

Biçimlendirilmiş XML'i kopyalayabilir miyim?

Evet, biçimlendirilmiş XML'i panonuza kopyalamak için 'Kopyala' düğmesini kullanın.