【发布时间】:2014-08-24 19:44:49
【问题描述】:
我有一个具有以下结构的 XML 数据
<Data>
<Name />
<Code />
<Prodprop>
<key />
<value />
</Prodprop>
<Prodprop>
<key />
<value />
</Prodprop>
<Tag />
<Blub />
</Data>
我需要这个数据的 XML 模式,但是标签可以以任何顺序出现,但所有 Prodprop 都是连续的。所有其他元素只需要一次或最多一次因此以下数据也是有效的。
<Data>
<Code />
<Name />
<Tag />
<Prodprop>
<key />
<value />
</Prodprop>
<Prodprop>
<key />
<value />
</Prodprop>
</Data>
这是我的(而且我知道这是不可能的)架构。
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Data" type="DataType" />
<xsd:complexType name="DataType">
<xsd:all>
<xsd:element name="Name" type="xsd:string" />
<xsd:element name="Code" type="xsd:string" />
<xsd:element maxOccurs="unbounded" name="Prodprop" type="ProdpropType" />
<xsd:element name="Tag" type="xsd:string" />
<xsd:element name="Blub" type="xsd:string" />
</xsd:all>
</xsd:complexType>
<xsd:complexType name="ProdpropType">
<xsd:sequence>
<xsd:element name="key" type="xsd:string" />
<xsd:element name="value" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
是否有可能为这个 szenario 制作一个有效的 xml 架构?
【问题讨论】:
-
我认为您尝试做的事情是不可能的。但是一个好主意,接近你所描述的,是将 Prodprop 元素包装在另一个元素中,例如产品道具清单。使用这种方法,您将拥有 Prodprop 的所有内容作为一个组,并且无论何时移动它们,它们都会作为一个整体移动。
-
我已经用一个组尝试过,但是 all-tag 只允许普通元素,没有组