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

Discussion in 'ASP .Net Web Services' started by Jeremy, Jul 18, 2007.

  1. Jeremy

    Jeremy Guest

    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, Jul 18, 2007
    #1
    1. Advertisements

  2. "Jeremy" <> wrote in message
    news:...
    > 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]
     
    John Saunders [MVP], Jul 18, 2007
    #2
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JohnZing

    declared or not declared ?

    JohnZing, Feb 5, 2006, in forum: ASP .Net
    Replies:
    3
    Views:
    1,702
    Jon Paal
    Feb 5, 2006
  2. webServiceHelp
    Replies:
    0
    Views:
    467
    webServiceHelp
    Nov 27, 2006
  3. Thomas D.

    IXmlSerializable: return type & difference IE / webservice

    Thomas D., Sep 1, 2005, in forum: ASP .Net Web Services
    Replies:
    1
    Views:
    291
    Thomas D.
    Sep 1, 2005
  4. Jeremy
    Replies:
    3
    Views:
    411
    John Saunders [MVP]
    Jul 19, 2007
  5. hurluberlu
    Replies:
    1
    Views:
    234
    A. Sinan Unur
    Dec 20, 2004
Loading...

Share This Page