为什么以下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架构中没有受过良好教育,所以我可能错过了一些简单的...
答案 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>