2010-11-18 4 views
1

Est-ce que quelqu'un sait quoi que ce soit au sujet de la soi-disant contrainte « d'attribution unique de particules » dans le schéma XML et pourquoi il pourrait être violée par ceci:XML Schema unique de particules Attribution Constraint

<xs:complexType name="SMIL.switch.content"> 
    <xs:sequence> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element ref="smil:metadata"/> 
     <xs:element ref="SMIL.switch-control"/> 
     </xs:choice> 
     <xs:choice> 
     <xs:choice> 
      <xs:sequence maxOccurs="unbounded"> 
      <xs:choice maxOccurs="unbounded"> 
       <xs:element ref="SMIL.timecontainer.class"/> 
       <xs:element ref="SMIL.media-object"/> 
      </xs:choice> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
       <xs:element ref="smil:metadata"/> 
       <xs:element ref="SMIL.switch-control"/> 
      </xs:choice> 
      </xs:sequence> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element ref="smil:metadata"/> 
      <xs:element ref="SMIL.switch-control"/> 
      </xs:choice> 
     </xs:choice> 
     <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
      <xs:element ref="smil:layout"/> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element ref="smil:metadata"/> 
      <xs:element ref="SMIL.switch-control"/> 
      </xs:choice> 
     </xs:sequence> 
     </xs:choice> 
    </xs:sequence> 
    </xs:complexType> 

L'erreur de XJC en cours d'exécution est la suivante :

[eRREUR] cos-nonambig: "http://www.w3.org/ns/SMIL ": les métadonnées et" http://www.w3.org/ns/SMIL": les métadonnées (ou éléments de leur groupe de substitution) violer "unique particules attribution". Lors de la validation de ce schéma, l'ambiguïté serait créée pour ces deux particules.

Le schéma est généré à partir de la DTD SMIL 3.0 en utilisant trang.

+0

Trang est pas toujours parfaite et XSD a quelques limitations :(Pouvez-vous envoyer la partie pertinente de la DTD originale? Je comprends pourquoi l'erreur se produit mais l'original pourrait être utile pour le résoudre! –

Répondre

4

Si la validation rencontre un élément smil: metadata, elle ne peut pas savoir si elle correspond à la partie de premier choix ou à la seconde partie de la séquence externe. Et XML Schema ne permet pas cette ambiguïté.

Voir l'annexe H de la recommandation XML Schema, partie 1.