I've added the System.Xml.Serialization.XmlSchemaProvider attribute to my class to customize the schema. Some of the datatypes in my schema are strings, but I'm getting an error that string type is not declared. Can anyone show me how to do this properly? I've included the code to my schema below: [System.Xml.Serialization.XmlSchemaProvider("MySchema")] public class AnyTextData2 : AnyTextData, System.Xml.Serialization.IXmlSerializable { public AnyTextData2() { } public static System.Xml.XmlQualifiedName MySchema(System.Xml.Schema.XmlSchemaSet xs) { System.Xml.Serialization.XmlSerializer schemaSerializer = new System.Xml.Serialization.XmlSerializer(typeof(System.Xml.Schema.XmlSchema)); System.Xml.Schema.XmlSchema s = AnyTextData2.Schema; xs.XmlResolver = new System.Xml.XmlUrlResolver(); xs.Add(s); return new System.Xml.XmlQualifiedName("AnyTextData2");//, ns); } private static System.Xml.Schema.XmlSchema Schema { get { /* <s:complexType name="AnyTextData2"> <s:simpleContent> <s:extension base="s:string"> <s:attribute name="Attribute" type="s:string" /> </s:extension> </s:simpleContent> </s:complexType> */ System.Xml.Schema.XmlSchema pSchema = new System.Xml.Schema.XmlSchema(); pSchema.ElementFormDefault = System.Xml.Schema.XmlSchemaForm.Qualified; //<s:complexType name="CData"> System.Xml.Schema.XmlSchemaComplexType pComplexType = new System.Xml.Schema.XmlSchemaComplexType(); pComplexType.Name = "AnyTextData2"; //<xs:simpleContent> System.Xml.Schema.XmlSchemaSimpleContent pSimpleContent = new System.Xml.Schema.XmlSchemaSimpleContent(); //<s:extension base="s:string"> System.Xml.Schema.XmlSchemaSimpleContentExtension pExtension = new System.Xml.Schema.XmlSchemaSimpleContentExtension(); pExtension.BaseTypeName = new System.Xml.XmlQualifiedName("string");//"s:string" //<s:attribute name="Attribute" type="s:string" /> System.Xml.Schema.XmlSchemaAttribute pAttribute = new System.Xml.Schema.XmlSchemaAttribute(); pAttribute.Name = "Attribute"; pAttribute.SchemaTypeName = new System.Xml.XmlQualifiedName("string");//"s:string" pExtension.Attributes.Add(pAttribute); pSimpleContent.Content = pExtension; pComplexType.ContentModel = pSimpleContent; pSchema.Items.Add(pComplexType); return pSchema; } } }
"Jeremy" wrote in message news:elD886VyHHA.4712@TK2MSFTNGP04.phx.gbl... > I've added the System.Xml.Serialization.XmlSchemaProvider attribute to my > class to customize the schema. Some of the datatypes in my schema are > strings, but I'm getting an error that string type is not declared. Can > anyone show me how to do this properly? I've included the code to my > schema below: > > [System.Xml.Serialization.XmlSchemaProvider("MySchema")] > public class AnyTextData2 : AnyTextData, > System.Xml.Serialization.IXmlSerializable > { > public AnyTextData2() > { > } > > public static System.Xml.XmlQualifiedName > MySchema(System.Xml.Schema.XmlSchemaSet xs) > { > System.Xml.Serialization.XmlSerializer schemaSerializer = > new > System.Xml.Serialization.XmlSerializer(typeof(System.Xml.Schema.XmlSchema)); > System.Xml.Schema.XmlSchema s = AnyTextData2.Schema; > xs.XmlResolver = new System.Xml.XmlUrlResolver(); > xs.Add(s); > return new System.Xml.XmlQualifiedName("AnyTextData2");//, ns); > } > private static System.Xml.Schema.XmlSchema Schema > { > get > { > /* > <s:complexType name="AnyTextData2"> > <s:simpleContent> > <s:extension base="s:string"> > <s:attribute name="Attribute" type="s:string" /> > </s:extension> > </s:simpleContent> > </s:complexType> > */ > System.Xml.Schema.XmlSchema pSchema = new > System.Xml.Schema.XmlSchema(); > pSchema.ElementFormDefault = > System.Xml.Schema.XmlSchemaForm.Qualified; > > //<s:complexType name="CData"> > System.Xml.Schema.XmlSchemaComplexType pComplexType = new > System.Xml.Schema.XmlSchemaComplexType(); > pComplexType.Name = "AnyTextData2"; > > //<xs:simpleContent> > System.Xml.Schema.XmlSchemaSimpleContent pSimpleContent = new > System.Xml.Schema.XmlSchemaSimpleContent(); > > //<s:extension base="s:string"> > System.Xml.Schema.XmlSchemaSimpleContentExtension pExtension = > new System.Xml.Schema.XmlSchemaSimpleContentExtension(); > pExtension.BaseTypeName = new > System.Xml.XmlQualifiedName("string");//"s:string" Jeremy, "qualified" means "qualified with a namespace". You have no namespace. The name {no namespace}:string is not defined. You need to qualifiy these names with the "http://www.w3.org/2001/XMLSchema" namespace. -- John Saunders [MVP]