Reformat changes, and add some small debugging information to catch errors
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaIdentityConstraint.cs
index 5865dd976aa7440c0a3d0806104efc21f8787402..7e09ca0842d09e72fd37354e811fe0e3ec19a99b 100755 (executable)
@@ -21,27 +21,71 @@ namespace System.Xml.Schema
                        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