§

XML'i yapıştır

§

Seçenekler

Mod
Girinti
XML bildirimi
Kendiliğinden kapanan boş etiketler
§

Biçimlendirilmiş çıktı

xml

XML biçimlendirme, Türk yazılım iş akışlarının her köşesinde karşımıza çıkar. Gelir İdaresi Başkanlığı (GİB) e-Fatura, e-Arşiv ve e-İrsaliye yüklerini UBL-TR 2.1 XML şemasına göre alır, UBL ve XAdES imzalı XML belgeleri günde milyonlarca kez taşınır. Türk Telekom ve Garanti BBVA hâlâ kurumsal entegrasyonlar için SOAP uçnoktaları işletir, Hürriyet ile Milliyet RSS kanallarını canlı yayımlar. BTK düzenli rapor şemalarını XML olarak yayımlar, KEP (Kayıtlı Elektronik Posta) standartları XML üzerine kuruludur ve TÜBİTAK BİLGEM kamu yazılım projelerinde XML şema kütüphaneleri sürdürür. Pretty-print, bu zincirlerde sözleşmeyi doğrulamanın en hızlı yoludur.

XML biçimlendirme nedir?

XML (Extensible Markup Language), yapılandırılmış belgeler ve veri değişimi için W3C tarafından standartlaştırılmış bir metin formatıdır. Biçimlendirme — pretty-printing veya güzelleştirme olarak da bilinir — düzgün biçimli bir XML kaynağını alır ve her öğe, öznitelik, yorum, işleme talimatı ve CDATA bölümünün taranması kolay olacak biçimde yeniden girintiler. Ayrıştırılan belge ağacı tam olarak korunur; yalnızca öğeler arası boşluk değişir.

XML biçimlendirme nasıl çalışır?

Girdiniz, yerel DOMParser ve XMLSerializer API'leri ile özel bir özyinelemeli girinticinin kullanıldığı tarayıcınız içinde tamamen işlenir. Üst düzey adımlar şunlardır:

  1. Girdiniz, yapıştırdığınız her bayt yerel bellekte tutularak metin alanından harfi harfine okunur.
  2. Tarayıcı, bunu new DOMParser().parseFromString(text, 'application/xml') ile ayrıştırır. Girdi düzgün biçimli değilse ayrıştırıcı, metin içeriği motorun satır ve sütun ipuçlarını taşıyan bir <parsererror> düğümü gömer — bunlar hata şeridinde harfi harfine yüzeylenir.
  3. Başarılı ayrıştırmada özel bir girintici, DOM ağacını derinlikle gezer ve her öğeyi, öznitelik kümesini, CDATA bölümünü, yorumu ve işleme talimatını mevcut derinlikte kendi satırına yazar. Kendiliğinden kapanan boş etiketler, seçenek açık olduğunda onurlandırılır.
  4. Küçültme modu zinciri tersine çevirir: XMLSerializer().serializeToString(doc) tek satırlık bir biçim üretir; ardından korumalı bir regex, CDATA bloklarının içindeki metne veya boşluk olmayan metin düğümlerine dokunmadan öğeler arası boşluğu temizler.
  5. Çıktı salt-okunur metin alanına yazılır, hata şeridi temizlenir ve İndir düğmesi sonucu, gönderebileceğiniz veya bir bilete ekleyebileceğiniz bir .xml dosyası olarak paketler.

Neden bu araçla XML pretty-print yapmalısınız?

  • Gizlilik: her ayrıştırma, biçimlendirme ve küçültme geçişi tarayıcınızda gerçekleşir. XML sunucularımıza asla ulaşmaz — yükleme yok, telemetri yok, hesap yok.
  • Hassas hatalar: girdi bozuk olduğunda ayrıştırıcı, sentetik bir tahmin değil, tarayıcı motorunun kendisinin bildirdiği tam satır ve sütunu yüzeyler — DevTools'ta göreceğiniz aynı sayılar.
  • Sadık round-trip: biçimlendirip ardından küçültürsünüz ve orijinal belgenizin bayt-eşdeğerini geri alırsınız (XML bildirim seçeneği modülosu) — biçimlendirme, ad alanlarını asla yeniden kanonik hale getirmez veya öznitelik sırasını yeniden yazmaz.
  • Hızlı: saf DOMParser artı ~60 satırlık girintici, çoklu megabaytlık SOAP zarflarını ve OOXML parçalarını harici bir kütüphane indirmeden anında işler.

