我正在尝试创建一个XSD,指定<a>
元素必须包含4个子<b>
元素,其中包含c
属性1到4,如下所示:
有效:
<a>
<b c="1" d="valueof1" />
<b c="2" d="valueof2" />
<b c="3" d="valueof3" />
<b c="4" d="valueof4" />
</a>
无效:
<a>
<b c="1" d="valueof1" />
<b c="1" d="valueof1_other" />
<b c="3" d="valueof3" />
<b c="4" d="valueof4" />
</a>
无效:
<a>
<b c="1" d="valueof1" />
<b c="2" d="valueof2" />
<b c="3" d="valueof3" />
<b c="4" d="valueof4" />
<b c="5" d="valueof5" />
</a>
这可能吗?我能找到的最接近的是all元素,但这似乎只适用于指定唯一元素,而不是属性值。
答案 0 :(得分:0)
您可以通过使用b
和minOccurs=4
声明元素maxOccurs=4
来强制执行第一条规则,如下所示:
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:element name="b" minOccurs="4" maxOccurs="4"/>
</xs:sequence>
</xs:complexType>
</xs:element>
但是,您无法使用XSD 来强制执行第二条规则。如果你真的想这样做,你可以用例如b
,b1
,b2
和b3
替换4 b4
个元素,每个都将分别隐含地表示c
属性1到4。