【发布时间】:2021-12-26 00:55:09
【问题描述】:
我想确保<specials/> 可以是可选的,但是当它发生时,我想确保它至少有一个<special>。
想象一下下面的 XML:
<software>
<programm id="123">
<name>Editor</name>
<specials>
<special>Something really special here</special>
<special>Something special as well</special>
</specials>
</programm>
<programm id="456">
<name>Another Editor</name>
</programm>
</software>
我为此尝试过的 XSD 是。如果只有 <specials></specials> 但里面没有孩子,这不会引发验证错误。
<xs:element name="software">
<xs:complexType>
<xs:sequence>
<xs:element name="programm" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="1"/>
<xs:element name="specials" minOccurs="0">
<xs:complexType>
<xs:sequence minOccurs="1">
<xs:element name="special" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="programmID"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
【问题讨论】:
-
当我删除
special元素并使用空的special元素进行验证时,它会报告验证错误:The content of element 'specials' is not complete. One of '{special}' is expected
标签: xml xsd xml-parsing xsd-validation xml-validation