我是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>
在我的应用程序中,我将遍历所有这些元素。
我的语法或概念上的错误吗?我应该改为命名属性吗?我应该将元素包装在某些东西中吗?为什么XSD解析器会抱怨:
s4s-elt-invalid-content.1:“迭代器”的内容无效。 元素“全部”无效,放错位置或发生的次数过多。
答案 0 :(得分:0)
<?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上进行测试
这不起作用,因为您需要在子元素之后声明属性。