Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No XSD, modelos de conteúdo complexos são restringidos pela regra de atribuição de partículas exclusiva (UPA). Essa regra exige que cada elemento em um documento de instância corresponda de forma inequívoca a exatamente uma <xsd:element> ou <xsd:any> partícula no modelo de conteúdo de seu pai. Qualquer esquema que contenha um tipo com um modelo de conteúdo potencialmente ambíguo é rejeitado.
As causas mais comuns de ambiguidade são <xsd:any> caracteres curinga e partículas que têm intervalos de ocorrência variável, como minOccurs < maxOccurs. Por exemplo, o modelo de conteúdo a seguir é ambíguo, pois um elemento <e1> poderia corresponder tanto ao elemento <xsd:element> quanto ao elemento <xsd:any>.
<xsd:element name="root">
<xsd:complexType>
<xsd:choice>
<xsd:element name="e1"/>
<xsd:any namespace="##any"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
O seguinte modelo de conteúdo também é ambíguo:
<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>
Embora um documento como <root><e1/><e2/><e1/></root> possa ser validado de forma inequívoca, um documento como <root><e1/><e1/></root> não pode, porque não está claro ao qual <xsd:element> o segundo <e1/> corresponde. Embora alguns documentos possam ser validados de forma inequívoca, o esquema será rejeitado devido ao potencial de ambiguidade.
Observe que, para que um modelo de conteúdo seja válido, deve ser possível validar qualquer instância de forma inequívoca sem olhar para frente. Por exemplo, considere o seguinte modelo de conteúdo:
<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>
Para um documento como <root><e1/><e3/></root>, a sequência <e1/><e3/> corresponde de forma inequívoca ao segundo <xsd:sequence>. No entanto, como o <xsd:element> ao qual <e1/> corresponde não se pode determinar sem olhar à frente para <e3/>, o modelo de conteúdo viola a regra de constraint UPA.
Encontrando mais informações
O documento a seguir é publicado pelo W3C (World Wide Web Consortium) e contém a descrição técnica da restrição de atribuição de partícula exclusiva:
"Esquema XML parte 1: estruturas segunda edição, recomendação editada proposta pelo W3C":
Seção 3.8.6: Restrições em componentes de esquema de grupo de modelos
Apêndice H: Análise da restrição de atribuição de partícula exclusiva (não normativa)
Para ver o documento, visite http://www.w3.org/TR/xmlschema-1.