一个元素多次

时间:2014-09-11 12:12:51

标签: xml xsd

我希望能够多次指定一个元素,在我的情况下Param。 这是XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Abc">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Def" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:all>
                            <!-- ... other elements ... -->
                            <xs:element name="Param" minOccurs="0" maxOccurs="unbounded"> <!-- Using unbounded is not allowed here -->
                                <xs:complexType>
                                    <xs:attribute name="Name"/>
                                    <xs:attribute name="Value"/>
                                </xs:complexType>
                            </xs:element>
                            <!-- ... other elements ... -->
                        </xs:all>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

这是相应的XML:

<Abc xsi:noNamespaceSchemaLocation="SourcesSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Def>
        <Param Name="one" Value="blue"/>
        <Param Name="two" Value="yellow"/>
        <Param Name="three" Value="green"/>
    </Def >
</Abc>

尝试这个,我得到以下异常:

Cos-all-limited.2: The {max Occurs} Of An Element In An 'all' Model Group Must Be 0 Or 1. The Value '-1' For Element 'Param' Is Invalid.

1 个答案:

答案 0 :(得分:0)

xsd:all只允许0或1次出现任何子节点。

您可以使用xsd :: sequence代替..但要知道在这种情况下,它们中的任何元素都按照它们必须出现在xml中的顺序定义。