2016-12-05 162 views
1

您好,我還是比較陌生的XML,雖然我曾考慮過這個問題,但我發現的答案與我的問題不太吻合。當我驗證這個XML它出現了錯誤「無法找到元素'網站的聲明'」。我似乎無法弄清楚究竟發生了什麼,我很好奇,如果有人能夠幫助。XML無法找到元素的聲明

XML低於

<sites xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsi="http://example.com/weekendfunsnacks/site" 
     xsi:schemaLocation="http://example.com/weekendfunsnacks/site sites.xsd"> 

    <xs:import namespace="http://sitemaps.org/schemas/sitemap/0.9" 
     schemaLocation="http://sitemaps.org/schemas/sitemap/0.9sitemap.xsd" /> 

XSD

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:cc="http://example.com/weekendfunsnacks/sites" 
xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9" 
targetNamespace="http://example.com/weekendfunsnacks/sites" 
elementFormDefault="qualified" attributeFormDefault="unqualified"> 

<xs:element name="sites"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="site" maxOccurs="unbounded" minOccurs="0"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element type="xs:string" name="name"/> 
       <xs:element type="xs:byte" name="totalPages"/> 
       </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

感謝您的幫助!

回答

0

你有幾個問題:

  • sites不被識別,因爲架構聲明elementFormDefault="qualified" - 這意味着,在架構元素是架構的目標命名空間。 <sites>聲明全局命名空間中的元素 - <sites><prefix:sites>不同元素。創建一個名稱空間前綴並使用它來限定實例文檔中的<sites>元素以修復此錯誤。
  • <sites>未關閉 - 這是不正確的XML,假設這是您的整個文檔。

在回答你的後續評論: <xs:sites>是不正確的,因爲前綴xs被宣佈爲http://www.w3.org/2001/XMLSchema-instance前綴。 <sites>不在此名稱空間中 - 它位於http://example.com/weekendfunsnacks/sites中。因此,要添加一個新的名稱空間前綴,請將一個屬性xmlns:prefix="http://example.com/weekendfunsnacks/sites"添加到sites元素,然後在sites元素上使用前綴

+0

你好,感謝您的輸入!我已經修復了一些關於代碼的事情。我給了''一個前綴。雖然當我給出前綴時,它給了我一個錯誤,指出「元素」xs:sites「的前綴」xs「沒有綁定,是因爲我給了它」xs「前綴嗎?我被告知 」In sites.xml文件中,向根網站元素添加一個名稱空間聲明,將xs前綴與XML Schema名稱空間的URI相關聯。 「這樣做會不對? 對不起,如果這似乎是添加的信息或作爲一個無關的問題 –

相關問題