xs:all无效的XSD

时间:2019-07-13 08:35:55

标签: xml xsd

我是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:“迭代器”的内容无效。   元素“全部”无效,放错位置或发生的次数过多。

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上进行测试

这不起作用,因为您需要在子元素之后声明属性。