The actual length is greater than the MaxLength value

A value is longer than its type allows.

The message, as .NET reports it
The 'note' element is invalid - The value 'far too long text' is invalid according to its datatype 'Short' - The actual length is greater than the MaxLength value.

Why it happens

  • Text longer than the format allows: a name, an address line, a free-text note.
  • Whitespace or a line break inside the element, which counts towards the length.

How to fix it

Shorten the value to the type's xs:maxLength. The actual length is less than the MinLength value is the same check for a minimum.

.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 [facet 'maxLength'] The value exceeds the allowed length. It checks the whole document in your browser and lists every schema error with its line and column, not only the first.

Element 'note': [facet 'maxLength'] The value has a length of '17'; this exceeds the allowed maximum length of '10'.

Example

Validated against order.xsd, below.

Reports the error
<order currency="EUR">
  <id>A-1</id>
  <qty>1</qty>
  <note>far too long text</note>
</order>
Fixed
<order currency="EUR">
  <id>A-1</id>
  <qty>1</qty>
  <note>short</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>