Udostępnij za pośrednictwem


Opis ograniczenia przyporządkowanie unikatowy cząstek

W pliku XSD złożonych modeli zawartości są ograniczone przez regułę ograniczenie unikatowe cząstka przyporządkowanie (UPA).Ta reguła wymaga, że każdy element dokumentu instancji odpowiadają jednoznacznie dokładnie jeden <xsd:element> lub <xsd:any> cząstka w jego nadrzędnym zawartości modelu.Dowolnego schematu, zawierający typ z potencjalnie niejednoznaczne model zawartości jest odrzucana.

Najbardziej typowe przyczyny niejednoznaczności są <xsd:any> wieloznacznych i cząsteczek, które mają zakresów wystąpieniu zmiennej, takich jak minOccurs < maxOccurs.Na przykład, następujący model zawartości jest niejednoznaczny, ponieważ <e1> element może odpowiadać albo <xsd:element> lub <xsd:any> elementu.

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

Model zawartości następujących również jest niejednoznaczny:

<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>

Chociaż dokumentu, takie jak <root><e1/><e2/><e1/></root> może być sprawdzony jednoznaczny dokumentu takie jak <root><e1/><e1/></root> nie, ponieważ nie jest jasne której <xsd:element> drugi <e1/> odpowiada.Mimo że niektóre dokumenty mogą być jednoznacznie sprawdzone, schemat zostanie odrzucone, z powodu niejednoznaczności potencjał.

Należy zauważyć, że dla modelu zawartości jest nieprawidłowy, musi być możliwe sprawdzenie poprawności dowolne wystąpienie jednoznacznie bez Spojrzenie w przyszłość.Na przykład rozważmy następujący model zawartości:

<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>

Dla dokumentu, takie jak <root><e1/><e3/></root>, sekwencja <e1/><e3/> jednoznacznie odpowiada drugi <xsd:sequence>.Jednak ponieważ <xsd:element> do którego <e1/> odpowiada nie może być ustalona bez Spojrzenie w przyszłość do <e3/>, model zawartości narusza reguły ograniczenia UPA.

Wyszukiwanie więcej informacji

Następujący dokument jest publikowana przez World Wide Web Consortium (W3C) i zawiera opis techniczny ograniczenie przyporządkowanie unikatowy cząstka:

"Część schematu XML: Drugie wydanie struktur W3C proponowane edytowane zalecenie ":

  • Sekcja 3.8.6: Ograniczenia dotyczące składników schematu grupy modelu

  • Dodatek H: Analiza cząstek przyporządkowanie ograniczenia Unique (nie normatywnych)

Aby wyświetlić dokument, odwiedź witrynę http://www.w3.org/TR/xmlschema-1.