XML模式中的唯一粒子归因违规

时间:2015-01-21 14:45:36

标签: xml xsd

为什么以下XML在验证时会出现UPA违规行为?

 <xs:element name='Information'>
  <xs:complexType>
   <xs:choice>
    <xs:element ref='ID'/> 
    <xs:sequence>
     <xs:element ref='ID'/>     
     <xs:element ref='Name'/>   
    </xs:sequence> 
   </xs:choice>    
  </xs:complexType>
 </xs:element>

 <xs:element name='ID' type="xs:integer"/> 
 <xs:element name='Name' type="xs:string"/>

这不是简单地声明信息是整数OR和整数以及字符串吗?消极模糊在哪里?在xml架构中没有受过良好教育,所以我可能错过了一些简单的...

1 个答案:

答案 0 :(得分:2)

这是不明确的,因为当解析器&#34;来了#34;对于<ID>元素,它无法选择适当的内容模型(此处仅<ID>,或<ID>然后<Name>),而不是&#34;进一步查看&#34 ;在文件中。

您需要使用这样定义的内容模型(它与您想要的内容完全等效):

 <xs:element name='Information'>
  <xs:complexType>
    <xs:sequence>
      <xs:element ref='ID'/> 
      <xs:element ref='Name' minOccurs="0"/>   
    </xs:sequence> 
   </xs:complexType>
 </xs:element>