Understanding the Unique Particle Attribution Constraint
W XSD złożonych modeli zawartości są ograniczone przez regułę ograniczenie unikatowe cząstka przypisanie (UPA).Reguła ta wymaga, że każdy element w dokumencie instancji jednoznacznie odpowiada dokładnie jeden <xsd:element> lub <xsd:any> Cząstka w jego nadrzędnym modelu zawartości. Wszelkie schematu, zawierający typ o potencjalnie niejednoznaczne model zawartości jest odrzucana.
Są najbardziej typowe przyczyny niejednoznaczności <xsd:any> symbole wieloznaczne i cząstki, których wystąpienia zmiennej zakresach, na przykład wartość parametru 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> element.
<xsd:element name="root">
<xsd:complexType>
<xsd:choice>
<xsd:element name="e1"/>
<xsd:any namespace="##any"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Następujący model zawartości jest również niejednoznaczne:
<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ż w dokumencie, takie jak <root><e1/><e2/><e1/></root> można sprawdzić poprawności jednoznacznie, dokument taki jak <root><e1/><e1/></root> nie, ponieważ nie jest jasne której <xsd:element> drugi <e1/> odpowiada. Mimo że niektóre dokumenty mogą być sprawdzone jednoznacznie, schemat zostanie odrzucone, ze względu na ryzyko niejednoznaczności.
Należy zauważyć, że dla model zawartości jest nieprawidłowy, musi być możliwe do sprawdzania poprawności dowolne wystąpienie jednoznacznie bez wyszukiwania do przodu.Na przykład należy wziąć pod uwagę następujące 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>
W dokumencie, takie jak <root><e1/><e3/></root>, w sekwencji <e1/><e3/> jednoznacznie pasuje do drugiego <xsd:sequence>. Jednak ponieważ <xsd:element> do którego <e1/> odpowiada nie można określić bez chcą naprzód <e3/>, model zawartości narusza reguły UPA ograniczenie.
Znajdowanie dalszych informacji
Następujący dokument jest publikowana przez konsorcjum World Wide Web Consortium (W3C) i zawiera opis techniczny ograniczenie przypisanie unikatowych cząstka:
"Schemat XML, część 1: Struktury wydanie drugie, W3C propozycji edytowany zalecenie ":
Sekcja 3.8.6: Ograniczenia dotyczące składników schematu grupy modelu
Dodatek H: Analiza ograniczenia UNIQUE przypisanie cząsteczka (innych niż normatywnych)
Aby wyświetlić dokument, odwiedź witrynę http://www.w3.org/TR/XMLSchema-1.