Share via


Unique parçacık Attribution kısıtlamayı anlama

XSD, karmaşık içerik modeli, benzersiz bir parçacık attribution (UPA) sınırlaması kuralla sınırlı.Bu kuralı, bir örnek belge içindeki her öğenin belirsizliğe yer bırakmadan tek bir ait olduğunu gerektirir. <xsd:element> veya <xsd:any> içerik modelinde, üst maddenin parçacık. Büyük olasılıkla belirsiz bir içerik modeli türü içeren herhangi bir şema ret edilir.

Belirsizlik en sık karşılaşılan nedenleri <xsd:any> joker karakterler ve değişken oluşumu aralıkları, minOccurs gibi olan parçacık < maxOccurs. Örneğin, aşağıdaki içerik modeli, belirsiz olduğundan bir <e1> öğe ya da eşleşen <xsd:element> veya <xsd:any> Öğe.

<xsd:element name="root">
    <xsd:complexType>
        <xsd:choice>
            <xsd:element name="e1"/>
            <xsd:any namespace="##any"/>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

Aşağıdaki içerik modeli ayrıca büyük/küçük harf belirsiz:

<xsd:element name="root">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="e1" maxOccurs="2"/>
            <xsd:element name="e2" minOccurs="0"/>
            <xsd:element name="e1"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

Bir belge gibi karşın <root><e1/><e2/><e1/></root> olabilir belirsizliğe yer bırakmadan, bir belge gibi geçerliliği <root><e1/><e1/></root> hangi temizleyin olduğundan olamaz <xsd:element> ikinci <e1/> karşılık gelir. Bazı belgeler belirsizliğe yer bırakmadan onaylanabildiğini olsa bile, şema, belirsizlik olasılığını nedeniyle reddedilir.

Geçerli bir içerik modeli için herhangi örnek olmadan devam aranıyor belirsizliğe yer bırakmadan doğrulamak olası olması gerektiğini unutmayın.Örneğin, aşağıdaki içerik modeli göz önünde bulundurun:

<xsd:element name="root">
    <xsd:complexType>
        <xsd:choice>
           <xsd:sequence>
               <xsd:element name="e1"/>
               <xsd:element name="e2"/>
           </xsd:sequence>
           <xsd:sequence>
               <xsd:element name="e1"/>
               <xsd:element name="e3"/>
           </xsd:sequence>
       </xsd:choice>
    </xsd:complexType>
</xsd:element>

Gibi bir belge için <root><e1/><e3/></root>, sırası <e1/><e3/> belirsizliğe yer bırakmadan ikinci eşleşir. <xsd:sequence>. Ancak, çünkü <xsd:element> hangi <e1/> karşılık gelen için ileriye bakarak olmadan belirlenemez <e3/>, içerik modeli UPA sınırlama kuralı ihlal ediyor.

Daha fazla bilgi bulma

Aşağıdaki belge, World Wide Web Konsorsiyumu (W3C) tarafından yayımlanır ve benzersiz bir parçacık attribution kısıtlama teknik açıklamasını içerir:

"XML şeması bölüm 1: Ikinci sürüm, yapıları önerilen W3C önerisi düzenlenen. ":

  • Bölüm 3.8.6: Model grubu Schema bileşenleri kısıtlamaları

  • Ekte H: Unique parçacık Attribution kısıtlama (non-normative) çözümlemesi

Belgeyi görmek için , ziyaret edin: http://www.w3.org/TR/XMLSchema-1.