XSD架构错误:复杂类型定义'anonymous'的内容模型在多选时是不明确的

时间:2014-04-18 11:33:50

标签: xml xsd xsd-validation

XSD代码:获取错误 - 复杂类型定义'anonymous'的内容模型含糊不清

<xs:element name="data">
            <xs:complexType>
                <xs:choice>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="A"/>
                        <xs:element name="B"/>
                        <xs:element name="C"/>
                        <xs:element name="D"/>
                        <xs:element name="EE"/>
                    </xs:choice>
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="A"/>
                        <xs:element name="B"/>
                        <xs:element name="C"/>
                        <xs:element name="D"/>
                        <xs:element name="FF"/>
                    </xs:choice>
                </xs:choice>
            </xs:complexType>
        </xs:element>

1 个答案:

答案 0 :(得分:1)

<xs:choice>在众多中选择一个。你有嵌套的选择。解析器抱怨存在歧义,因为您在neste选项中声明了重复元素,违反了Unique Particle Attribution约束。

示例:如果第一个嵌套choice选择A,第二个嵌套选择A,则您的外部choice会出现这种非法情况:

<xs:choice>
    <xs:element name="A"/>
    <xs:element name="A"/>
</xs:choice>

可以一个嵌套选项并接受多个A元素,但不能接受两个相同的元素声明。

如果替换choice的外部sequence,您的代码将有效。

如果您在问题中添加更多详细信息,可以改进此答案,以向您展示更好的选择。