我有一个xml和xsd文件,都能正确验证(在 http:/xsdvalidation.utilities-online.info). 然而,xml并没有对xsd进行验证。我认为这是因为我在xsd中错误地嵌套了 complexType元素,而不是xml。复杂类型元素的外部元素 people
似乎是导致问题的原因... 这里是xml。
<?xml version = "1.0"?>
<people>
<person>
<firstname>Joe</firstname>
<lastname>Schmoe</lastname>
</person>
<person>
<firstname>Cletus</firstname>
<lastname>Jenkins</lastname>
</person>
</people>
...这里是xsd。
<?xml version = "1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name = "people">
<xs:complexType>
<xs:sequence>
<xs:element name = "person">
<xs:complexType>
<xs:sequence>
<xs:element name = "firstname" type = "xs:string" />
<xs:element name = "lastname" type = "xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
添加 maxOccurs="unbounded"
到名为 "人 "的元素。它是一个或多个person元素的序列。
注意:将maxOccurs写成小写字母,而不是小写字母。
对你的XSD试试这个。
<?xml version = "1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="people" type="people"/>
<xs:complexType name="people">
<xs:sequence>
<xs:element name="person" type="person" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="person">
<xs:sequence>
<xs:element name="firstname" type="xs:string" maxOccurs="1" minOccurs="1"/>
<xs:element name="lastname" type="xs:string" maxOccurs="1" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:schema>