2010-11-08 17 views
9

Bunun, keyref ile ilgili olduğuna inanıyorum ama emin değilim ve kesinlikle bunun yapılabilir emin değilim. Örneğin, benimElement1 ve benimElement2'im olduğunu varsayalım. XML dosyasında myElement2 yoksa, myElement1 mevcut olmalıdır, aksi halde isteğe bağlıdır.XSD ile Başka Bir Öğeye Dayalı XML Öğelerini Kısıtlama

Bu tür bir doğrulamayı XSD dosyasımda zorlamanın bir yolu var mı?

+1

Cevabın nedeniyle belirsizlik olmadığını eminim. Tek çözüm, "isteğe bağlı/gerekli" öğesinin isteğe bağlı olduğunu ve ikinci bir faz doğrulaması kullanacağını bildirmektir. –

cevap

23

Benzer sorular ..

stackoverflow veya herhangi teknoloji bloglarında birkaç kez .. istendi ama cevap


olgu gibi, her zamanmümkün değildir:

(a 0) Başka bir elemanın/özniteliğin değerine veya varlığına bağlı olarak Elementi doğrulamak
(b) herhangi bir elemanın/özniteliğin değerine veya varlığına bağlı olarak bir öğenin değerini doğrulamak
(c) 'değeri ya da başka bir element/öznitelik varlığına bağlı olarak özniteliği doğrulama
(d) aynı kapsamda bazında
(e) doğrulama alt öğeleri, farklı türleri/veri tiplerini sahip olan elemanları/aynı adı özelliklerini tanımlayan başka Elementler değeri veya varlığının/..

tüm yukarıda belirtilen hallerin elde etmek mümkün değildir

Nitelikler ama bazı dönüşüm şeyi uygulayabilirsiniz eğer .. o zaman yardım alabilirsiniz. Demek istediğim, "ilk önce dönüşümle geçin ve gereksiniminize göre XML'i değiştirin,

örnek: belirli bir alanın bir değeri bekleniyorsa .. koşulun başarılı olup olmadığını XML olarak iletin Ve eğer bir sonraki blokta .. sonraki blokta XSD doğrulamak için doğrulayacak ve doğru bir şekilde hata çıkacağını :) anlayabildiğini anlayabiliyorsun. Bu özel doğrulamada eksik olduğunu anlayabiliyorsun ..

yine de blok veya Verilere göre xml geçirin .. ve bu ne yapıyorsunuz ..

Not: Schematron son zamanlarda iyi uygulama haline geldi! gibi

Cases: http://zvon.org/xxl/SchematronTutorial/General/contents.html

+0

Bilgi için teşekkürler! Göndermeden önce aradım ama gerçekten bir cevap bulamadım. Temel olarak, sadece doğrulama ve şema ile yapılması imkansız olduğunu keşfettim. durumlar (a), (b), (e) ve (f) bağlı olarak bazen mümkündür: – hmcclungiii

+0

@hmcclungiii, evet o Bu XSD 1.0 durumun makul ama tamamen doğru başka bir biçimidir :) –

+1

nokta İstenen kısıtlamanın detayları. Ve XSD 1.1'de koşullu tip ve onaylama özellikleri, daha geniş bir dizi kısıtlamayı belirginleştirmektedir. –

1

Ne öneriyorsun aşağıda tanımlanan her durum için XSD oluşturmaktır: Başka elemanın değeri veya varlığına bağlı

  1. Sınamayan Unsuru/İşte öğretici olduğunu bağlıyor.
  2. Başka bir öğenin/özniteliğin değerine veya varlığına bağlı olarak bir öğenin değerini doğrulama.
  3. Başka bir öğenin/özniteliğin değerine veya varlığına bağlı olarak özniteliği doğrular.
  4. Doğrulamadan (rastgele) öğe/özniteliğin yok sayılmasına izin verilmez. (Demek istediğim, kullanım kısıtlamaları var.0)
  5. Farklı DataTyp'lere sahip aynı adın öğeleri/öznitelikleri.
  6. Alt öğelerin, diğer Öğelerin/Niteliklerin değeri veya varlığı temelinde doğrulanması.

Ve bunun için orada kendi XML oluşturun. Böyle elemanların kapsayıcı için şema iki diferents tanımlara sahip olacaktır:

İlgili konular