2013-04-15 45 views
1

我剛剛在XSD上進行了第一次嘗試。我的xml不會針對我的模式進行驗證

當我嘗試驗證我的XML與我的XSD,我得到的錯誤: 無法找到元素'鏈接'的聲明。

下面我給我的XSD和我的XML的減少版本。我已經嘗試在我的XML中的頂層元素以及每個元素(將XSD更改爲合格)中添加一個名稱空間限定符,並且它沒有幫助。我顯然犯了一個基本的錯誤。由於我是XSD新手,如果您可以在我的XML和/或XSD中包含需要更改的內容,我將非常感激。

XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.stephenwaring.me.uk/android/nestedsettings" 
    xmlns="http://www.stephenwaring.me.uk/android/nestedsettings" 
    elementFormDefault="unqualified"> 
    <xs:element name="linkage"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="preference-screen" maxOccurs="unbounded"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="parent" maxOccurs="unbounded"> 
           <xs:complexType> 
            <xs:sequence> 
             <xs:element name="child" maxOccurs="unbounded"> 
              <xs:complexType> 
               <xs:attribute name="key" type="xs:token" use="required" /> 
               <xs:attribute name="reformat" type="xs:boolean" /> 
              </xs:complexType> 
             </xs:element> 
            </xs:sequence> 
            <xs:attributeGroup ref="keyed" /> 
            <xs:attribute name="preference-screen" type="xs:token" use="required" /> 
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
         <xs:attributeGroup ref="keyed"/> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      <xs:attributeGroup ref="defaults"/> 
     </xs:complexType> 
    </xs:element> 
    <xs:attributeGroup name="defaults"> 
     <xs:attribute name="html" type="xs:boolean" /> 
     <xs:attribute name="prefix" type="xs:string" /> 
     <xs:attribute name="suffix" type="xs:string" /> 
     <xs:attribute name="separator" type="xs:string"/> 
     <xs:attribute name="reformat" type="xs:boolean" /> 
     <xs:attribute name="shaddow" type="xs:boolean" /> 
     <xs:attribute name="child-summary" type="xs:boolean" /> 
     <xs:attribute name="shadow-separator" type="xs:string"/> 
    </xs:attributeGroup> 
    <xs:attributeGroup name="keyed"> 
     <xs:attributeGroup ref="defaults" /> 
     <xs:attribute name="key" type="xs:token" use="required" /> 
    </xs:attributeGroup> 
</xs:schema> 

砍倒XML:

<?xml version="1.0" encoding="UTF-8"?> 
<linkage 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://stevewaring.me.uk/android/nestedsettings nestedsettings.xsd" 
    xmlns="http://www.stevewaring.me.uk"> 
    <preference-screen 
     key="preferences1"> 
     <parent 
      key="prefFruit" 
      preference-screen="preferences2"> 
      <child key="prefFruit1"/> 
      <child key="prefFruit2"/> 
     </parent> 
    </preference-screen> 
</linkage> 

回答

1

你的XSD定義http://www.stephenwaring.me.uk/android/nestedsettings元件,而你的文檔元素是http://www.stevewaring.me.uk。讓他們以某種方式同意,並且應該照顧你所犯的錯誤。

我已經添加了一個固定的XML,還有另一個與使用非限定元素有關的問題。

<?xml version="1.0" encoding="UTF-8"?> 
<linkage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.stephenwaring.me.uk/android/nestedsettings nestedsettings.xsd" xmlns="http://www.stephenwaring.me.uk/android/nestedsettings"> 
    <preference-screen xmlns="" key="preferences1"> 
     <parent key="prefFruit" preference-screen="preferences2"> 
      <child key="prefFruit1"/> 
      <child key="prefFruit2"/> 
     </parent> 
    </preference-screen> 
</linkage> 
+0

非常感謝,解決了這個問題。 –