关于使用minOccurs& XML文件中的maxOccurs

时间:2014-01-28 11:05:30

标签: xml minoccurs

我想有这样的行为:一个复杂的元素有一些元素(所以它不包含一个序列)但是这些元素中的一些已经定义了“minoccurs”和/或“maxoccurs”。 我试图建立这样一个文件,它看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="nom_site">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:length value="3" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="nom_type">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:length value="2" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>

<xs:element name="sites">
    <xs:complexType>
        <xs:all>
            <xs:element name="site">
                <xs:complexType>
                    <xs:all>
                        <xs:element ref="nom_site"></xs:element>
                        <xs:element name="délai" type="xs:int"></xs:element>
                        <xs:element name="expéditeur" type="xs:string"></xs:element>
                        <xs:element name="message" type="xs:string"></xs:element>

                        <xs:element name="types" minOccurs="0" maxOccurs="1">
                            <xs:complexType>

                                <xs:all>
                                    <xs:element name="type">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element ref="nom_type"></xs:element>
                                                <xs:element name="message" type="xs:string"></xs:element>
                                                <xs:element name="libellés" minOccurs="0"
                                                    maxOccurs="1">
                                                    <xs:complexType>
                                                        <xs:all>
                                                            <xs:element name="libellé">
                                                                <xs:complexType>
                                                                    <xs:all>
                                                                        <xs:element name="nom_lib" type="xs:string"></xs:element>
                                                                        <xs:element name="message" type="xs:string"></xs:element>
                                                                    </xs:all>
                                                                </xs:complexType>
                                                            </xs:element>
                                                        </xs:all>
                                                    </xs:complexType>
                                                </xs:element>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>

                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>
</xs:element>
</xs:schema>

但是eclipse引发了一个错误:在“all”项下,基数只能是“0”或“1”...

如果我的元素不包含“序列”或“全部”,还有其他可能吗?

感谢,

奥利弗

2 个答案:

答案 0 :(得分:0)

我已经将它加载到xml间谍中,并且它是有效的并且根据它形成良好。看不到任何特殊问题。

生成以下样本:

<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2013 rel. 2 sp2 (http://www.altova.com)-->
<sites xsi:noNamespaceSchemaLocation="test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <site>
        <nom_site>aaa</nom_site>
        <délai>0</délai>
        <expéditeur>String</expéditeur>
        <message>String</message>
        <types>
            <type>
                <nom_type>aa</nom_type>
                <message>String</message>
                <libellés>
                    <libellé>
                        <nom_lib>String</nom_lib>
                        <message>String</message>
                    </libellé>
                </libellés>
            </type>
        </types>
    </site>
</sites>

因此,eclipse的一些问题或者你使用xsd的方式可能是什么?

答案 1 :(得分:0)

好的,解决了:

<xs:element name="sites">
<xs:complexType>
    <xs:sequence>
        <xs:element name="site" minOccurs="0" maxOccurs="unbounded">

我不明白我的XSD文件通过你的应用程序。