XSD 与 xs:all 无效

invalid XSD with xs:all

我是 XSD 的初学者,但尽管仔细阅读了规范,但这个还是让我感到难过:

<xs:complexType name="iterator">
    <xs:attribute name="id" type="xs:string" use="required"/>
    <xs:all>
        <xs:element name="name" type="xs:string"/>
        <xs:element name="element" type="iterator-element" maxOccurs="unbounded"/>
    </xs:all>
</xs:complexType>

我正在尝试定义像这样工作的东西:

<iterator id="123">
   <name>Test</name>
   <element>(data)</element>
   <element>(data)</element>
   <element>(data)</element>
</iterator>

在我的应用程序中,我将遍历所有这些元素。

我是语法错误还是概念错误?我应该改用 name 属性吗?我应该把元素包裹在什么东西里吗?为什么 XSD 解析器会这样抱怨:

s4s-elt-invalid-content.1: The content of 'iterator' is invalid. Element 'all' is invalid, misplaced, or occurs too often.

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

        <xs:element name="iterator" type="iter"/>
        <xs:complexType name="iter">
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="element" type="xs:string" maxOccurs="unbounded"/>
            </xs:sequence>
        <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>
</xs:schema>

我改了iterator_element因为你没有解释是什么。可能是 complexType ?

在我测试的所有情况下 https://www.freeformatter.com/xml-validator-xsd.html

这是行不通的,因为您需要在子元素之后声明属性。