The element has incomplete content

An element ended before all the children the schema requires appeared.

The message, as .NET reports it
The element 'order' has incomplete content. List of possible elements expected: 'qty'.

Why it happens

  • A required child element is missing: its minOccurs is 1, the default.
  • The child is there but in another namespace, so it does not count.
  • Serialized output: XmlSerializer leaves out a property that is null.

How to fix it

Add the elements in the list at the end of the element the message names, or make them optional in the schema if they really are.

.NET throws an XmlSchemaValidationException at the first schema error unless XmlReaderSettings.ValidationEventHandler is set, which then receives every one with its line and position. A well-formedness error is an XmlException and ends reading whatever the settings.

The same problem in xmlvalid

xmlvalid validates with libxml2, which reports it as Missing child element(s). It checks the whole document in your browser and lists every schema error with its line and column, not only the first.

Element 'order': Missing child element(s). Expected is ( qty ).

Example

Validated against order.xsd, below.

Reports the error
<order currency="EUR">
  <id>A-1</id>
</order>
Fixed
<order currency="EUR">
  <id>A-1</id>
  <qty>1</qty>
</order>
order.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:string"/>
        <xs:element name="qty" type="xs:int"/>
        <xs:element name="status" type="Status" minOccurs="0"/>
        <xs:element name="code" type="Code" minOccurs="0"/>
        <xs:element name="note" type="Short" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="Status">
    <xs:restriction base="xs:string">
      <xs:enumeration value="open"/>
      <xs:enumeration value="paid"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Code">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]{3}-[0-9]{4}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Short">
    <xs:restriction base="xs:string">
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>