2010-03-02 10 views
10

Var1 değişkeninin iki kez değişkeni haline getirilmeye çalışıyorum ve var2 sonsuz kez meydana geliyor (Projemde durum farklıdır). Öğe, maxOccurs kullanmama izin vermiyor.XSD, tüm göstergenin içinde sınırsız olmamı sağlamaz

Yapmaya çalıştığım şey için iş var mı?

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="testcomment"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="var1" type="xs:string" maxOccurs="2" /> 
     <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" /> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+2

http://stackoverflow.com/a/3827606/637142 –

cevap

1

Ne yapmaya çalıştığını çünkü tarif edebilir dillerin sınıfların XSD etrafında hiçbir işi yoktur, bu durumda okuma yeşil ışık olmadan belirsiz olabilir listenizdeki bir öğenin türüne, gibi geliyor .

XSD'nizin ilgili bir bölümünü postalayabilir misiniz?


Güncelleme: Hayır, bunu XSD ile yapamazsınız. <xs:all> öğesinde ne ekleyebileceğiniz hakkında kurallar, örneğin here listelenir. Bu kısıtlamanın bir adı vardır - UPA veya Benzersiz Parçacık Atılabilirliği kısıtlaması. Tüm bunlar belirsizlikle ilgilidir ve Microsoft web sitesinin neden here var olduğu hakkında iyi bir açıklaması vardır.

Bu tür bir bildirme gereksinimini ortadan kaldırmak için belge düzeninizi değiştirebilir veya RelaxNG gibi daha etkileyici bir şema diline bakabilirsiniz.

+0

Stackoverflow'ta kod nasıl postalanır? Bu – Vignesh

+0

için oldukça yeni oldum. Birkaç dakika önce yaptın. Geri gönderin, vurgulayın ve ikili (10101) gibi görünen editördeki küçük düğmeyi tıklayın ve XML'inizi doğru bir şekilde gösterecek şekilde girintilendirecektir. – Brabster

+0

Evet .. Teşekkür ederim .. Kodu gönderdim .. :) – Vignesh

3

kolay, basit <xs:choice maxOccurs="unbounded"> yerine <xs:all> kullanın. Bu sizin aradığınız etkiyi verecektir.