2013-06-18 49 views
21

我試圖解決這個問題,但無法理解這個錯誤的根源:找到無效的內容從元素'國家'開始。一個「{}國」有望。行「10」列「14」

Invalid Content Was Found Starting With Element 'country'. One Of '{country}' Is Expected.. Line '10', Column '14'

這裏是我的XML:

<?xml version="1.0"?> 
<!--DTD file reference--> 
<!--<!DOCTYPE countries SYSTEM "http://localhost:8080/ajaxprac/file.dtd">--> 

<!--DTD file reference--> 
<!----> 
<countries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="http://localhost:8080/ajaxprac" 
      xsi:schemaLocation="http://localhost:8080/ajaxprac fileSchema.xsd"> 
    <country> 
     <name>pakistan</name> 
     <cities> 
      <city>Kassowal</city> 
      <city>Faisalabad</city> 
      <city>Multan</city> 
     </cities> 
    </country> 
    <country> 
     <name>india</name> 
     <cities> 
      <city>Agra</city> 
      <city>Amritsar</city> 
      <city>Ayodhya</city> 
     </cities> 
    </country> 
</countries> 

和XSD文件是這樣的:

<?xml version="1.0"?> 
<!-- 
To change this template, choose Tools | Templates 
and open the template in the editor. 
--> 

<xs:schema version="1.0" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://localhost:8080/ajaxprac" 
      xmlns="http://localhost:8080/ajaxprac"> 

    <xs:element name="countries" type="countriesType"/> 
    <xs:element name="name" type="xs:string"/> 
    <xs:element name="city" type="xs:string"/> 

    <xs:complexType name="countriesType"> 
     <xs:sequence> 
      <xs:element name="country" type="countryType"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="countryType"> 
     <xs:sequence> 
      <xs:element ref="name"/> 
      <xs:element name="cities" type="citiesType"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="citiesType"> 
     <xs:sequence> 
      <xs:element ref="city"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

回答

33

書面,你的架構預計, 「全球性」 countriesnamecity元素位於http://localhost:8080/ajaxprac名稱空間中,但「本地」元素(在complexType內聲明的元素,即countrycities)位於名稱空間中。你可能想添加elementFormDefault="qualified",即

<xs:schema version="1.0" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://localhost:8080/ajaxprac" 
      xmlns="http://localhost:8080/ajaxprac" 
      elementFormDefault="qualified"> 

其應用targetNamespace到本地,乃至全球,元素聲明。

+0

謝謝伊恩羅伯茨:-)。我爲這個問題浪費了我兩天的時間,你的幫助解決了我的問題。 elementFormDefault =「qualified」缺失:-p – nwzhaider

+2

謝謝,你救了我的一天。現在我可以下班回家了。 :) –

+0

很難相信這個錯誤信息是如何無用的。無論如何,你的提示是正確的 - 我有一個「全局」周圍的標籤與xmlns =沒有前綴。爲全局標籤和它的xmlns和viola添加一個前綴,解決了問題。 – rogerdpack

相關問題