2012-12-02 31 views
2

我目前正在使用一些基本的XS架構東西,但在嘗試驗證我的架構時出現惱人的錯誤。我使用XMLValidation.com,我得到的錯誤是:XML驗證問題:錯誤s4s-elt-must-match

s4s-elt-must-match.1: The content of 'lecturers' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: element. 

然後,我的XSD如下:

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="lecturers"> 
    <xs:element name="lecturer"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="name" type="xs:string" /> 
      <xs:attribute name="title" type="xs:string" /> 
      <xs:attribute name="first" type="xs:string" /> 
      <xs:attribute name="last" type="xs:string" /> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:element name="teaching"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="course" type="xs:string" /> 
      <xs:attribute name="code" type="xs:string" /> 
      <xs:element name="course" type="xs:string" /> 
      <xs:attribute name="code" type="xs:string" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
     <xs:element name="research" type="xs:string"/> 
    </xs:element> 
</xs:element> 
</xs:schema> 

相應的XML文件讀取,如:

<?xml version="1.0"?> 
<lecturers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="lecturers.xsd"> 
    <lecturer> 
    <name title="Professor" first="Peter" last="Quirk" /> 
    <teaching> 
    <course code="CO3070">XML and the Web</course> 
    <course code="CO3300">Web Server Architectures</course> 
    </teaching> 
<research>The application of Web protocols to Biology</research> 
    </lecturer> 
</lecturers> 

任何人有任何想法,爲什麼我的代碼不驗證,我可以做什麼來整理。在此先感謝

回答

1

我得到了以下工作...

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="lecturers"> 
    <xs:complexType> 
    <xs:sequence maxOccurs="unbounded"> 
     <xs:element name="lecturer"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="name"> 
       <xs:complexType> 
       <xs:attribute name="title" type="xs:string" /> 
       <xs:attribute name="first" type="xs:string" /> 
       <xs:attribute name="last" type="xs:string" /> 
       </xs:complexType> 
      </xs:element> <!-- name --> 
      <xs:element name="teaching"> 
       <xs:complexType> 
       <xs:sequence maxOccurs="unbounded"> 
        <xs:element name="course"> 
        <xs:complexType mixed="true"> 
         <xs:attribute name="code" type="xs:string" /> 
        </xs:complexType> 
        </xs:element> <!-- course --> 
       </xs:sequence> 
       </xs:complexType> 
      </xs:element> <!-- teaching --> 
      <xs:element name="research" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> <!-- lecturer --> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> <!-- lecturers --> 
</xs:schema> 
+0

Thanks mate。這是訣竅! – Bic1245

1

講師必須包含複雜類型就像你有其它元素: -

<xs:element name="lecturers"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="lecturer"> 
       <xs:complexType> 
        <xs:sequence> 

...

的錯誤,雖然神祕,但如此說。

0

爲了得到驗證的XML,這個模式將做到這一點。

<xs:element name="teaching"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="course" maxOccurs="unbounded"> 
     <xs:complexType> 
     <xs:simpleContent> 
     <xs:extension base="xs:string"> 
     <xs:attribute name="code" type="xs:string" /> 
     </xs:extension> 
     </xs:simpleContent> 
     </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 
<xs:element name="research" type="xs:string"/>