Bagikan melalui


Batasan atribusi partikel unik

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Di XSD, con mode tenda ls kompleks dibatasi oleh aturan batasan atribusi partikel unik (UPA). Aturan ini mengharuskan setiap elemen dalam dokumen instans secara tidak ambigu dengan tepat satu <xsd:element> atau <xsd:any> partikel dalam kon induknya mode tenda l. Skema apa pun yang berisi jenis dengan con yang berpotensi ambigu mode tenda l ditolak.

Penyebab paling umum ambiguitas adalah <xsd:any> karakter kartubebas dan partikel yang memiliki rentang kemunculan variabel, seperti minOccurs < maxOccurs. Misalnya, con berikut mode tenda l ambigu, karena <e1> elemen dapat cocok dengan <xsd:element> elemen atau <xsd:any> .

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

Con berikut mode tenda l juga ambigu:

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

Meskipun dokumen seperti <root><e1/><e2/><e1/></root> dapat divalidasi secara tidak ambigu, dokumen seperti <root><e1/><e1/></root> tidak dapat, karena tidak jelas mana yang <xsd:element> dimaksud oleh dokumen kedua <e1/> . Meskipun beberapa dokumen dapat divalidasi secara tidak ambigu, skema akan ditolak, karena potensi ambiguitas.

Agar con mode tenda l valid, dimungkinkan untuk memvalidasi instans apa pun secara tidak ambigu tanpa melihat ke depan. Misalnya, pertimbangkan con berikut mode tenda l:

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

Untuk dokumen seperti <root><e1/><e3/></root>, urutannya <e1/><e3/> secara tidak ambigu cocok dengan yang kedua <xsd:sequence>. Namun, karena <xsd:element> yang <e1/> sesuai tidak dapat ditentukan tanpa melihat ke <e3/>depan , con mode tenda l melanggar aturan batasan UPA.

Langkah berikutnya

Dokumen berikut diterbitkan oleh World Wide Web Consortium (W3C) dan berisi deskripsi teknis batasan atribusi partikel unik:

"Skema XML Bagian 1: Struktur Edisi Kedua, Rekomendasi Diedit Yang Diusulkan W3C":

  • Bagian 3.8.6: Batasan pada Komponen Skema Grup Model

  • Lampiran H: Analisis Batasan Atribusi Partikel Unik (non-normatif)

Untuk melihat dokumen, kunjungi http://www.w3.org/TR/xmlschema-1.

Lihat juga