XML biçimlendirmenin yaygın uygulamaları nelerdir?

XML pretty-print, web yayıncılığında, kurumsal entegrasyonda ve veri arşivinde karşımıza çıkar:

  • RSS / Atom besleme incelemesi: kanal meta verisini, öğe sırasını ve ad alanı öneklerini yayımdan önce doğrulamak için bir podcast veya haber besleme gövdesini yapıştırın.
  • SOAP hata ayıklama: Wireshark veya bir SOAP istemci günlüğünden kopyalanan bir zarfı biçimlendirerek Header, Body ve Fault bölümleri bir bakışta görünür hale gelsin.
  • Sitemap denetimi: girişleri saymak ve URL başına hreflang alternatiflerini doğrulamak için bir rakipten veya kendi staging sitenizden alınan sitemap.xml'yi yeniden girintileyin.

Bir XML biçimlendirme örneği nasıl görünür?

Üç öğeli bir <feed><entry><title>Hello</title></entry></feed> yapıştırıp 2 boşluk girinti seçeneğiyle Biçimlendir'e basmak, her öğenin kendi satırında, derinliğe göre girintili olduğu dört satırlık bir belge üretir. Aynı girdide Küçültme'ye geçmek, onu orijinal bayt dizesine geri çöker. Round-tripping, herhangi bir düzgün biçimli belge için kayıpsızdır.

Bu çevrimdışı çalışır mı?

Evet. Biçimlendirme ve küçültme zinciri, saf DOMParser + XMLSerializer artı küçük bir özyinelemeli girinticidir; hepsi tarayıcı sekmesi içinde çalışır. Hiçbir şey yüklenmez, hiçbir service worker girdinizi proxy'lemez ve sayfa biçimlendirme adımının kendisi için sıfır ağ isteği yapar. Tek dış trafik, standart sayfa yükleme varlıklarıdır (CSS, fontlar, analitik) — XML'iniz Ultim8Soft'a asla ulaşmaz.

Biçimlendirme belgeyi değiştirir mi?

Semantik değişiklik yok. Biçimlendirme yalnızca öğeler arasındaki boşluğu yeniden yazar. Öğe adları, öznitelik değerleri, metin içeriği, CDATA yükleri, yorumlar ve işleme talimatları bayt için bayt korunur. Ad alanı bildirimleri ve önekleri tam olarak girdinin yazdığı şekilde tutulur — biçimlendirici öznitelikleri yeniden kanonik hale getirmez veya yeniden sıralamaz. Çıktı, isteğe bağlı XML bildirim anahtarı modülosu, girdiyle aynı DOM ağacına ayrıştırır.

CDATA / yorumlar / işleme talimatları nasıl ele alınır?

Her biri mevcut girinti derinliğinde kendi satırında harfi harfine emit edilir. CDATA yükleri içerde yeniden girintileme olmadan <![CDATA[…]]> içinde sarılır — spesifikasyon CDATA içeriğinin opak olduğunu söyler, bu yüzden biçimlendirici buna asla dokunmaz. Yorumlar <!-- … --> kullanır; işleme talimatları <?target data?> kullanır. Üçü de içerikleri sağlam biçimde biçimlendir → küçült → biçimlendir round-trip'inden geçer.

XML biçimlendirme ile küçültme arasındaki fark nedir?

Biçimlendirme, insanların belge ağacını okuyabilmesi için boşluğu genişletir; küçültme, taşımak ve depolamak için onu tekrar çıkarır. İkisi de ham bayt dizgisinde değil, ayrıştırılmış DOM üzerinde çalışır; bu yüzden düzgün biçimli bir belgede biçimlendir → küçült round-trip'i, orijinal küçültülmüş biçimin bayt-eşdeğerini verir. Bir XML yükünü okumak veya diff'lemek istediğinizde biçimlendirme yönünü, tarifeli bir API gateway üzerinden göndermek veya başka bir belge içine gömmek istediğinizde küçültme yönünü kullanın.

Bu XML biçimlendirici, tarayıcınızın AJAX XHR yanıtları ve SVG belgeleri için kullandığı aynı ayrıştırıcıyı kullanır; bu yüzden düzgün biçimli her XML — RSS, Atom, SOAP, sitemap, OOXML, SVG — temiz biçimde round-trip yapar. Yukarıya herhangi bir XML yapıştırın, çıktıyı kopyalayın veya .xml olarak indirin.