Character content other than whitespace is not allowed

Text directly inside an element that may contain only child elements.

The message, as the validator reports it
Element 'order': Character content other than whitespace is not allowed because the content type is 'element-only'.

Why it happens

  • Stray text between child elements: a leftover value, a misplaced closing tag.
  • A value written into the parent instead of into the child it belongs to.

How to fix it

Move the text into the right child element or remove it. Whitespace and line breaks are fine; anything else is not.

Example

Validated against order.xsd, below.

Reports the error
<order currency="EUR">hello
  <id>A-1</id>
  <qty>1</qty>
</order>
Fixed
<order currency="EUR">
  <id>A-1</id>
  <qty>1</qty>
  <note>hello</note>
</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>