2017-05-26 98 views
0

如果我不能使其驗證我的教授不會標記它,我似乎無法做到這一點,任何幫助非常感謝。我使用xmlvalidation作爲我允許根據說明使用的唯一一個。XML文件不會驗證到XSD

<?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

您能否確認XSD文件名是'Company-withErrors.xsd',並且它位於與XML相同的文件夾中?注意:在'xsi:noNamespaceSchemaLocation'開頭有一個空格字符。 –

+0

@beckyang是啊,我只是拿出空間,並確保在同一個文件夾中的專有名稱,當我去驗證我得到這些錯誤:XML文檔中的錯誤: \t 22: cvc-複雜類型2.1:元素'MikeDawidowski'必須沒有字符或元素信息項[子項],因爲類型的內容類型爲空。 文件xml架構中的錯誤: \t 13: s4s-att-must-appear:屬性'name'必須出現在元素'complexType'中。 –

回答

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> 

你已經設法將所有的類型信息從元素聲明中提取出來,但是你沒有真正給出這個類型的名字或者從元素聲明中鏈接到它。