当我运行我的代码时,它给了我这个错误
[ s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'.]
这是我的架构:
<xs:element name="parameters" maxOccurs="1" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element ref="p ?"/>
</xs:all>
</xs:complexType>
</xs:element>
1 回答
<xs:element>
可以在顶级声明(低于xs:schema
),但它不能有minOccurs
或maxOccurs
,因为它不能只有一个元素,如果不是,则该信息指的是父元素的上下文 . 这是合法的:但这不是:
您可以引用组中的顶级
xs:element
,例如xs:sequence
. 在这里,您可以使用这些属性,因为现在您有一个上下文(此组中允许的上下文数量) . 这是合法的:这里
<parent>
是<parameters>
出现的上下文,所以你可以说它在那里被允许了多少次 .<parameters>
的定义是全局的,您使用ref
属性来引用它 .如果您永远不需要重用
parameters
或者如果您永远不会以root身份使用parameters
,那么您不需要它在顶级并且可以将其嵌套在parent
定义中 . 在这种情况下,您可以将name
属性与minOccurs
和maxOccurs
一起使用 .您还可以参考顶级类型 . 重用,扩展和限制类型更常见,因此这也是定义元素的有效(和推荐)方法: