XSD Doğrulayıcı

İyi biçimlendirilmiş bir XML belgesi yine de yanlış olabilir: gerekli bir öğeyi eksik bırakmak, bir öznitelik için yanlış veri türünü kullanmak ya da öğeleri yanlış sırada bulundurmak. XSD (XML Schema Definition), belgenin tam olarak nasıl görünmesi gerektiğini açıklar. Bu doğrulayıcı, XML’inizi XSD’siyle eşleştirir, W3C XML Schema doğrulayıcısını çalıştırır ve her ihlali satır, öğe ve ihlal edilen belirli kısıtlamayla listeler.

XML, XSD'ye karşı nasıl doğrulanır

  1. 1

    Her iki dosyayı yapıştırın

    Bir tarafta XML, diğerinde XSD şeması. Birden çok şema birlikte yapıştırılabilir.

  2. 2

    Doğrulamayı çalıştırın

    Ayrıştırıcı öğeleri, öznitelikleri ve türleri şema bildirimleriyle eşleştirir.

  3. 3

    Hataları inceleyin

    Her ihlal öğe yolunu, beklenen kısıtlamayı ve gerçek değeri gösterir.

  4. 4

    Düzeltin ve yeniden doğrulayın

    Yerinde düzenleyin ve yeniden yüklemeden tekrar çalıştırın.

XSD neyi kontrol eder

  • Öğe adları ve kardinalite: gerekli, isteğe bağlı, min/maks oluşumlar.
  • Öğe sırası: sequence, choice, all.
  • Öznitelik varlığı ve türü: gerekli ile isteğe bağlı, varsayılan değerler, sabit değerler.
  • Veri türleri: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, özel.
  • Kısıtlamalar: min/maks uzunluk, numaralandırmalar, regex desenleri, min/maks değerler.
  • Bütünlük referansı: öğeler arası kısıtlamalar için xs:key, xs:keyref, xs:unique.

Tipik hatalar

Hata XSD kısıtlaması
Gerekli <email> öğesi eksik minOccurs="1"
Çok fazla <phone> öğesi maxOccurs="2" aşıldı
“abc” değeri geçerli bir tam sayı değil type="xs:integer"
“[email protected]” değeri desene uymuyor xs:string üzerinde xs:pattern
Öğeler sırasız xs:sequence
Bilinmeyen <foo> öğesi Şemada bildirilmemiş
Yinelenen anahtar xs:unique ihlali

XSD ile alternatifler arasında seçim yapma

  • XSD: W3C standardı, ayrıntılı, güçlü, geniş desteklenir. Kurumsal XML için ilk tercih.
  • RELAX NG: daha basit sözdizimi, eşit derecede ifade gücü. Belgeleme biçimlerinde (DocBook, TEI) popüler.
  • Schematron: kural tabanlı, belgeye karşı XPath savları çalıştırır. Yapının ötesindeki iş kuralları için iyi.
  • DTD: daha eski, çok daha az ifade gücü. HTML tarihsel uyumluluğu için hâlâ kullanımda.

Birçok proje yapı için XSD, karmaşık alanlar arası kurallar için Schematron kullanır.

Yaygın tuzaklar

  • Ad alanları eşleşmelidir. XSD targetNamespace="http://example.com" bildiriyor ama XML o ad alanını kullanmıyorsa, doğrulama “bildirim bulunamadı” ile başarısız olur.
  • xs:anyType sihirli bir kaçış değildir. Her şeyle eşleşir ama size hiç doğrulama vermez.
  • Varsayılan değerler yalnızca öznitelik yokken geçerlidir. Açık bir boş değer (attr="") varsayılanı almaz.
  • Boşluk işleme türe göre değişir. xs:string onu korur, xs:token onu daraltır, xs:normalizedString sekmeleri/satır sonlarını boşluklarla değiştirir.

Hata ayıklama iş akışı

  1. Önce şema olmadan doğrulayın (iyi biçimlendirme kontrolü). Tüm ayrıştırma hatalarını düzeltin.
  2. Ardından şemaya karşı doğrulayın.
  3. İlk hataya odaklanın. XSD doğrulayıcıları bazen hataları zincirler; ilki genellikle en uygulanabilir olanıdır.
  4. Büyük belgelerde sorunlu öğeyi bulmak için XPath kullanın.

Sık Sorulan Sorular

Hayır. Onları ayrı ayrı yapıştırın ya da XML’de xsi:schemaLocation aracılığıyla şemaya referans verin. Çoğu araç her iki yaklaşımı da destekler.

Evet. Farklı ad alanlarından öğeler göründüğünde, her birinin kendi şemasına ihtiyacı vardır. Hepsini yapıştırın; doğrulayıcı hepsini yükler.

XSD 1.0. Temel alınan libxml motoru XSD 1.1’i uygulamaz; bu nedenle savlar, koşullu türler ve açık içerik gibi yalnızca 1.1’e özgü özellikler uygulanmaz.

Hayır. XML’iniz ve şemanız yalnızca o tek istek için doğrulamayı çalıştırmak üzere sunucuya gönderilir; sonrasında saklanmaz veya günlüğe kaydedilmez.

İlgili Araçlar

Araç diğer dillerde mevcuttur