// Author: Dwivedi, Ajay kumar // Adwiv@Yahoo.com using System; using System.Xml; using System.Xml.Serialization; namespace System.Xml.Schema { /// /// Summary description for XmlSchemaIdentityConstraint. /// public class XmlSchemaIdentityConstraint : XmlSchemaAnnotated { private XmlSchemaObjectCollection fields; private string name; private XmlQualifiedName qName; private XmlSchemaXPath selector; public XmlSchemaIdentityConstraint() { fields = new XmlSchemaObjectCollection(); qName = XmlQualifiedName.Empty; } [System.Xml.Serialization.XmlAttribute("name")] public string Name { get{ return name; } set{ name = value; } } [XmlElement("selector",typeof(XmlSchemaXPath),Namespace="http://www.w3.org/2001/XMLSchema")] public XmlSchemaXPath Selector { get{ return selector; } set{ selector = value; } } [XmlElement("field",typeof(XmlSchemaXPath),Namespace="http://www.w3.org/2001/XMLSchema")] public XmlSchemaObjectCollection Fields { get{ return fields; } } [XmlIgnore] public XmlQualifiedName QualifiedName { get{ return qName; } } /// /// 1. name must be present /// 2. selector and field must be present /// [MonoTODO] internal int Compile(ValidationEventHandler h, XmlSchemaInfo info) { if(Name == null) error(h,"Required attribute name must be present"); else if(!XmlSchemaUtil.CheckNCName(this.name)) error(h,"attribute name must be NCName"); else this.qName = new XmlQualifiedName(Name,info.TargetNamespace); if(Selector == null) error(h,"selector must be present"); else { errorCount += Selector.Compile(h,info); } if(Fields.Count == 0) error(h,"atleast one field value must be present"); else { foreach(XmlSchemaObject obj in Fields) { if(obj is XmlSchemaXPath) { XmlSchemaXPath field = (XmlSchemaXPath)obj; errorCount += field.Compile(h,info); } else error(h,"Object of type "+obj.GetType()+" is invalid in the Fields Collection"); } } XmlSchemaUtil.CompileID(Id,this,info.IDCollection,h); return errorCount; } } }