//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // // Microsoft //------------------------------------------------------------------------------ using System.Collections; using System.ComponentModel; using System.Xml.Serialization; namespace System.Xml.Schema { /// /// /// [To be supplied.] /// public class XmlSchemaAttribute : XmlSchemaAnnotated { string defaultValue; string fixedValue; string name; XmlSchemaForm form = XmlSchemaForm.None; XmlSchemaUse use = XmlSchemaUse.None; XmlQualifiedName refName = XmlQualifiedName.Empty; XmlQualifiedName typeName = XmlQualifiedName.Empty; XmlQualifiedName qualifiedName = XmlQualifiedName.Empty; XmlSchemaSimpleType type; XmlSchemaSimpleType attributeType; SchemaAttDef attDef; /// /// /// [To be supplied.] /// [XmlAttribute("default")] [DefaultValue(null)] public string DefaultValue { get { return defaultValue; } set { defaultValue = value; } } /// /// /// [To be supplied.] /// [XmlAttribute("fixed")] [DefaultValue(null)] public string FixedValue { get { return fixedValue; } set { fixedValue = value; } } /// /// /// [To be supplied.] /// [XmlAttribute("form"), DefaultValue(XmlSchemaForm.None)] public XmlSchemaForm Form { get { return form; } set { form = value; } } /// /// /// [To be supplied.] /// [XmlAttribute("name")] public string Name { get { return name; } set { name = value; } } /// /// /// [To be supplied.] /// [XmlAttribute("ref")] public XmlQualifiedName RefName { get { return refName; } set { refName = (value == null ? XmlQualifiedName.Empty : value); } } /// /// /// [To be supplied.] /// [XmlAttribute("type")] public XmlQualifiedName SchemaTypeName { get { return typeName; } set { typeName = (value == null ? XmlQualifiedName.Empty : value); } } /// /// /// [To be supplied.] /// [XmlElement("simpleType")] public XmlSchemaSimpleType SchemaType { get { return type; } set { type = value; } } /// /// /// [To be supplied.] /// [XmlAttribute("use"), DefaultValue(XmlSchemaUse.None)] public XmlSchemaUse Use { get { return use; } set { use = value; } } /// /// /// [To be supplied.] /// [XmlIgnore] public XmlQualifiedName QualifiedName { get { return qualifiedName; } } /// /// /// [To be supplied.] /// [XmlIgnore] [Obsolete("This property has been deprecated. Please use AttributeSchemaType property that returns a strongly typed attribute type. http://go.microsoft.com/fwlink/?linkid=14202")] public object AttributeType { get { if (attributeType == null) return null; if (attributeType.QualifiedName.Namespace == XmlReservedNs.NsXs) { return attributeType.Datatype; } return attributeType; } } /// /// /// [To be supplied.] /// [XmlIgnore] public XmlSchemaSimpleType AttributeSchemaType { get { return attributeType; } } internal XmlReader Validate(XmlReader reader, XmlResolver resolver, XmlSchemaSet schemaSet, ValidationEventHandler valEventHandler) { if (schemaSet != null) { XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.ValidationType = ValidationType.Schema; readerSettings.Schemas = schemaSet; readerSettings.ValidationEventHandler += valEventHandler; return new XsdValidatingReader(reader, resolver, readerSettings, this); } return null; } [XmlIgnore] internal XmlSchemaDatatype Datatype { get { if (attributeType != null) { return attributeType.Datatype; } return null; } } internal void SetQualifiedName(XmlQualifiedName value) { qualifiedName = value; } internal void SetAttributeType(XmlSchemaSimpleType value) { attributeType = value; } internal SchemaAttDef AttDef { get { return attDef; } set { attDef = value; } } internal bool HasDefault { get { return defaultValue != null; } } [XmlIgnore] internal override string NameAttribute { get { return Name; } set { Name = value; } } internal override XmlSchemaObject Clone() { XmlSchemaAttribute newAtt = (XmlSchemaAttribute)MemberwiseClone(); //Deep clone the QNames as these will be updated on chameleon includes newAtt.refName = this.refName.Clone(); newAtt.typeName = this.typeName.Clone(); newAtt.qualifiedName = this.qualifiedName.Clone(); return newAtt; } } }