获取“元素'MethodOfPayment'的内容不完整”,即使该元素存在

时间:2015-06-01 09:13:43

标签: xml validation

我在针对架构验证XML有效负载时遇到问题。导致该问题的架构部分总结如下。导致问题的因素是“MethodOfPayment / Check”,根据架构文档只需存在且不应包含任何内容。

<xsd:element name="MethodOfPayment" minOccurs="0">
  <xsd:complexType>
    <xsd:choice>
      <xsd:element name="Cheque">
        <xsd:complexType/>
      </xsd:element>
      <xsd:element name="Account">
        <xsd:complexType>
          <xsd:choice>
            <xsd:element name="...">
            </xsd:element>
            <xsd:element name="...">
            </xsd:element>
            <xsd:element name="...">
            </xsd:element>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="Other">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="...">
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:choice>
  </xsd:complexType>
</xsd:element>

我传递的是以下简单结构:

<MethodOfPayment>
  <Cheque />
</MethodOfPayment>

但我收到以下验证错误:

<ErrorMessage>
    <![CDATA[ Invalid Request!!! XML document failed validation.Please check XML request for valid data  
    cvc-complex-type.2.4.b: The content of element 'MethodOfPayment' is not complete. 
    One of '{"fake_namespace":Cheque, 
    "fake_namespace":Account, 
    "fake_namespace":Other}' is expected.]]>
</ErrorMessage>

我已经确认“帐户”和“其他”部分工作正常,它只是“检查”元素。任何有关这方面的帮助都很棒

1 个答案:

答案 0 :(得分:0)

我最终发现上面的XML没有验证,因为“Check”元素已折叠。每当我给元素补充水分,即 与source ~/.bash_profile 验证相对的<Cheque></Cheque>成功。