尽管minOccurs = 0,仍需要XSD元素

时间:2014-10-27 15:41:24

标签: xml validation xsd schema

我是XSD的新手并且对目前的行为感到困惑,我不确定我缺少什么。 在VB中构建WCF服务时,我正在尝试创建一些可选的元素。 我有2个元素定义,我想要是可选的,要么它们是web服务请求的一部分,要么不关心,我不在乎。但是我不断得到两者都需要的错误。 我错过了一些明显的东西吗序列和所有两者都应该是minOccurrs以及引用。

在我的研究中,我知道我要使用minOccurs =" 0" 如下面w3Schools所述

MinOccurs defined...

  

" minOccurs"指标指定的最小次数   元素可以发生。

<xs:element name="person">
   <xs:complexType>
     <xs:sequence>
       <xs:element name="full_name" type="xs:string"/>
       <xs:element name="child_name" type="xs:string"
       maxOccurs="10" minOccurs="0"/>
     </xs:sequence>
   </xs:complexType>
 </xs:element> 
  

上面的示例表明&#34; child_name&#34;元素可以发生   &#34;#34;最少零次,最多十次;   元件。

有了这个我已经定义了我的ThirdPartyMessage如下: 目标是具有ExternalID和SecondID(无法控制名称)

<xs:element name="ThirdPartyMessage">
    <xs:complexType>
      <xs:all>
        <xs:element ref="Subject"/>
        <xs:element ref="Message"/>
        <xs:element ref="RequestType" />
        <xs:element ref="ExternalID" minOccurs="0"/>
        <xs:element ref="SecondID" minOccurs="0"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

以及

  <xs:complexType name="MessageHeaderType">
    <xs:sequence>
      <xs:element name="RqUID" type="UUID"/>
      <xs:element name="AsyncRqUID" type="UUID" minOccurs="0"/>
      <xs:element name="PartnerKey" type="Identifier" minOccurs="0"/>
      <xs:element ref="ExternalID" minOccurs="0" maxOccurs="1"/>
      <xs:element ref="SecondID" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

定义为

  <xs:element name="ExternalID">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="15"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="SecondID">
    <xs:simpleType>
      <xs:restriction base="Integer">
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

1 个答案:

答案 0 :(得分:1)

全局声明不能包含属性minOccurs,maxOccurs或use。您可能想要参考此链接。 http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints