1 // Author: Dwivedi, Ajay kumar
\r
5 // Permission is hereby granted, free of charge, to any person obtaining
6 // a copy of this software and associated documentation files (the
7 // "Software"), to deal in the Software without restriction, including
8 // without limitation the rights to use, copy, modify, merge, publish,
9 // distribute, sublicense, and/or sell copies of the Software, and to
10 // permit persons to whom the Software is furnished to do so, subject to
11 // the following conditions:
13 // The above copyright notice and this permission notice shall be
14 // included in all copies or substantial portions of the Software.
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 using System.Xml.Serialization;
\r
28 namespace System.Xml.Schema
\r
31 /// Summary description for XmlSchemaRedefine.
\r
33 public class XmlSchemaRedefine : XmlSchemaExternal
\r
35 private XmlSchemaObjectTable attributeGroups;
\r
36 private XmlSchemaObjectTable groups;
\r
37 private XmlSchemaObjectCollection items;
\r
38 private XmlSchemaObjectTable schemaTypes;
\r
39 const string xmlname = "redefine";
\r
41 public XmlSchemaRedefine()
\r
43 attributeGroups = new XmlSchemaObjectTable();
\r
44 groups = new XmlSchemaObjectTable();
\r
45 items = new XmlSchemaObjectCollection(this);
\r
46 schemaTypes = new XmlSchemaObjectTable();
\r
49 [XmlElement("annotation",typeof(XmlSchemaAnnotation),Namespace=XmlSchema.Namespace)]
\r
50 [XmlElement("simpleType",typeof(XmlSchemaSimpleType),Namespace=XmlSchema.Namespace)]
\r
51 [XmlElement("complexType",typeof(XmlSchemaComplexType),Namespace=XmlSchema.Namespace)]
\r
52 [XmlElement("group",typeof(XmlSchemaGroup),Namespace=XmlSchema.Namespace)]
\r
53 //NOTE: AttributeGroup and not AttributeGroupRef
\r
54 [XmlElement("attributeGroup",typeof(XmlSchemaAttributeGroup),Namespace=XmlSchema.Namespace)]
\r
55 public XmlSchemaObjectCollection Items
\r
57 get{ return items; }
\r
61 public XmlSchemaObjectTable AttributeGroups
\r
63 get{ return attributeGroups; }
\r
67 public XmlSchemaObjectTable SchemaTypes
\r
69 get{ return schemaTypes; }
\r
73 public XmlSchemaObjectTable Groups
\r
75 get{ return groups; }
\r
79 // schemaLocation = anyURI
\r
80 // {any attributes with non-schema namespace . . .}>
\r
81 // Content: (annotation | (simpleType | complexType | group | attributeGroup))*
\r
83 internal static XmlSchemaRedefine Read(XmlSchemaReader reader, ValidationEventHandler h)
\r
85 XmlSchemaRedefine redefine = new XmlSchemaRedefine();
\r
86 reader.MoveToElement();
\r
88 if(reader.NamespaceURI != XmlSchema.Namespace || reader.LocalName != xmlname)
\r
90 error(h,"Should not happen :1: XmlSchemaRedefine.Read, name="+reader.Name,null);
\r
95 redefine.LineNumber = reader.LineNumber;
\r
96 redefine.LinePosition = reader.LinePosition;
\r
97 redefine.SourceUri = reader.BaseURI;
\r
99 while(reader.MoveToNextAttribute())
\r
101 if(reader.Name == "id")
\r
103 redefine.Id = reader.Value;
\r
105 else if(reader.Name == "schemaLocation")
\r
107 redefine.SchemaLocation = reader.Value;
\r
109 else if((reader.NamespaceURI == "" && reader.Name != "xmlns") || reader.NamespaceURI == XmlSchema.Namespace)
\r
111 error(h,reader.Name + " is not a valid attribute for redefine",null);
\r
115 XmlSchemaUtil.ReadUnhandledAttribute(reader,redefine);
\r
119 reader.MoveToElement();
\r
120 if(reader.IsEmptyElement)
\r
123 //(annotation | (simpleType | complexType | group | attributeGroup))*
\r
124 while(reader.ReadNextElement())
\r
126 if(reader.NodeType == XmlNodeType.EndElement)
\r
128 if(reader.LocalName != xmlname)
\r
129 error(h,"Should not happen :2: XmlSchemaRedefine.Read, name="+reader.Name,null);
\r
132 if(reader.LocalName == "annotation")
\r
134 XmlSchemaAnnotation annotation = XmlSchemaAnnotation.Read(reader,h);
\r
135 if(annotation != null)
\r
136 redefine.items.Add(annotation);
\r
139 if(reader.LocalName == "simpleType")
\r
141 XmlSchemaSimpleType simpleType = XmlSchemaSimpleType.Read(reader,h);
\r
142 if(simpleType != null)
\r
143 redefine.items.Add(simpleType);
\r
146 if(reader.LocalName == "complexType")
\r
148 XmlSchemaComplexType complexType = XmlSchemaComplexType.Read(reader,h);
\r
149 if(complexType != null)
\r
150 redefine.items.Add(complexType);
\r
153 if(reader.LocalName == "group")
\r
155 XmlSchemaGroup group = XmlSchemaGroup.Read(reader,h);
\r
157 redefine.items.Add(group);
\r
160 if(reader.LocalName == "attributeGroup")
\r
162 XmlSchemaAttributeGroup attributeGroup = XmlSchemaAttributeGroup.Read(reader,h);
\r
163 if(attributeGroup != null)
\r
164 redefine.items.Add(attributeGroup);
\r
167 reader.RaiseInvalidElementError();
\r