Reformat changes, and add some small debugging information to catch errors
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaDocumentation.cs
1 // Author: Dwivedi, Ajay kumar\r
2 //            Adwiv@Yahoo.com\r
3 using System;\r
4 using System.Xml;\r
5 using System.Xml.Serialization;\r
6 \r
7 namespace System.Xml.Schema\r
8 {\r
9         /// <summary>\r
10         /// Summary description for XmlSchemaDocumentation.\r
11         /// </summary>\r
12         public class XmlSchemaDocumentation : XmlSchemaObject\r
13         {\r
14                 private string language;\r
15                 private XmlNode[] markup;\r
16                 private string source;\r
17 \r
18                 public XmlSchemaDocumentation()\r
19                 {\r
20                 }\r
21 \r
22                 [XmlAnyElement]\r
23                 [XmlText]\r
24                 public XmlNode[] Markup \r
25                 {\r
26                         get{ return  markup; }\r
27                         set{ markup = value; }\r
28                 }\r
29                 \r
30                 [System.Xml.Serialization.XmlAttribute("source")]\r
31                 public string Source \r
32                 {\r
33                         get{ return  source; } \r
34                         set{ source = value; }\r
35                 }\r
36 \r
37                 [System.Xml.Serialization.XmlAttribute("xml:lang")]\r
38                 public string Language \r
39                 {\r
40                         get{ return  language; }\r
41                         set{ language = value; }\r
42                 }\r
43 \r
44                 //<documentation\r
45                 //  source = anyURI\r
46                 //  xml:lang = language>\r
47                 //  Content: ({any})*\r
48                 //</documentation>\r
49                 internal static XmlSchemaDocumentation Read(XmlSchemaReader reader, ValidationEventHandler h, out bool skip)\r
50                 {\r
51                         skip = false;\r
52                         XmlSchemaDocumentation doc = new XmlSchemaDocumentation();\r
53 \r
54                         reader.MoveToElement();\r
55                         if(reader.NamespaceURI != XmlSchema.Namespace || reader.LocalName != "documentation")\r
56                         {\r
57                                 error(h,"Should not happen :1: XmlSchemaDocumentation.Read, name="+reader.Name,null);\r
58                                 reader.Skip();\r
59                                 return null;\r
60                         }\r
61 \r
62                         doc.LineNumber = reader.LineNumber;\r
63                         doc.LinePosition = reader.LinePosition;\r
64                         doc.SourceUri = reader.BaseURI;\r
65 \r
66                         while(reader.MoveToNextAttribute())\r
67                         {\r
68                                 if(reader.Name == "source")\r
69                                 {\r
70                                         doc.source = reader.Value;\r
71                                 }\r
72                                 else if(reader.Name == "xml:lang")\r
73                                 {\r
74                                         doc.language = reader.Value;\r
75                                 }\r
76                                 else\r
77                                 {\r
78                                         error(h,reader.Name + " is not a valid attribute for documentation",null);\r
79                                 }\r
80                         }\r
81 \r
82                         reader.MoveToElement();\r
83                         if(reader.IsEmptyElement)\r
84                                 return doc;\r
85 \r
86                         //Content {any}*\r
87                         XmlDocument xmldoc = new XmlDocument();\r
88                         xmldoc.AppendChild(xmldoc.ReadNode(reader));\r
89                         XmlNode root = xmldoc.FirstChild;\r
90                         if(root != null && root.ChildNodes != null)\r
91                         {\r
92                                 doc.Markup = new XmlNode[root.ChildNodes.Count];\r
93                                 for(int i=0;i<root.ChildNodes.Count;i++)\r
94                                 {\r
95                                         doc.Markup[i] = root.ChildNodes[i];\r
96                                 }\r
97                         }\r
98                         if(reader.NodeType == XmlNodeType.Element || reader.NodeType == XmlNodeType.EndElement)\r
99                                 skip = true;\r
100 \r
101                         return doc;\r
102                 }\r
103         }\r
104 }\r