在 complexType 中有多个元素

Having multiple elements in complexType

所以我想为我的 XML 文件编写一个 XML 架构。我现在遇到的问题是我有一个元素,我想要其中的多个元素,但没有声明那个数量。这样我就可以使用程序添加或删除元素以保持文件动态。

我对 xml 和 xml 架构还很陌生,所以我现在不知道从哪里开始。 这是我到目前为止得到的 - 它只允许我一次吃盘子,但如前所述,我想要多个没有特定数量的。

Schema:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="menu">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="starter">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="dish" type="dish"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
...
</xsd:schema>

XML:
<menu>
<starter>
    <dish>
        <name> 
            Salad
        </name>
        <price>
            4.00
        </price>
    </dish>
    <dish>
        <name>
            Bread
        </name>
        <price>
            2.50
        </price>
    </dish>
</starter>

我最后的目标是能够根据需要添加和删除尽可能多的菜品标签。但是验证器说,在第一个之后没有 child。

提前致谢!

我找到答案了!

如果您使用 choice 标签并将 maxOccurs 属性设置为无限制,则可以使用无限标签。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="menu">
<xsd:complexType>
    <xsd:choice maxOccurs="unbounded">
        <xsd:element name="starter">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="dish" type="dish"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:choice>
</xsd:complexType>
...
</xsd:schema>