此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>
我从未见过序列节点是另一个序列节点的直接子节点。我用谷歌搜索了一段时间但找不到答案。 XSD文件已通过一些在线验证器成功运行 - 但我怀疑它们只是检查XML有效性。
有人可以建议XML可能需要的样子吗?也许是这样的事情:
<ShippingPointStructure>
<DeliveryID></DeliveryID>
<DeliveryDate></DeliveryDate>
<WarehouseID></WarehouseID>
<LocationID></LocationID>
<WarehouseID></WarehouseID>
<LocationID></LocationID>
<WarehouseID></WarehouseID>
<LocationID></LocationID>
<Address></Address>
</ShippingPointStructure>
任何帮助表示感谢。
背景:
这是欧洲政府部门提供的官方XSD文件的片段。我无法联系创作者,因为它来自几层客户。
答案 0 :(得分:2)
是的,架构是有效的,您对其含义的解释是正确的。
它类似于DTD内容模型
(ID?, Date?, (Warehouse?, Location?)? Address?)
嵌套序列上的minOccurs = 0是多余的,并且使内容模型变得模糊不清,因为如果一个组可以为空,那么你就无法计算它发生的频率。但是XSD允许这种弱模糊。