2013-10-25 47 views
0

我有以下XSD文件:XSD驗證 - 尋找一些好的建議

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="a"> 
     <xs:complexType> 
      <xs:attribute name="a1" type="xs:string"/> 
      <xs:element name="b"> 
       <xs:complexType> 
        <xs:attribute name="b1" type="xs:string"/> 
        <xs:element name="c"> 
         <xs:complexType> 
          <xs:sequence maxOccurs="unbounded" minOccurs="0"> 
           <xs:element name="d"> 
            <xs:complexType> 
             <xs:attribute name="d1" type="xs:string"/> 
             <xs:attribute name="d2" type="xs:string"/> 
             <xs:element name="e"> 
              <xs:complexType> 
               <xs:sequence maxOccurs="unbounded" minOccurs="0"> 
                <xs:element name="e1"/> 
                <xs:element name="e2"/> 
                <xs:element name="e3"/> 
                <xs:element name="e4"/> 
               </xs:sequence> 
              </xs:complexType> 
             </xs:element> 
            </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
       </xs:complexType> 
      </xs:element> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

我驗證這個與W3C的一面:xsd validation

,我收到以下異常:

Not valid. 
Error - Line 6, 25: org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 25; s4s-elt-invalid-content.1: The content of '#AnonType_a' is invalid. Element 'element' is invalid, misplaced, or occurs too often. 

我做錯了什麼?

此致敬禮!

+0

請嘗試找到更翔實的主題行。按照定義,每個在StackOverflow上發佈的人都在尋找好的建議。 –

+0

事實上,你是對的邁克爾,我會在我的下列問題中做到這一點! – Leviathan

回答

2

你正在兩個錯誤:

  1. 屬性的定義必須遵循子元素的定義(而不是之前在你的架構)。
  2. <xs:complexType>可能不包含<xs:element>兒童

這是您的模式的糾正變形,應該工作:

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="a"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="b"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="c"> 
       <xs:complexType> 
        <xs:sequence maxOccurs="unbounded" minOccurs="0"> 
        <xs:element name="d"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="e"> 
          <xs:complexType> 
           <xs:sequence maxOccurs="unbounded" minOccurs="0"> 
           <xs:element name="e1"/> 
           <xs:element name="e2"/> 
           <xs:element name="e3"/> 
           <xs:element name="e4"/> 
           </xs:sequence> 
          </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
         <xs:attribute name="d1" type="xs:string"/> 
         <xs:attribute name="d2" type="xs:string"/> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      <xs:attribute name="b1" type="xs:string"/> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
     <xs:attribute name="a1" type="xs:string"/> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

太棒了!並感謝您的解釋! :) – Leviathan