加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xsd – 如何在XML模式中指定两个字段之一必须存在?

发布时间:2020-12-16 07:41:47 所属栏目:百科 来源:网络整理
导读:我想指定在应用于此XSD的 XML文件中始终必须存在fieldname或freetext.有办法吗? xs:complexType name="tSome"xs:sequence !-- either one of the two below has to be present. -- xs:element name="fieldname" type="xs:string" / xs:element name="freete
我想指定在应用于此XSD的 XML文件中始终必须存在fieldname或freetext.有办法吗?
<xs:complexType name="tSome">
<xs:sequence>
  <!-- either one of the two below has to be present. -->
  <xs:element name="fieldname" type="xs:string" />
  <xs:element name="freetext" type="xs:string" />
  <!-- this one below must always be present -->
  <xs:element name="dbtablename" type="xs:string" />
</xs:sequence>
</xs:complexType>
XML Schema中有一个 Choice Indicator,它允许您使用所包含的元素之一,但不能包含两个或更多元素.如果你想要3的任何2,我建议做这样的事情:
<xs:choice>
  <xs:element name="fieldname" type="xs:string" minOccurs="0" maxOccurs="1" />
  <xs:element name="freetext" type="xs:string" minOccurs="0" maxOccurs="1" />
  <xs:element name="dbtablename" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:choice>
<xs:choice>
  <xs:element name="fieldname" type="xs:string" minOccurs="0" maxOccurs="1" />
  <xs:element name="freetext" type="xs:string" minOccurs="0" maxOccurs="1" />
  <xs:element name="dbtablename" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:choice>

(也许maxOccurs将阻止您选择同一个元素两次.)
如果不行,我什么也不想.

编辑:我第一次没有正确地理解这个问题.如果您希望dbtablename始终与fieldname或freetext中的任何一个存在,那么这就是答案:

<xs:complexType name="tSome">
<xs:sequence>
  <xs:choice>
    <xs:element name="fieldname" type="xs:string" />
    <xs:element name="freetext" type="xs:string" />
  </xs:choice>
  <xs:element name="dbtablename" type="xs:string" />
</xs:sequence>
</xs:complexType>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读