internal void Reset() {
                _Name = XmlQualifiedName.Empty;
                _Prefix = null;
		        _TypeName = XmlQualifiedName.Empty;
                _TypePrefix = null;
                _Default = null;
                _Revises = null;
                _MaxOccurs = 1;
                _MinOccurs = 1;
                _Checking = false;
                _ElementDecl = null;
                _Next = null;
                _Attdef = null;
            }
Exemple #2
0
        private void XDR_CheckAttributeDefault(DeclBaseInfo decl, SchemaAttDef pAttdef)
        {
            if (decl._Default != null || pAttdef.DefaultValueTyped != null)
            {
                if (decl._Default != null)
                {
                    pAttdef.DefaultValueRaw = pAttdef.DefaultValueExpanded = (string)decl._Default;
                    CheckDefaultAttValue(pAttdef);
                }
            }

            SetAttributePresence(pAttdef, 1 == decl._MinOccurs);
        }
Exemple #3
0
        private static void XDR_BeginAttribute(XdrBuilder builder)
        {
            if (builder._BaseDecl._TypeName.IsEmpty)
            {
                builder.SendValidationEvent(SR.Sch_MissAttribute);
            }

            SchemaAttDef attdef = null;
            XmlQualifiedName qname = builder._BaseDecl._TypeName;
            string prefix = builder._BaseDecl._Prefix;

            // local?
            if (builder._ElementDef._AttDefList != null)
            {
                attdef = (SchemaAttDef)builder._ElementDef._AttDefList[qname];
            }

            // global?
            if (attdef == null)
            {
                // if there is no URN in this name then the name is local to the
                // schema, but the global attribute was still URN qualified, so
                // we need to qualify this name now.
                XmlQualifiedName gname = qname;
                if (prefix.Length == 0)
                    gname = new XmlQualifiedName(qname.Name, builder._TargetNamespace);
                SchemaAttDef ad;
                if (builder._SchemaInfo.AttributeDecls.TryGetValue(gname, out ad))
                {
                    attdef = (SchemaAttDef)ad.Clone();
                    attdef.Name = qname;
                }
                else if (prefix.Length != 0)
                {
                    builder.SendValidationEvent(SR.Sch_UndeclaredAttribute, XmlQualifiedName.ToString(qname.Name, prefix));
                }
            }

            if (attdef != null)
            {
                builder.XDR_CheckAttributeDefault(builder._BaseDecl, attdef);
            }
            else
            {
                // will process undeclared types later
                attdef = new SchemaAttDef(qname, prefix);
                DeclBaseInfo decl = new DeclBaseInfo();
                decl._Checking = true;
                decl._Attdef = attdef;
                decl._TypeName = builder._BaseDecl._TypeName;
                decl._ElementDecl = builder._ElementDef._ElementDecl;
                decl._MinOccurs = builder._BaseDecl._MinOccurs;
                decl._Default = builder._BaseDecl._Default;

                // add undefined attribute types
                decl._Next = builder._UndefinedAttributeTypes;
                builder._UndefinedAttributeTypes = decl;
            }

            builder._ElementDef._ElementDecl.AddAttDef(attdef);
        }
 private static void XDR_BeginAttribute(XdrBuilder builder)
 {
     if (builder._BaseDecl._TypeName.IsEmpty)
     {
         builder.SendValidationEvent("Sch_MissAttribute");
     }
     SchemaAttDef pAttdef = null;
     XmlQualifiedName name = builder._BaseDecl._TypeName;
     string ns = builder._BaseDecl._Prefix;
     if (builder._ElementDef._AttDefList != null)
     {
         pAttdef = (SchemaAttDef) builder._ElementDef._AttDefList[name];
     }
     if (pAttdef == null)
     {
         SchemaAttDef def2;
         XmlQualifiedName key = name;
         if (ns.Length == 0)
         {
             key = new XmlQualifiedName(name.Name, builder._TargetNamespace);
         }
         if (builder._SchemaInfo.AttributeDecls.TryGetValue(key, out def2))
         {
             pAttdef = def2.Clone();
             pAttdef.Name = name;
         }
         else if (ns.Length != 0)
         {
             builder.SendValidationEvent("Sch_UndeclaredAttribute", XmlQualifiedName.ToString(name.Name, ns));
         }
     }
     if (pAttdef != null)
     {
         builder.XDR_CheckAttributeDefault(builder._BaseDecl, pAttdef);
     }
     else
     {
         pAttdef = new SchemaAttDef(name, ns);
         DeclBaseInfo info = new DeclBaseInfo {
             _Checking = true,
             _Attdef = pAttdef,
             _TypeName = builder._BaseDecl._TypeName,
             _ElementDecl = builder._ElementDef._ElementDecl,
             _MinOccurs = builder._BaseDecl._MinOccurs,
             _Default = builder._BaseDecl._Default,
             _Next = builder._UndefinedAttributeTypes
         };
         builder._UndefinedAttributeTypes = info;
     }
     builder._ElementDef._ElementDecl.AddAttDef(pAttdef);
 }