2013-05-27 96 views
2

當在驗證器站點上載時,顯示以下錯誤: 1)s4s-elt-must-match.1:'pizza'的內容必須匹配(註釋?,(simpleType | complexType) ?,(unique | key | keyref)*))。發現問題始於:complexType。 2)cvc-complex-type.2.4.a:以元素'name'開始找到無效的內容。預計會有'{pizza}'之一。XML和XML Schema驗證

代碼如下: XML:

<?xml version="1.0"?> 
<pizzamenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="schemasnippet.xsd"> 
    <pizza id = "0011"/> 
    <name> Tal Fenek </name> 
    <price> 9.95 </price> 
<description>The application of Web protocols to Biology</description> 

</pizzamenu> 

模式:

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="pizzamenu"> 
    <xs:complexType> 
    <xs:sequence maxOccurs="unbounded"> 
     <xs:element name="pizza"> 
     <xs:complexType> 
       <xs:attribute name="id" type="xs:string" /> 

       </xs:complexType> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="name"> 

      </xs:element> <!-- name --> 
      <xs:element name="price"> 

      </xs:element> <!-- price --> 
      <xs:element name="description"> 
      </xs:element> <!-- description --> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> <!-- pizza --> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> <!-- pizzamenu --> 
</xs:schema> 

請幫

回答

1

你似乎在你的架構和你的XML這兩個問題。

您的架構似乎試圖指定名稱,價格和描述標籤必須包含在披薩標籤內。在你的XML中,他們不是。

最有可能的XML應該是更象:

<?xml version="1.0"?> 
<pizzamenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="schemasnippet.xsd"> 
    <pizza id = "0011"> 
     <name> Tal Fenek </name> 
     <price> 9.95 </price> 
     <description>The application of Web protocols to Biology</description> 
    </pizza> 
</pizzamenu> 

但是你的架構使用兩個<xs:complexType>標籤來定義一個類型,它不能正常工作。一個<xs:complexType>可用於定義<pizza>標記的屬性和內容,只要這些屬性放在最後。這意味着你的方案應該是這樣的:

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="pizzamenu"> 
     <xs:complexType > 
      <xs:sequence maxOccurs="unbounded"> 
       <xs:element name="pizza"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="name"> 

          </xs:element> <!-- name --> 
          <xs:element name="price"> 

          </xs:element> <!-- price --> 
          <xs:element name="description"> 
          </xs:element> <!-- description --> 
         </xs:sequence> 
         <xs:attribute name="id" type="xs:string" /> 
        </xs:complexType> 
       </xs:element> <!-- pizza --> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> <!-- pizzamenu --> 
</xs:schema> 
+0

我仍然得到同樣的錯誤=/XML是有效的,該模式似乎是問題... – user2410659

+0

確實存在也是一個模式問題。看到我編輯的答案。 –

+0

非常感謝你:) – user2410659