Einschränkung für eindeutige Partikelzuordnung
In XSD werden komplexe Inhaltsmodelle durch die UPA-Einschränkungsregel (Unique Particle Attribution, eindeutige Partikelzuordnung) eingeschränkt. Diese Regel verlangt, dass jedes Element in einem Instanzdokument eindeutig genau einem <xsd:element>
- oder <xsd:any>
-Partikel im übergeordneten Inhaltsmodell entspricht. Jedes Schema, das einen Typ mit einem potenziell mehrdeutigen Inhaltsmodell enthält, wird zurückgewiesen.
Die häufigsten Ursachen für Mehrdeutigkeit sind <xsd:any>
Feldhalterzeichen und Partikel mit variablen Vorkommensbereichen, z. B. minOccurs < maxOccurs. Das folgende Inhaltsmodell ist z. B. mehrdeutig, da ein <e1
> Element entweder mit dem <xsd:element>
-Element oder <xsd:any>
-Element übereinstimmen kann.
<xsd:element name="root">
<xsd:complexType>
<xsd:choice>
<xsd:element name="e1"/>
<xsd:any namespace="##any"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Das folgende Inhaltsmodell ist ebenfalls mehrdeutig:
<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>
Ein Dokument wie z. B. <root><e1/><e2/><e1/></root>
kann zwar eindeutig überprüft werden, ein Dokument wie z. B. <root><e1/><e1/></root>
hingegen nicht, weil nicht eindeutig ist, welchem <xsd:element>
die zweite Angabe <e1/>
entspricht. Auch wenn einige Dokumente eindeutig überprüft werden können, wird das Schema aufgrund potenzieller Mehrdeutigkeit zurückgewiesen.
Beachten Sie, dass ein Inhaltsmodell in der Lage sein muss, jede Instanz ohne Lookahead eindeutig zu überprüfen, damit es gültig ist. Betrachten Sie z. B. das folgende Inhaltsmodell:
<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>
Für ein Dokument wie z. B. <root><e1/><e3/></root>
entspricht die Sequenz <e1/><e3/>
eindeutig der zweiten Sequenz <xsd:sequence>
. Da das <xsd:element>
, dem <e1/>
entspricht, jedoch nicht ohne Lookahead auf <e3/>
ermittelt werden kann, verletzt das Inhaltsmodell die UPA-Einschränkungsregel.
Weitere Informationsquellen
Das folgende Dokument wird vom W3C (World Wide Web Consortium) veröffentlicht; es enthält die technische Beschreibung der UPA-Einschränkung:
"XML Schema Part 1: Structures Second Edition, W3C Proposed Edited Recommendation" (XML Schema Part 1: Strukturen 2. Ausgabe, vom W3C empfohlene Ausgabe):
Abschnitt 3.8.6: Constraints on Model Group Schema Components (Einschränkungen für Komponenten des Modellgruppenschemas)
Anhang H: Analysis of the Unique Particle Attribution Constraint (non-normative) (Analyse der Einschränkung für die eindeutige Partikelzuordnung (nicht-normativ))
Besuchen Sie http://www.w3.org/TR/xmlschema-1, um das Dokument anzuzeigen.