XML模式中元素内的元素

时间:2013-02-28 06:04:13

标签: xml xsd

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

<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>

2 个答案:

答案 0 :(得分:1)

如果“授权至少一个选择”是指要求用户或组中至少有一个出现,那么是的,您可以,并且您显示的XSD片段执行此操作。如果您的意思是要求用户(例如)在每个帐户下至少出现一次,那么您可以再次使用,但在这种情况下,您显示的片段不会这样做。

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

答案 1 :(得分: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>

我不确定你在问题的第二部分'默认的一个选择'是什么意思。