fields = new XmlSchemaObjectCollection();\r
qName = XmlQualifiedName.Empty;\r
}\r
- [XmlElement]\r
- public XmlSchemaObjectCollection Fields \r
- {\r
- get{ return fields; }\r
- }\r
- [XmlAttribute]\r
+ \r
+ [System.Xml.Serialization.XmlAttribute("name")]\r
public string Name \r
{\r
get{ return name; } \r
set{ name = value; }\r
}\r
+\r
+ [XmlElement("selector",typeof(XmlSchemaXPath),Namespace="http://www.w3.org/2001/XMLSchema")]\r
+ public XmlSchemaXPath Selector \r
+ {\r
+ get{ return selector; } \r
+ set{ selector = value; }\r
+ }\r
+\r
+ [XmlElement("field",typeof(XmlSchemaXPath),Namespace="http://www.w3.org/2001/XMLSchema")]\r
+ public XmlSchemaObjectCollection Fields \r
+ {\r
+ get{ return fields; }\r
+ }\r
+ \r
[XmlIgnore]\r
public XmlQualifiedName QualifiedName \r
{\r
get{ return qName; }\r
}\r
- [XmlElement]\r
- public XmlSchemaXPath Selector \r
+ /// <remarks>\r
+ /// 1. name must be present\r
+ /// 2. selector and field must be present\r
+ /// </remarks>\r
+ [MonoTODO]\r
+ internal int Compile(ValidationEventHandler h, XmlSchemaInfo info)\r
{\r
- get{ return selector; } \r
- set{ selector = value; }\r
+ if(Name == null)\r
+ error(h,"Required attribute name must be present");\r
+ else if(!XmlSchemaUtil.CheckNCName(this.name)) \r
+ error(h,"attribute name must be NCName");\r
+ else\r
+ this.qName = new XmlQualifiedName(Name,info.TargetNamespace);\r
+\r
+ if(Selector == null)\r
+ error(h,"selector must be present");\r
+ else\r
+ {\r
+ errorCount += Selector.Compile(h,info);\r
+ }\r
+\r
+ if(Fields.Count == 0)\r
+ error(h,"atleast one field value must be present");\r
+ else\r
+ {\r
+ foreach(XmlSchemaObject obj in Fields)\r
+ {\r
+ if(obj is XmlSchemaXPath)\r
+ {\r
+ XmlSchemaXPath field = (XmlSchemaXPath)obj;\r
+ errorCount += field.Compile(h,info);\r
+ }\r
+ else\r
+ error(h,"Object of type "+obj.GetType()+" is invalid in the Fields Collection");\r
+ }\r
+ }\r
+ XmlSchemaUtil.CompileID(Id,this,info.IDCollection,h);\r
+\r
+ return errorCount;\r
}\r
}\r
}\r