鉴于:
<?xml version="1.0" encoding="utf-8"?>
<Clients xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Client>
<ClientCode>400057</ClientCode>
<Notes>
<Note>
<Text>This is a note</Text>
</Note>
</Notes>
</Client>
<Client>
<ClientCode>101134</ClientCode>
<Notes>
<Note>
<Text>This is a note too</Text>
</Note>
</Notes>
</Client>
</Clients>
Schema XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="qualified"
version="1.0">
<xsd:element name="Clients">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Client" maxOccurs="3">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ClientCode" type="xsd:string"/>
<xsd:element name="Notes">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Note" nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Text"
nillable="true"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
客户端是否需要maxoccurs值以允许XML文件中的多个客户端。我能找到的每个验证器都会验证一个包含多个客户端的XML,但是没有提到maxoccurs。
答案 0 :(得分:1)
架构中缺少某些内容;您已将Clients
定义为<xsd:element name="Clients" />
。它没有输入,因此它被低估它可以有任何内容(xs:anyType)。将其更改为:
<xsd:element name="Clients">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="FileDate"/>
<xsd:element ref="Client"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
并且您会看到一些错误显示,因为验证程序找到了多个Client
。
如果未指定任何内容,则应将minOccurs
和maxOccurs
属性设置为1。
要允许多个Client
子元素,您可以按如下方式更改声明:
<xsd:element name="Clients">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="FileDate"/>
<xsd:element ref="Client" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>