[Mono-bugs] [Bug 77688][Nor] New - Different AttributeType returned under Mono framework compared to Microsoft framework for XMLSchema.xsd.

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Mar 1 14:46:47 EST 2006


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by matt.ward.bugs at googlemail.com.

http://bugzilla.ximian.com/show_bug.cgi?id=77688

--- shadow/77688	2006-03-01 14:46:47.000000000 -0500
+++ shadow/77688.tmp.13022	2006-03-01 14:46:47.000000000 -0500
@@ -0,0 +1,138 @@
+Bug#: 77688
+Product: Mono: Class Libraries
+Version: 1.1
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Normal
+Component: Sys.XML
+AssignedTo: atsushi at ximian.com                            
+ReportedBy: matt.ward.bugs at googlemail.com               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Different AttributeType returned under Mono framework compared to Microsoft framework for XMLSchema.xsd.
+
+Description of Problem:
+
+Using the schema - http://www.w3.org/2001/XMLSchema.xsd and accessing the
+'mixed' attribute for the complex type 'complexType', we get different
+attribute types under Microsoft's framework compared to Mono.
+
+Unfortunately, I have been unable to produce a simplified test case using a
+cut down schema, so the following test case uses the full schema.  With a
+cut down schema everything seems to work fine.
+
+Steps to reproduce the problem:
+
+using NUnit.Framework;
+using System;
+using System.IO;
+using System.Xml;
+using System.Xml.Schema;
+
+namespace XmlSchemaTests
+{
+	/// <summary>
+	/// Tests that the attribute 'mixed' has the correct data type/simple type
+	/// on the 'complexType' complex type from the actual schema for XML schemas 
+	/// (http://www.w3.org/2001/XMLSchema.xsd). All these tests fail under
+Mono 1.1.
+	/// </summary>
+	[TestFixture]
+	public class BooleanTypeAttributeTestFixture
+	{
+		XmlSchemaSimpleType simpleType;
+		XmlSchemaDatatype dataType;
+		
+		[SetUp]
+		public void Init()
+		{
+			StreamReader sr = new StreamReader("Schemas/XMLSchema.xsd", true);
+			XmlTextReader reader = new XmlTextReader(sr);
+			
+			// Remove the resolver do not get any errors about the XMLSchema.dtd
+being missing.
+			reader.XmlResolver = null; 
+			XmlSchema schema = XmlSchema.Read(reader, new
+ValidationEventHandler(SchemaValidation));
+			schema.Compile(new ValidationEventHandler(SchemaValidation));
+			reader.Close();
+			
+			XmlQualifiedName name = new XmlQualifiedName("complexType",
+"http://www.w3.org/2001/XMLSchema");
+			XmlSchemaComplexType complexType = FindNamedType(schema, name);
+			XmlSchemaComplexContent complexContent = complexType.ContentModel as
+XmlSchemaComplexContent;
+			XmlSchemaComplexContentExtension extension = complexContent.Content as
+XmlSchemaComplexContentExtension;
+			
+			XmlSchemaAttribute attribute = FindAttribute(extension.Attributes, "mixed");
+			dataType = attribute.AttributeType as XmlSchemaDatatype;
+			simpleType = attribute.AttributeType as XmlSchemaSimpleType;
+		}
+		
+		[Test]
+		public void MixedAttributeDataTypeIsNotNull()
+		{
+			Assert.IsNotNull(dataType);
+		}
+		
+		/// <summary>
+		/// This test passes under Microsoft .NET 1.1, but fails under .NET 2.0.
+		/// </summary>
+		[Test]
+		public void MixedAttributeDataTypeIsBool()
+		{
+			Assert.IsTrue(dataType.ValueType == typeof(bool));
+		}
+		
+		[Test]
+		public void MixedAttributeSimpleTypeIsNull()
+		{
+			Assert.IsNull(simpleType);
+		}
+		
+		/// <summary>
+		/// Look for the specified attribute in the schema objects.
+		/// </summary>
+		static XmlSchemaAttribute FindAttribute(XmlSchemaObjectCollection
+schemaObjects, string name)
+		{
+			foreach (XmlSchemaObject schemaObject in schemaObjects) {
+				XmlSchemaAttribute attribute = schemaObject as XmlSchemaAttribute;
+				if (attribute != null) {
+					if (attribute.Name == name) {
+						return attribute;
+					}
+				}
+			}
+			return null;
+		}
+		
+		/// <summary>
+		/// Looks through the XmlSchema.Items for a complex type with the given name.
+		/// </summary>
+		static XmlSchemaComplexType FindNamedType(XmlSchema schema,
+XmlQualifiedName name)
+		{
+			foreach (XmlSchemaObject schemaObject in schema.Items) {
+				XmlSchemaComplexType complexType = schemaObject as XmlSchemaComplexType;
+				if (complexType != null) {
+					if (complexType.QualifiedName == name) {
+						return complexType;
+					}
+				}
+			}
+			return null;
+		}
+		
+		void SchemaValidation(object source, ValidationEventArgs e)
+		{
+			// Do nothing.
+		}
+	}
+}


More information about the mono-bugs mailing list