如果我无法确认我的教授不会标记它,而我似乎无法完成这项工作,那么任何帮助都会非常感激。我使用xmlvalidation作为我唯一允许根据说明使用的。
<?xml version="1.0"?>
<MikeDawidowski xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=" Company-withErrors.xsd">
<company ORDER="1">
<CompanyName>TestCompany</CompanyName>
<CID>1</CID>
<City>London</City>
<Prov>ON</Prov>
<MaterialSource>
<MaterialBrandName>Leather</MaterialBrandName>
<MaterialIdentification>105</MaterialIdentification>
<AssocCompID>10</AssocCompID>
<MaterialBrandName>Leather2</MaterialBrandName>
<MaterialIdentification>110</MaterialIdentification>
<AssocCompID>15</AssocCompID>
</MaterialSource>
<PhoneNum>5196867766</PhoneNum>
</company>
</MikeDawidowski>
这是XSD
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MikeDawidowski">
<xs:complexType>
<xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:sequence>
<xs:element name="CompanyName" type="xs:string" />
<xs:element name="CID" type="xs:integer" />
<xs:element name="City" type="xs:string" minOccurs = "0"/>
<xs:element name="Prov" type="xs:string" minOccurs = "0"/>
<xs:element name="MaterialSource" maxOccurs="5">
<xs:complexType>
<xs:sequence>
<xs:element name="MaterialBrandName" type="xs:string" />
<xs:element name="MaterialIdentification" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PhoneNum" type="xs:string" minOccurs = "0"/>
</xs:sequence>
<xs:attribute name="ORDER" type="xs:integer" use="optional"/>
</xs:complexType>
</xs:schema>
答案 0 :(得分:0)
在XSD中有两种方式可以说出元素的类型应该是什么,并且你已经将两者混合在一起了。第一种是将类型信息内联,在这种情况下,类型没有名称:
<xs:element name="MikeDawidowski">
<xs:complexType>
<xs:sequence>
<xs:element....
<xs:element....
</xs:sequence>
</xs:complexType>
</xs:element>
第二种方法是定义命名类型并引用它:
<xs:element name="MikeDawidowski" type="myType"/>
<xs:complexType name="myType">
<xs:sequence>
<xs:element....
<xs:element....
</xs:sequence>
</xs:complexType>
你以某种方式设法将所有类型信息从元素声明中排除,但你实际上没有给出类型名称或从元素声明链接到它。