The line <xs:attribute ref="xml:space" fixed="preserve"/> in a schema causes a validating XmlReader using this schema to fail with a System.ArgumentException of "The requested value 'preserve' was not found", even though "preserve" is a valid value for the xml:space attribute. This issue was observed on iOS and Android.
Changing the line to <xs:attribute ref="xml:space" fixed="Preserve"/> gets rid of the exception but is not compatible across platforms (e.g. Visual Studio 2013 Update 2 requires "preserve" and causes an exception if "Preserve" is used).
The "preserve" value should be lower case. The problem is a bug in /Library/Frameworks/Xamarin.iOS.framework/Versions/220.127.116.11/src/mono/mcs/class/System.XML/Mono.Xml.Schema/XmlSchemaValidatingReader.cs:446:
return (XmlSpace) Enum.Parse (typeof(XmlSpace), spaceSpec, false);
This code is wrong because the XmlSpace enumeration uses "Preserve" for the enumeration value but "preserve" is the correct value for xml:space in the schema. If allowing any case would be acceptable, then an easy "fix" would be to change this line to:
return (XmlSpace) Enum.Parse (typeof(XmlSpace), spaceSpec, true);
so that case is ignored when comparing the xml:space attribute value to the XmlSpace enumeration.