XML文件无法验证XSD

时间:2017-05-26 07:17:39

标签: xml xsd-validation

如果我无法确认我的教授不会标记它,而我似乎无法完成这项工作,那么任何帮助都会非常感激。我使用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>

1 个答案:

答案 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>

你以某种方式设法将所有类型信息从元素声明中排除,但你实际上没有给出类型名称或从元素声明链接到它。