我试图弄清楚这个问题的解决方案,但似乎无法找到它。 这只是一个简单的XSD,XML文件格式。 我一直得到的错误是:错误:元素'联系':不期望这个元素。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"si:noNamespaceSchemaLocation="address.xsd">
<contact>
<name>Hana Song</name>
<phone>82-51-120</phone>
<street>1001 Jungang-daero, Yeonje-gu</street>
<city>Busan</city>
<origin>Republic of Korea, South Korea</origin>
<zip>47545</zip>
</contact>
<contact>
<name>Genji Shimada</name>
<phone>949-955-1380</phone>
<street>1 Blizzard Way</street>
<city>Irvine</city>
<origin>CA, USA</origin>
<zip>92618</zip>
</contact>
<contact>
<name>Jesse McCree</name>
<phone>800-777-2489</phone>
<street>201 W. Marcy St.</street>
<city>Santa Fe</city>
<origin>NM, USA</origin>
<zip>87501</zip>
</contact>
</address>
XSD文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!--definition of simple elements -->
<xs:element name="name" type="xs:string"/>
<xs:element name="phone" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="origin" type="xs:string"/>
<xs:element name="zip" type="xs:string"/>
<!--definition of attributes elements -->
<!--definition of complex elements-->
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element ref="contact"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="contact">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="phone"/>
<xs:element ref="street"/>
<xs:element ref="city"/>
<xs:element ref="origin"/>
<xs:element ref="zip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
您的XML中有多个contact
元素,但Schema只允许一个,因为有属性:
minOccurs
和maxOccurs
。默认情况下,它们等于1.
所以......将模式更改为:
<!--definition of complex elements-->
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element ref="contact" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
P.S。请记住minOccurs =“1”需要至少有一个元素存在。如果根本没有联系人,那么请minOccurs="0"
。
由于“无限XML攻击”的可能性,不建议使用maxOccurs =“unbounded”。
最好将它设置为一些大而实际的maxValue。例如maxOccurs="1000"
。