Freigeben über


Einzigartiges Teilchen-Zuordnungsbeschränkung

In XSD werden komplexe Inhaltsmodelle durch die Einschränkungsregel der eindeutigen Partikelzuordnung (UPA) eingeschränkt. Diese Regel erfordert, dass jedes Element in einem Instanzdokument eindeutig genau einem <xsd:element>- oder <xsd:any>-Komponente im übergeordneten Inhaltsmodell entspricht. Jedes Schema, das einen Typ mit einem potenziell mehrdeutigen Inhaltsmodell enthält, wird abgelehnt.

Die häufigsten Ursachen für Mehrdeutigkeit sind <xsd:any> Wildcardzeichen und Partikel mit variabler Auftretenshäufigkeit, z. B. minOccurs, maxOccurs < . Das folgende Inhaltsmodell ist beispielsweise mehrdeutig, da ein <e1> Element entweder mit dem <xsd:element> Element oder dem <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 auch 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>  

Obwohl ein Dokument wie <root><e1/><e2/><e1/></root> unzweideutig überprüft werden kann, kann ein Dokument wie <root><e1/><e1/></root> dies nicht, weil es nicht klar ist, welchem <xsd:element> der zweite <e1/> entspricht. Obwohl einige Dokumente eindeutig überprüft werden können, wird das Schema aufgrund des Potenzials für Mehrdeutigkeit abgelehnt.

Beachten Sie, dass es für ein gültiges Inhaltsmodell möglich sein muss, jede Instanz eindeutig zu überprüfen, ohne vorausschauen zu müssen. Betrachten Sie beispielsweise 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>  

Bei einem Dokument wie <root><e1/><e3/></root>z. B. entspricht die Sequenz <e1/><e3/> eindeutig der zweiten <xsd:sequence>. Da das <xsd:element> zu dem <e1/> jedoch nicht bestimmt werden kann, ohne zu <e3/> vorausschauen zu müssen, verstößt das Inhaltsmodell gegen die UPA-Einschränkungsregel.

Suchen nach weiteren Informationen

Das folgende Dokument wird vom World Wide Web Consortium (W3C) veröffentlicht und enthält die technische Beschreibung der eindeutigen Einschränkung der Partikelzuordnung:

XML-Schema Teil 1: Strukturen Zweite Ausgabe, Vom W3C vorgeschlagene überarbeitete Empfehlung

  • Abschnitt 3.8.6: Einschränkungen für Komponenten des Modellgruppenschemas

  • Anhang H: Analyse der Einzelteilchenzuweisungsbeschränkung (nicht normativ)

Um das Dokument anzuzeigen, besuchen Sie http://www.w3.org/TR/xmlschema-1.

Siehe auch

XML-Schemaauflistungen (SQL Server)