The LENGTH element not in the schema time duration format!
which is ISO 8601
"PnYn MnDTnH nMnS, where nY represents the number of years, nM the number of months, nD
the number of days, 'T' is the date/time separator, nH the number of hours, nM the number of
minutes and nS the number of seconds. The number of seconds can include decimal digits to
arbitrary precision. An optional preceding minus sign ('-') is allowed, to indicate a negative
duration."

whiteSpace

Determines what the validator should do with white space
before validating the value

Three possible values:

preserve: The white space in the input document
is left unchanged

replace: Each tab, carriage return and linefeed
is replaced with a single space.

collapse: Each tab, carriage return and linefeed
is replaced with a single space. Furthermore, after this replacement is
performed, all runs of multiple spaces are condensed to a single space.
Leading and trailing white space is deleted.

Applies to string,
normalizedString and token type items

Per XML 1.0, white space in attributes is normalized irregardless of the schema

For example, to say that white space should be collapsed
in all names and titles:

You can specify at most two fractional digits
or at most seven decimal digits, but not
at least two fractional digits
or exactly seven decimal digits

Enumeration

The enumeration facet lists all allowed values

Applies to all simple types except boolean

For example, to say that the publisher must be
one of the oligopoly that controls 90%
of U.S. music (Warner-Elektra-Atlantic, Universal Music Group,
Sony Music Entertainment, Inc., Capitol Records, Inc., BMG Music)

A Schema for a Document that Uses the Default Namespace

The elementFormDefault attribute must have the value
qualified to indicate that the locally defined elements -- i.e.,
TITLE,
PHOTO, COMPOSER, PRODUCER, PUBLISHER,
YEAR, and ARTIST but not
SONG-- are
qualified.

Globally defined elements such as SONG are always
qualified by the target namespace

The default value of elementFormDefault is unqualified.
This is exactly backwards from what it should be.

The default value of attributeFormDefault is unqualified.
This is correct.

This mess was caused by an misguided attempt to make local elements
and attributes equivalent.

Simplest approach: either don't use namespaces at all
or make sure all elements are namespace qualified and set
elementFormDefault="qualified"

W3C XML Schema Language Alternatives

Schematron

According to Schematron inventor
Rick Jelliffe:

The Schematron differs in basic concept from other schema languages in that it not based on grammars but on
finding tree patterns in the parsed document. This approach allows many kinds of structures to be represented
which are inconvenient and difficult in grammar-based schema languages.

A Schematron schema for songs

Each rule contains assert
and report elements and has a
context attribute

Each assert
and report element
has a test attribute containing an XPath expression
whihc returns a boolean.

The contents of each assert element is printed if the assertion test fails

The contents of each report element is printed if the report test
succeeds

<?xml version="1.0"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
<title>A Schematron Schema for Songs</title>
<pattern>
<rule context="SONG">
<assert test="TITLE">
A SONG must contain an initial TITLE element.
</assert>
<assert test="TITLE[position()=1]">
The TITLE element must be the initial element of the SONG element.
</assert>
<assert test="COMPOSER">
A SONG must contain at least one COMPOSER element.
</assert>
<assert test="ARTIST">
A SONG must contain at least one ARTIST element.
</assert>
</rule>
</pattern>
</schema>