これが私の問題です。ノードに、属性またはサブノード(グループから)のいずれかが必要です。例えば:
<set_variable name="bob" value="3/>
また
<set_variable name="bob">
<.../>
</set_variable>
私がそれをするために見つけた唯一の方法は:
<xs:element name="set_variable" type="setVariableType"/>
<xs:complexType name="setVariableType">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:group ref="arithmeticGroup"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:integer" use="optional"/>
</xs:complexType>
<xs:group name="arithmeticGroup">
....
</xs:group>
そのソリューションの問題は、2つの禁止された方法を許可することです。
<set_variable name="bob"/> <!-- Should at least have an attribute or a subnode -->
と
<set_variable name="bob" value="18"> <!-- Should not have both attribute and a subnode -->
<.../>
</set_variable>
誰かアイデアがありますか?