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);
}