The element has incomplete content
An element ended before all the children the schema requires appeared.
The element 'order' has incomplete content. List of possible elements expected: 'qty'.
Why it happens
- A required child element is missing: its
minOccursis 1, the default. - The child is there but in another namespace, so it does not count.
- Serialized output:
XmlSerializerleaves out a property that isnull.
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.
<order currency="EUR">
<id>A-1</id>
</order>
<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>