[Mono-dev] XML validation : xsi:nil attribute ignored
Atsushi Eno
atsushi at ximian.com
Tue Feb 24 02:54:19 EST 2009
Hello,
Sorry for the late reply. I haven't read this message until now.
It's already fixed in svn at some stage.
Atsushi Eno
yproust wrote:
> Hi
>
> I am trying to validate XML with an XSD schema, but it seems that the
> xsi:nil attributes are ignored. As the element must be a dateTime,
> validation fails on an empty element :
>
> XmlSchema error: Invalidly typed data was specified. XML Line 3, Position
> 31.
>
> I am using Mono 2.2 under CentOS 5.2.
> The validation fails through Monodevelop 2.0 Alpha 2 (1.9.1) with the same
> error.
>
> On the other hand, the XML is validated with Microsoft Visual Studio under
> Windows XP.
>
> Are there specific options to use in the code ? A specific namespace to use
> in the XSD and/or XML ?
>
> Thanks for your help
>
>
> Here are the files I used to perform my tests :
>
> XSD
>
> <?xml version="1.0" encoding="utf-16"?>
> <xs:schema xmlns="http://www.test.com" elementFormDefault="qualified"
> targetNamespace="http://www.test.com"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:element name="Message">
> <xs:complexType>
> <xs:all>
> <xs:element name="MyDateTime" nillable="true" type="xs:dateTime" />
> </xs:all>
> </xs:complexType>
> </xs:element>
> </xs:schema>
>
>
> Validated XML
>
> <?xml version="1.0" encoding="utf-8"?>
> <Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns="http://www.test.com" xsi:schemaLocation="http://www.test.com
> test.xsd">
> <MyDateTime>2009-01-23T12:00:00Z</MyDateTime>
> </Message>
>
>
> Not validated XML
>
> <?xml version="1.0" encoding="utf-8"?>
> <Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns="http://www.test.com" xsi:schemaLocation="http://www.test.com
> test.xsd">
> <MyDateTime xsi:nil="true"></MyDateTime>
> </Message>
>
>
> Code used to validate XML :
>
> StreamReader reader = new StreamReader("test.xml");
> string xml = reader.ReadToEnd();
> string xsd = "/home/yproust/dev/test/test.xsd";
>
> XmlReaderSettings settings = new XmlReaderSettings();
> settings.ValidationEventHandler += delegate(object sender,
> ValidationEventArgs e)
> {
> throw new Exception("Error while validating message with xsd: " +
> e.Message);
> };
>
>
> settings.ValidationType = ValidationType.Schema;
> // Load the xsd
> if( xsd != null )
> settings.Schemas.Add(null, new XmlTextReader(xsd));
>
> StringReader stringReader = new StringReader(message);
> try
> {
> myXmlValidatingReader = XmlReader.Create(stringReader, settings);
> while (myXmlValidatingReader.Read()) { }
> myXmlValidatingReader.Close();
> }
> finally
> {
> stringReader.Close();
> }
>
>
>
> Error when validation fails :
>
> XmlSchema error: Invalidly typed data was specified. XML Line 3, Position
> 31.
>
>
>
>
>
>
More information about the Mono-devel-list
mailing list