This element is not expected
An element is in the wrong place: out of order, misspelt, or not allowed there.
The message, as the validator reports it
Element 'qty': This element is not expected. Expected is ( id ).
Why it happens
- Elements in a different order than the schema's
xs:sequencerequires: the order matters. - A misspelt name or a different letter case.
- The element in the wrong namespace: the schema expects
{urn:…}qty, the document hasqtywithout a namespace, or the other way round. - An element the schema doesn't allow at all there, or one too many of it (
maxOccurs).
How to fix it
The message lists what the schema expected at that point. If the expected element is there but later, reorder; if it is missing, add it before; if the names look the same, compare their namespaces.
Example
Validated against order.xsd, below. In order.xsd, id must come before qty.
Reports the error
<order currency="EUR">
<qty>1</qty>
<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>