我尝试针对xsd文件验证xml文件 但我得到一个错误,我不知道为什么 有没有人有想法?
我的xsd文件:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="call"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="cl">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="arguments"/>
<xs:element ref="outputs"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="module" type="xs:string" use="required"/>
<xs:attribute name="title" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref=""/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
xs:element ref=""/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
我收到了无效的文件&#39;而且我不知道问题出在哪里,任何人都可以帮助我吗? 谢谢
答案 0 :(得分:1)
您的实例无效,因为根据您的架构,您的choice
元素中只能有arguments
或options
call
个<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="arguments"/>
<xs:element ref="outputs"/>
</xs:choice>
:
<call name="name" module="module" title="title">
<outputs>
<output name="name"/>
</outputs>
</call>
所以,这是有效的:
<call name="name" module="module" title="title">
<arguments>
<argument name="NAME" value="value"/>
</arguments>
</call>
这是有效的:
<call name="name" module="module" title="title">
<arguments>
<argument name="NAME" value="value"/>
</arguments>
<outputs>
<output name="name"/>
</outputs>
</call>
但事实并非如此,因为对一个元素的最大值和最小值存在约束:
choice
您可能希望将sequence
替换为maxOccurs
或增加minOccurs
/ {{1}}值(取决于您希望拥有的结构)。