0

是否可以在“帐户”元素下强制要求至少一项选择?(或)是否可以在“帐户”元素下默认一个选项?

<xs:element name="Account">
  <xs:complexType>
   <xs:choice>
     <xs:element name="User" type="tns:users"/>
     <xs:element name="Group" type="tns:groups"/>
   </xs:choice>
  </xs:complexType>
</xs:element>
4

2 回答 2

1

如果“要求至少一个选择”是指要求至少出现一个用户或组,那么是的,你可以,你展示的 XSD 片段就是这样做的。如果您的意思是要求用户(例如)在每个帐户下至少出现一次,那么再次是的,您可以,但在这种情况下,您显示的片段不会这样做。

如果通过“默认一个选择”,您的意思是如果文档实例既不包含用户也不包含组,则假设用户(例如),那么不,我所知道的任何 XML 模式语言都没有这种能力(但当然是您的行为处理软件仅受您自己的聪明才智的限制)。另一方面,如果“默认选项”是指在 XML 文档实例包含空的 Group 元素时为 Group 提供默认值,那么是的,如果 Group 具有简单类型,则这是可能的。

于 2013-02-28T13:25:24.997 回答
0

如果我正确理解了问题的第一部分,则Account元素必须有一个子元素User或一个子元素Group或两者兼有——但它不能没有子元素,也不能有多个UserGroup子元素。

如果这是要求,请使用:

<xs:element name="Account">
  <xs:complexType>
    <xs:choice>
      <xs:sequence>
        <xs:element name="User" type="tns:users"/>
        <xs:element name="Group" type="tns:groups" minOccurs="0"/>
      </xs:sequence>
      <xs:element name="Group" type="tns:groups"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

I am not sure what you mean by 'default one choice' in the second part of the question.

于 2013-02-28T21:57:28.783 回答