2014-05-22 84 views
0

此XSD片段是否有效?XSD嵌套序列標籤。這是有效的XSD嗎?

<xs:complexType name="ShippingPointStructure"> 
    <xs:sequence> 
     <xs:element minOccurs="0" maxOccurs="unbounded" ref="DeliveryID" /> 
     <xs:element minOccurs="0" ref="DeliveryDate" /> 
     <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
     <xs:element minOccurs="0" ref="WarehouseID" /> 
     <xs:element minOccurs="0" ref="LocationID" /> 
     </xs:sequence> 
     <xs:element minOccurs="0" ref="Address" /> 
    </xs:sequence> 
    </xs:complexType> 

我從來沒有見過一個序列節點作爲另一個序列節點的直接子節點。我GOOGLE了一段時間,但無法找到答案。 XSD文件已經通過一些在線驗證器運行成功 - 但我懷疑他們只是檢查XML的有效性。

任何人都可以提出什麼樣的XML可能需要看起來像?也許這樣的事情:

<ShippingPointStructure> 
    <DeliveryID></DeliveryID> 
    <DeliveryDate></DeliveryDate> 

    <WarehouseID></WarehouseID> 
    <LocationID></LocationID> 
    <WarehouseID></WarehouseID> 
    <LocationID></LocationID> 
    <WarehouseID></WarehouseID> 
    <LocationID></LocationID> 

    <Address></Address> 
</ShippingPointStructure> 

任何幫助表示讚賞。

背景:

這是由歐洲政府部門提供的官方XSD文件的片段。通過多層客戶端,我無法聯繫創建者。

回答

2

是的,模式是有效的,你的解釋是正確的。

它類似於一個DTD內容模型

(ID?, Date?, (Warehouse?, Location?)? Address?) 

的的minOccurs = 0的嵌套順序是多餘的,並使得內容模型弱曖昧,因爲如果一組可以是空的,那麼你真的不能統計它發生的頻率。但是XSD允許這種弱模糊。