2003-10-01 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaMinExclusiveFacet.cs
1 // Author: Dwivedi, Ajay kumar\r
2 //            Adwiv@Yahoo.com\r
3 using System;\r
4 using System.Xml;\r
5 \r
6 namespace System.Xml.Schema\r
7 {\r
8         /// <summary>\r
9         /// Summary description for XmlSchemaMinExclusiveFacet.\r
10         /// </summary>\r
11         public class XmlSchemaMinExclusiveFacet : XmlSchemaFacet\r
12         {\r
13                 private static string xmlname = "minExclusive";\r
14 \r
15                 public XmlSchemaMinExclusiveFacet()\r
16                 {\r
17                 }\r
18 \r
19                 //<minExclusive\r
20                 //  fixed = boolean : false\r
21                 //  id = ID\r
22                 //  value = anySimpleType\r
23                 //  {any attributes with non-schema namespace . . .}>\r
24                 //  Content: (annotation?)\r
25                 //</minExclusive>\r
26                 internal static XmlSchemaMinExclusiveFacet Read(XmlSchemaReader reader, ValidationEventHandler h)\r
27                 {\r
28                         XmlSchemaMinExclusiveFacet minex = new XmlSchemaMinExclusiveFacet();\r
29                         reader.MoveToElement();\r
30 \r
31                         if(reader.NamespaceURI != XmlSchema.Namespace || reader.LocalName != xmlname)\r
32                         {\r
33                                 error(h,"Should not happen :1: XmlSchemaMinExclusiveFacet.Read, name="+reader.Name,null);\r
34                                 reader.Skip();\r
35                                 return null;\r
36                         }\r
37 \r
38                         minex.LineNumber = reader.LineNumber;\r
39                         minex.LinePosition = reader.LinePosition;\r
40                         minex.SourceUri = reader.BaseURI;\r
41 \r
42                         while(reader.MoveToNextAttribute())\r
43                         {\r
44                                 if(reader.Name == "id")\r
45                                 {\r
46                                         minex.Id = reader.Value;\r
47                                 }\r
48                                 else if(reader.Name == "fixed")\r
49                                 {\r
50                                         Exception innerex;\r
51                                         minex.IsFixed = XmlSchemaUtil.ReadBoolAttribute(reader,out innerex);\r
52                                         if(innerex != null)\r
53                                                 error(h, reader.Value + " is not a valid value for fixed attribute",innerex);\r
54                                 }\r
55                                 else if(reader.Name == "value")\r
56                                 {\r
57                                         minex.Value = reader.Value;\r
58                                 }\r
59                                 else if((reader.NamespaceURI == "" && reader.Name != "xmlns") || reader.NamespaceURI == XmlSchema.Namespace)\r
60                                 {\r
61                                         error(h,reader.Name + " is not a valid attribute for "+xmlname,null);\r
62                                 }\r
63                                 else\r
64                                 {\r
65                                         XmlSchemaUtil.ReadUnhandledAttribute(reader,minex);\r
66                                 }\r
67                         }\r
68                         \r
69                         reader.MoveToElement();\r
70                         if(reader.IsEmptyElement)\r
71                                 return minex;\r
72 \r
73                         //  Content: (annotation?)\r
74                         int level = 1;\r
75                         while(reader.ReadNextElement())\r
76                         {\r
77                                 if(reader.NodeType == XmlNodeType.EndElement)\r
78                                 {\r
79                                         if(reader.LocalName != xmlname)\r
80                                                 error(h,"Should not happen :2: XmlSchemaMinExclusiveFacet.Read, name="+reader.Name,null);\r
81                                         break;\r
82                                 }\r
83                                 if(level <= 1 && reader.LocalName == "annotation")\r
84                                 {\r
85                                         level = 2;      //Only one annotation\r
86                                         XmlSchemaAnnotation annotation = XmlSchemaAnnotation.Read(reader,h);\r
87                                         if(annotation != null)\r
88                                                 minex.Annotation = annotation;\r
89                                         continue;\r
90                                 }\r
91                                 reader.RaiseInvalidElementError();\r
92                         }                       \r
93                         return minex;\r
94                 }       \r
95         }\r
96 }\r