2013-01-09 66 views
2

我一直在通過xsd進行XML驗證,但我仍然是新手。我嘗試驗證這個XML,它彈出我這個錯誤:cvc-elt.1:無法找到元素'customers'的聲明。 [5]XSD XML驗證:無法找到元素的聲明

<?xml version="1.0"?> 

<customers xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://w3schools.com requested_customer.xsd"> 

<customer name="Vladimir Putin" address="St. Petersburg, wadim street 23, Russia"/> 
</customers> 

和XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <xs:element name="customers"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="customer"> 
      <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:string"> 
       <xs:attribute type="xs:string" name="name"/> 
       <xs:attribute type="xs:string" name="address"/> 
       </xs:extension> 
      </xs:simpleContent> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

感謝您的幫助!

+0

你可以發佈XSD的內容嗎? –

+0

在這裏,你去!它可能來自XSD? – Js30

+0

xsi:schemaLocation =「錯誤NAMESPACE requested_customers.xsd」 - 您的模式應該具有targetNamespace屬性。此targetNamespace的值應該是您在schemaLocation值中使用的值。 –

回答

4

首先,您的XML不會爲其內容使用XML名稱空間,所以要引用沒有目標名稱空間的XSD文件位置,您應該使用xsi:noNamespaceSchemaLocation屬性。

其次,您必須確保XSD文件的位置已知且可由驗證程序訪問。

您的XML/XSD組合是完全有效的。

+0

你好,我被要求做一個XML課程,其中有命名空間,我需要定義一個。這很簡單嗎?謝謝!! – Js30

+0

關於'xsi:noNamespaceSchemaLocation'的更多信息,請參見本[W3Schools頁面](http://www.w3schools.com/schema/schema_example.asp)。 – DavidRR

+1

@ user1959493,它可能很容易啓動。假設你想添加一個名字空間'urn:tempuri-org'到你迄今爲止所做的事情。所有你需要做的就是i)爲你的XSD文件xs:schema元素添加targetNamespace =「urn:tempuri-org」xmlns =「urn:tempuri-org」屬性,ii)添加xmlns =「urn:tempuri-org」屬性添加到您的'customers'元素,iii)用xsi:schemaLocation屬性值中的'urn:tempuri-org'替換'http:// w3schools.com'。現在,命名空間可能會令人困惑,並且考慮到您遇到的錯誤,我建議您花一點時間閱讀一些XML命名空間文章... –

1

另外,如果你的目的是讓內customers多個customer,你會想改變:

<xs:element name="customer"> 

要:

<xs:element name="customer" maxOccurs="unbounded"> 

當然,maxOccurs也可以是有限的值,如100。 (和minOccurs)都默認爲1See)。 minOccurs也可以是0

相關問題