有没有人知道xml架构中所谓的“独特粒子归因”约束以及为什么它可能会被违反:
<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>
运行XJC的错误如下:
[错误] cos-nonambig:“http://www.w3.org/ns/SMIL”:元数据和“http://www.w3.org/ns/SMIL”:元数据(或元素) 来自他们的替代组)违反了“独特粒子归因”。在针对此架构的验证期间,模糊性 将为这两个粒子创建。
使用trang从SMIL 3.0 DTD生成模式。
答案 0 :(得分:4)
如果验证会遇到smil:metadata元素,则无法知道它是匹配外部序列的第一选择部分还是第二选择部分。而XML Schema不允许这种含糊不清。
参见XML Schema Recommendation的附录H,第1部分。