2013-05-15 98 views
1

現在我驗證的XML這樣的:xml元素驗證針對xsd - 如何定義無序元素?

<?xml version="1.0" encoding="utf-8"?> 
    <all> 
    <allElem> 
     <a>12345</a>   
     <b>2</b>    
     <c>3</c>     
     <d>        
     <d1>4</d1>    
     <d2>5</d2>    
     <d3>6</d3>   
     </d> 
     <d>        
     <d1>7</d1>    
     <d2>8</d2>    
     <d3>9</d3> 
     </d>      
    </allElem> 
</all> 

我寫了一個簡單XSD這樣的:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="all"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="allElem" maxOccurs="1"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="a" type="xs:string"/> 
      <xs:element name="b" type="xs:string"/> 
      <xs:element name="c" type="xs:string"/> 
      <xs:element name="d" minOccurs="1" maxOccurs="unbounded"> 
       <xs:complexType>  
        <xs:sequence> 
        <xs:element name="d1" type="xs:string"/> 
        <xs:element name="d2" type="xs:string"/> 
        <xs:element name="d3" type="xs:string"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
    </xs:element>  

</xs:schema> 

我的問題是:我使用xs:sequence,但我不希望我的xml元素需要排序,我不能使用xs:all,因爲它只允許元素髮生一次max,但是我的xml元素「d」應該能夠出現多次。在xsd中有解決方案,我可以定義一個無序元素出現一次或出現多次? 換句話說,我想知道是否有這樣一個xsd標籤,可以定義可以出現多次的無序元素。

+0

我建議刪除java標記 –

回答

0

在XSD 1.0:

  • 可以使用的xs:全部到位的xs:序列,但隨後只能出現的每個元素(0或1)次。

  • 可以使用的xs:選擇一個minOccurs = 0的maxOccurs =無界的,但隨後的每個元素可以出現任意次數

在XSD 1.1:

  • 可以使用XS :全部並指定每個元素的最小/最大基數(這是你要求的)

XSD 1.1目前在Xerces(測試版)和撒克遜(當前版本Saxon-EE 9.5)。

+0

XSD1.1中的「最小/最大基數」是什麼意思?他們是「minOccurs = 0 maxOccurs =無界」?你可以給元素屬性名稱嗎? –

+0

是的,我指的是minOccurs和maxOccurs。 –