XML Schema唯一粒子归因约束

时间:2010-11-18 09:39:44

标签: xml schema jaxb xjc

有没有人知道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生成模式。

1 个答案:

答案 0 :(得分:4)

如果验证会遇到smil:metadata元素,则无法知道它是匹配外部序列的第一选择部分还是第二选择部分。而XML Schema不允许这种含糊不清。

参见XML Schema Recommendation的附录H,第1部分。