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
这是行不通的,因为您需要在子元素之后声明属性。
我是 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
这是行不通的,因为您需要在子元素之后声明属性。