Sdílet prostřednictvím


Omezení přisuzování jedinečných částic

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

V XSD jsou komplexní modely obsahu omezené pravidlem jedinečného přisuzování částic (UPA). Toto pravidlo vyžaduje, aby každý prvek v dokumentu instance jednoznačně odpovídal přesně jednomu <xsd:element> nebo <xsd:any> částicem v modelu obsahu nadřazeného objektu. Jakékoli schéma, které obsahuje typ s potenciálně nejednoznačným modelem obsahu, je odmítnuto.

Nejběžnější příčiny nejednoznačnosti jsou <xsd:any> zástupné znaky a částice s proměnnými rozsahy výskytů, jako je minOccurs < maxOccurs. Například následující model obsahu je nejednoznačný, protože <e1> prvek může odpovídat prvku <xsd:element> nebo elementu <xsd:any> .

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

Následující model obsahu je také nejednoznačný:

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

Ačkoli dokument, jako je <root><e1/><e2/><e1/></root>, lze jednoznačně ověřit, dokument, jako je <root><e1/><e1/></root>, nelze, protože není jasné, na který <xsd:element> se druhý <e1/> odkazuje. I když se některé dokumenty dají jednoznačně ověřit, schéma bude odmítnuto z důvodu možné nejednoznačnosti.

Aby byl model obsahu platný, musí být možné ověřit libovolnou instanci jednoznačně bez dalšího pohledu. Představte si například následující model obsahu:

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

Pro dokument, jako je <root><e1/><e3/></root>, sekvence <e1/><e3/> jednoznačně odpovídá druhému <xsd:sequence>. Vzhledem k tomu, že <xsd:element> odpovídá <e1/>, a to nelze určit bez nahlédnutí do <e3/>, model obsahu porušuje pravidlo UPA.

Další kroky

Následující dokument je publikován konsorciem W3C (World Wide Web Consortium) a obsahuje technický popis omezení přisuzování jedinečných částic:

"XML Schéma Část 1: Struktury, Druhé vydání, W3C Upravené doporučené doporučení"

  • Oddíl 3.8.6: Omezení součástí schématu skupiny modelů

  • Příloha H: Analýza omezení přisuzování jedinečných částic (bez normativního)

Pokud chcete dokument zobrazit, navštivte http://www.w3.org/TR/xmlschema-1stránku .

Viz také