HighTechTalks DotNet Forums  

Schema type information provided by IXmlSerializable is invalid: Type 'string' is not declared

ASP.net Web Services microsoft.public.dotnet.framework.aspnet.webservices


Discuss Schema type information provided by IXmlSerializable is invalid: Type 'string' is not declared in the ASP.net Web Services forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Jeremy
 
Posts: n/a

Default Schema type information provided by IXmlSerializable is invalid: Type 'string' is not declared - 07-18-2007 , 01:10 PM






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("MySche ma")]
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(Syst em.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;
}
}

}



Reply With Quote
  #2  
Old   
John Saunders [MVP]
 
Posts: n/a

Default Re: Schema type information provided by IXmlSerializable is invalid: Type 'string' is not declared - 07-18-2007 , 01:51 PM






"Jeremy" <nospam (AT) please (DOT) com> wrote

Quote:
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("MySche ma")]
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(Syst em.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]



Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.