Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / SimpleType.cs / 1 / SimpleType.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data {
using System;
using System.Xml;
using System.Xml.Schema;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Globalization;
using System.Collections;
///
///
[Serializable]
internal sealed class SimpleType : ISerializable {
string baseType = null; // base type name
SimpleType baseSimpleType = null;
// object xmlBaseType = null; // Qualified name of Basetype
XmlQualifiedName xmlBaseType = null; // Qualified name of Basetype
string name = "";
int length = -1;
int minLength = -1;
int maxLength = -1;
string pattern = "";
string ns = ""; // my ns
//
string maxExclusive = "";
string maxInclusive = "";
string minExclusive = "";
string minInclusive = "";
//REMOVED: encoding due to [....] 2001 XDS changes
//
internal string enumeration = "";
internal SimpleType (string baseType) { // anonymous simpletype
this.baseType = baseType;
}
internal SimpleType (XmlSchemaSimpleType node) { // named simpletype
name = node.Name;
ns = (node.QualifiedName != null) ? node.QualifiedName.Namespace : "";
LoadTypeValues(node);
}
private SimpleType(SerializationInfo info, StreamingContext context) {
this.baseType = info.GetString("SimpleType.BaseType");
this.baseSimpleType = (SimpleType)info.GetValue("SimpleType.BaseSimpleType", typeof(SimpleType));
if (info.GetBoolean("SimpleType.XmlBaseType.XmlQualifiedNameExists")) {
string xmlQNName = info.GetString("SimpleType.XmlBaseType.Name");
string xmlQNNamespace = info.GetString("SimpleType.XmlBaseType.Namespace");
this.xmlBaseType = new XmlQualifiedName(xmlQNName, xmlQNNamespace);
}
else {
this.xmlBaseType = null;
}
this.name = info.GetString("SimpleType.Name");
this.ns = info.GetString("SimpleType.NS");
this.maxLength = info.GetInt32("SimpleType.MaxLength");
this.length = info.GetInt32("SimpleType.Length");
}
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
info.AddValue("SimpleType.BaseType", this.baseType);
info.AddValue("SimpleType.BaseSimpleType", this.baseSimpleType);
XmlQualifiedName xmlQN = (xmlBaseType as XmlQualifiedName);
info.AddValue("SimpleType.XmlBaseType.XmlQualifiedNameExists", xmlQN != null ? true : false);
info.AddValue("SimpleType.XmlBaseType.Name", xmlQN != null ? xmlQN.Name : null);
info.AddValue("SimpleType.XmlBaseType.Namespace", xmlQN != null ? xmlQN.Namespace : null);
info.AddValue("SimpleType.Name", this.name);
info.AddValue("SimpleType.NS", this.ns);
info.AddValue("SimpleType.MaxLength", this.maxLength);
info.AddValue("SimpleType.Length", this.length);
}
internal void LoadTypeValues (XmlSchemaSimpleType node) {
if ((node.Content is XmlSchemaSimpleTypeList) ||
(node.Content is XmlSchemaSimpleTypeUnion))
throw ExceptionBuilder.SimpleTypeNotSupported();
if (node.Content is XmlSchemaSimpleTypeRestriction) {
XmlSchemaSimpleTypeRestriction content = (XmlSchemaSimpleTypeRestriction) node.Content;
XmlSchemaSimpleType ancestor = node.BaseXmlSchemaType as XmlSchemaSimpleType;
if ((ancestor != null) && (ancestor.QualifiedName.Namespace != Keywords.XSDNS)) { // I'm assuming that built-in types don't have a name!
// Console.WriteLine("In simpleNode, ancestor.Name = '{0}'", ancestor.Name);
baseSimpleType = new SimpleType(node.BaseXmlSchemaType as XmlSchemaSimpleType);
// baseSimpleType = new SimpleType(node);
}
// do we need to put qualified name?
// for user defined simpletype, always go with qname
if (content.BaseTypeName.Namespace == Keywords.XSDNS)
baseType = content.BaseTypeName.Name;
else
baseType = content.BaseTypeName.ToString();
if (baseSimpleType != null && baseSimpleType.Name != null && baseSimpleType.Name.Length > 0) {
xmlBaseType = baseSimpleType.XmlBaseType;// SimpleTypeQualifiedName;
}
else {
xmlBaseType = content.BaseTypeName;
}
if (baseType == null || baseType.Length == 0) {
// Console.WriteLine("baseType == null, setting it to ", content.BaseType.Name);
baseType = content.BaseType.Name;
xmlBaseType = null;
}
if (baseType == "NOTATION")
baseType = "string";
foreach(XmlSchemaFacet facet in content.Facets) {
if (facet is XmlSchemaLengthFacet)
length = Convert.ToInt32(facet.Value, null);
if (facet is XmlSchemaMinLengthFacet)
minLength = Convert.ToInt32(facet.Value, null);
if (facet is XmlSchemaMaxLengthFacet)
maxLength = Convert.ToInt32(facet.Value, null);
if (facet is XmlSchemaPatternFacet)
pattern = facet.Value;
if (facet is XmlSchemaEnumerationFacet)
enumeration = !Common.ADP.IsEmpty(enumeration) ? enumeration + " " + facet.Value : facet.Value;
if (facet is XmlSchemaMinExclusiveFacet)
minExclusive = facet.Value;
if (facet is XmlSchemaMinInclusiveFacet)
minInclusive = facet.Value;
if (facet is XmlSchemaMaxExclusiveFacet)
maxExclusive = facet.Value;
if (facet is XmlSchemaMaxInclusiveFacet)
maxInclusive = facet.Value;
}
}
string tempStr = XSDSchema.GetMsdataAttribute(node, Keywords.TARGETNAMESPACE);
if (tempStr != null)
ns = tempStr;
}
internal bool IsPlainString() {
return (
XSDSchema.QualifiedName(this.baseType) == XSDSchema.QualifiedName("string") &&
Common.ADP.IsEmpty(this.name) &&
this.length == -1 &&
this.minLength == -1 &&
this.maxLength == -1 &&
Common.ADP.IsEmpty(this.pattern) &&
Common.ADP.IsEmpty(this.maxExclusive) &&
Common.ADP.IsEmpty(this.maxInclusive) &&
Common.ADP.IsEmpty(this.minExclusive) &&
Common.ADP.IsEmpty(this.minInclusive) &&
Common.ADP.IsEmpty(this.enumeration)
);
}
internal string BaseType {
get {
return baseType;
}
}
internal XmlQualifiedName XmlBaseType {
get {
return (XmlQualifiedName)xmlBaseType;
}
}
internal string Name {
get {
return name;
}
}
internal string Namespace {
get {
return ns;
}
}
internal int Length {
get {
return length;
}
}
internal int MaxLength {
get {
return maxLength;
}
set {
maxLength = value;
}
}
internal SimpleType BaseSimpleType {
get {
return baseSimpleType;
}
}
// return qualified name of this simple type
public string SimpleTypeQualifiedName {
get {
if (ns.Length == 0)
return name;
return (ns + ":" + name);
}
}
internal string QualifiedName(string name) {
int iStart = name.IndexOf(':');
if (iStart == -1)
return Keywords.XSD_PREFIXCOLON + name;
else
return name;
}
/*
internal XmlNode ToNode(XmlDocument dc) {
return ToNode(dc, null, false);
}
*/
internal XmlNode ToNode(XmlDocument dc, Hashtable prefixes, bool inRemoting) {
XmlElement typeNode = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_SIMPLETYPE, Keywords.XSDNS);
if (name != null && name.Length != 0) {
// this is a global type :
typeNode.SetAttribute(Keywords.NAME, name);
if (inRemoting) {
typeNode.SetAttribute(Keywords.TARGETNAMESPACE, Keywords.MSDNS, this.Namespace);
}
}
XmlElement type = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_RESTRICTION, Keywords.XSDNS);
if (!inRemoting) {
if (baseSimpleType != null) {
if (baseSimpleType.Namespace != null && baseSimpleType.Namespace.Length > 0) {
string prefix = (prefixes!=null)?(string) prefixes[baseSimpleType.Namespace]:null;
if (prefix != null) {
type.SetAttribute(Keywords.BASE, (prefix +":"+ baseSimpleType.Name));
}
else {
type.SetAttribute(Keywords.BASE, baseSimpleType.Name);
}
}
else { // [....]
type.SetAttribute(Keywords.BASE, baseSimpleType.Name);
}
}
else {
type.SetAttribute(Keywords.BASE, QualifiedName(baseType)); // has to be xs:SomePrimitiveType
}
}
else{
type.SetAttribute(Keywords.BASE, (baseSimpleType != null) ? baseSimpleType.Name : QualifiedName(baseType));
}
XmlElement constraint;
if (length >= 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_LENGTH, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, length.ToString(CultureInfo.InvariantCulture));
type.AppendChild(constraint);
}
if (maxLength >= 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXLENGTH, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, maxLength.ToString(CultureInfo.InvariantCulture));
type.AppendChild(constraint);
}
/* // removed due to MDAC bug 83892
// will be reactivated in whidbey with the proper handling
if (pattern != null && pattern.Length > 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_PATTERN, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, pattern);
type.AppendChild(constraint);
}
if (minLength >= 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MINLENGTH, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, minLength.ToString());
type.AppendChild(constraint);
}
if (minInclusive != null && minInclusive.Length > 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MININCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, minInclusive);
type.AppendChild(constraint);
}
if (minExclusive != null && minExclusive.Length > 0) {
constraint =dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MINEXCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, minExclusive);
type.AppendChild(constraint);
}
if (maxInclusive != null && maxInclusive.Length > 0) {
constraint =dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXINCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, maxInclusive);
type.AppendChild(constraint);
}
if (maxExclusive != null && maxExclusive.Length > 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXEXCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, maxExclusive);
type.AppendChild(constraint);
}
if (enumeration.Length > 0) {
string[] list = enumeration.TrimEnd(null).Split(null);
for (int i = 0; i < list.Length; i++) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_ENUMERATION, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, list[i]);
type.AppendChild(constraint);
}
}
*/
typeNode.AppendChild(type);
return typeNode;
}
//
internal static SimpleType CreateEnumeratedType(string values) {
SimpleType enumType = new SimpleType("string");
enumType.enumeration = values;
return enumType;
}
internal static SimpleType CreateByteArrayType(string encoding) {
SimpleType byteArrayType = new SimpleType("base64Binary");
return byteArrayType;
}
internal static SimpleType CreateLimitedStringType(int length) {
SimpleType limitedString = new SimpleType("string");
limitedString.maxLength = length;
return limitedString;
}
internal static SimpleType CreateSimpleType(Type type) {
SimpleType simpleType = null;
if(type == typeof(Char)) {
simpleType = new SimpleType("string");
simpleType.length = 1;
}
return simpleType;
}
// Assumption is otherSimpleType and current ST name and NS matches.
// if existing simpletype is being redefined with different facets, then it will return no-empty string defining the error
internal string HasConflictingDefinition(SimpleType otherSimpleType) {
if (otherSimpleType == null)
return "otherSimpleType";
if (this.MaxLength != otherSimpleType.MaxLength)
return ("MaxLength");
if (string.Compare(this.BaseType, otherSimpleType.BaseType, StringComparison.Ordinal) != 0)
return ("BaseType");
if ((this.BaseSimpleType == null && otherSimpleType.BaseSimpleType != null) &&
(this.BaseSimpleType.HasConflictingDefinition(otherSimpleType.BaseSimpleType)).Length != 0)
return ("BaseSimpleType");
return string.Empty;
}
// only string types can have MaxLength
internal bool CanHaveMaxLength() {
SimpleType rootType = this;
while (rootType.BaseSimpleType != null) {
rootType = rootType.BaseSimpleType;
}
if (string.Compare(rootType.BaseType, "string", StringComparison.OrdinalIgnoreCase) == 0)
return true;
return false;
}
internal void ConvertToAnnonymousSimpleType() {
this.name = null;
this.ns = string.Empty;
SimpleType tmpSimpleType = this;
while (tmpSimpleType.baseSimpleType != null) {
tmpSimpleType = tmpSimpleType.baseSimpleType;
}
baseType = tmpSimpleType.baseType;
baseSimpleType = tmpSimpleType.baseSimpleType;
xmlBaseType = tmpSimpleType.xmlBaseType;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data {
using System;
using System.Xml;
using System.Xml.Schema;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Globalization;
using System.Collections;
///
///
[Serializable]
internal sealed class SimpleType : ISerializable {
string baseType = null; // base type name
SimpleType baseSimpleType = null;
// object xmlBaseType = null; // Qualified name of Basetype
XmlQualifiedName xmlBaseType = null; // Qualified name of Basetype
string name = "";
int length = -1;
int minLength = -1;
int maxLength = -1;
string pattern = "";
string ns = ""; // my ns
//
string maxExclusive = "";
string maxInclusive = "";
string minExclusive = "";
string minInclusive = "";
//REMOVED: encoding due to [....] 2001 XDS changes
//
internal string enumeration = "";
internal SimpleType (string baseType) { // anonymous simpletype
this.baseType = baseType;
}
internal SimpleType (XmlSchemaSimpleType node) { // named simpletype
name = node.Name;
ns = (node.QualifiedName != null) ? node.QualifiedName.Namespace : "";
LoadTypeValues(node);
}
private SimpleType(SerializationInfo info, StreamingContext context) {
this.baseType = info.GetString("SimpleType.BaseType");
this.baseSimpleType = (SimpleType)info.GetValue("SimpleType.BaseSimpleType", typeof(SimpleType));
if (info.GetBoolean("SimpleType.XmlBaseType.XmlQualifiedNameExists")) {
string xmlQNName = info.GetString("SimpleType.XmlBaseType.Name");
string xmlQNNamespace = info.GetString("SimpleType.XmlBaseType.Namespace");
this.xmlBaseType = new XmlQualifiedName(xmlQNName, xmlQNNamespace);
}
else {
this.xmlBaseType = null;
}
this.name = info.GetString("SimpleType.Name");
this.ns = info.GetString("SimpleType.NS");
this.maxLength = info.GetInt32("SimpleType.MaxLength");
this.length = info.GetInt32("SimpleType.Length");
}
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
info.AddValue("SimpleType.BaseType", this.baseType);
info.AddValue("SimpleType.BaseSimpleType", this.baseSimpleType);
XmlQualifiedName xmlQN = (xmlBaseType as XmlQualifiedName);
info.AddValue("SimpleType.XmlBaseType.XmlQualifiedNameExists", xmlQN != null ? true : false);
info.AddValue("SimpleType.XmlBaseType.Name", xmlQN != null ? xmlQN.Name : null);
info.AddValue("SimpleType.XmlBaseType.Namespace", xmlQN != null ? xmlQN.Namespace : null);
info.AddValue("SimpleType.Name", this.name);
info.AddValue("SimpleType.NS", this.ns);
info.AddValue("SimpleType.MaxLength", this.maxLength);
info.AddValue("SimpleType.Length", this.length);
}
internal void LoadTypeValues (XmlSchemaSimpleType node) {
if ((node.Content is XmlSchemaSimpleTypeList) ||
(node.Content is XmlSchemaSimpleTypeUnion))
throw ExceptionBuilder.SimpleTypeNotSupported();
if (node.Content is XmlSchemaSimpleTypeRestriction) {
XmlSchemaSimpleTypeRestriction content = (XmlSchemaSimpleTypeRestriction) node.Content;
XmlSchemaSimpleType ancestor = node.BaseXmlSchemaType as XmlSchemaSimpleType;
if ((ancestor != null) && (ancestor.QualifiedName.Namespace != Keywords.XSDNS)) { // I'm assuming that built-in types don't have a name!
// Console.WriteLine("In simpleNode, ancestor.Name = '{0}'", ancestor.Name);
baseSimpleType = new SimpleType(node.BaseXmlSchemaType as XmlSchemaSimpleType);
// baseSimpleType = new SimpleType(node);
}
// do we need to put qualified name?
// for user defined simpletype, always go with qname
if (content.BaseTypeName.Namespace == Keywords.XSDNS)
baseType = content.BaseTypeName.Name;
else
baseType = content.BaseTypeName.ToString();
if (baseSimpleType != null && baseSimpleType.Name != null && baseSimpleType.Name.Length > 0) {
xmlBaseType = baseSimpleType.XmlBaseType;// SimpleTypeQualifiedName;
}
else {
xmlBaseType = content.BaseTypeName;
}
if (baseType == null || baseType.Length == 0) {
// Console.WriteLine("baseType == null, setting it to ", content.BaseType.Name);
baseType = content.BaseType.Name;
xmlBaseType = null;
}
if (baseType == "NOTATION")
baseType = "string";
foreach(XmlSchemaFacet facet in content.Facets) {
if (facet is XmlSchemaLengthFacet)
length = Convert.ToInt32(facet.Value, null);
if (facet is XmlSchemaMinLengthFacet)
minLength = Convert.ToInt32(facet.Value, null);
if (facet is XmlSchemaMaxLengthFacet)
maxLength = Convert.ToInt32(facet.Value, null);
if (facet is XmlSchemaPatternFacet)
pattern = facet.Value;
if (facet is XmlSchemaEnumerationFacet)
enumeration = !Common.ADP.IsEmpty(enumeration) ? enumeration + " " + facet.Value : facet.Value;
if (facet is XmlSchemaMinExclusiveFacet)
minExclusive = facet.Value;
if (facet is XmlSchemaMinInclusiveFacet)
minInclusive = facet.Value;
if (facet is XmlSchemaMaxExclusiveFacet)
maxExclusive = facet.Value;
if (facet is XmlSchemaMaxInclusiveFacet)
maxInclusive = facet.Value;
}
}
string tempStr = XSDSchema.GetMsdataAttribute(node, Keywords.TARGETNAMESPACE);
if (tempStr != null)
ns = tempStr;
}
internal bool IsPlainString() {
return (
XSDSchema.QualifiedName(this.baseType) == XSDSchema.QualifiedName("string") &&
Common.ADP.IsEmpty(this.name) &&
this.length == -1 &&
this.minLength == -1 &&
this.maxLength == -1 &&
Common.ADP.IsEmpty(this.pattern) &&
Common.ADP.IsEmpty(this.maxExclusive) &&
Common.ADP.IsEmpty(this.maxInclusive) &&
Common.ADP.IsEmpty(this.minExclusive) &&
Common.ADP.IsEmpty(this.minInclusive) &&
Common.ADP.IsEmpty(this.enumeration)
);
}
internal string BaseType {
get {
return baseType;
}
}
internal XmlQualifiedName XmlBaseType {
get {
return (XmlQualifiedName)xmlBaseType;
}
}
internal string Name {
get {
return name;
}
}
internal string Namespace {
get {
return ns;
}
}
internal int Length {
get {
return length;
}
}
internal int MaxLength {
get {
return maxLength;
}
set {
maxLength = value;
}
}
internal SimpleType BaseSimpleType {
get {
return baseSimpleType;
}
}
// return qualified name of this simple type
public string SimpleTypeQualifiedName {
get {
if (ns.Length == 0)
return name;
return (ns + ":" + name);
}
}
internal string QualifiedName(string name) {
int iStart = name.IndexOf(':');
if (iStart == -1)
return Keywords.XSD_PREFIXCOLON + name;
else
return name;
}
/*
internal XmlNode ToNode(XmlDocument dc) {
return ToNode(dc, null, false);
}
*/
internal XmlNode ToNode(XmlDocument dc, Hashtable prefixes, bool inRemoting) {
XmlElement typeNode = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_SIMPLETYPE, Keywords.XSDNS);
if (name != null && name.Length != 0) {
// this is a global type :
typeNode.SetAttribute(Keywords.NAME, name);
if (inRemoting) {
typeNode.SetAttribute(Keywords.TARGETNAMESPACE, Keywords.MSDNS, this.Namespace);
}
}
XmlElement type = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_RESTRICTION, Keywords.XSDNS);
if (!inRemoting) {
if (baseSimpleType != null) {
if (baseSimpleType.Namespace != null && baseSimpleType.Namespace.Length > 0) {
string prefix = (prefixes!=null)?(string) prefixes[baseSimpleType.Namespace]:null;
if (prefix != null) {
type.SetAttribute(Keywords.BASE, (prefix +":"+ baseSimpleType.Name));
}
else {
type.SetAttribute(Keywords.BASE, baseSimpleType.Name);
}
}
else { // [....]
type.SetAttribute(Keywords.BASE, baseSimpleType.Name);
}
}
else {
type.SetAttribute(Keywords.BASE, QualifiedName(baseType)); // has to be xs:SomePrimitiveType
}
}
else{
type.SetAttribute(Keywords.BASE, (baseSimpleType != null) ? baseSimpleType.Name : QualifiedName(baseType));
}
XmlElement constraint;
if (length >= 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_LENGTH, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, length.ToString(CultureInfo.InvariantCulture));
type.AppendChild(constraint);
}
if (maxLength >= 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXLENGTH, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, maxLength.ToString(CultureInfo.InvariantCulture));
type.AppendChild(constraint);
}
/* // removed due to MDAC bug 83892
// will be reactivated in whidbey with the proper handling
if (pattern != null && pattern.Length > 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_PATTERN, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, pattern);
type.AppendChild(constraint);
}
if (minLength >= 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MINLENGTH, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, minLength.ToString());
type.AppendChild(constraint);
}
if (minInclusive != null && minInclusive.Length > 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MININCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, minInclusive);
type.AppendChild(constraint);
}
if (minExclusive != null && minExclusive.Length > 0) {
constraint =dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MINEXCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, minExclusive);
type.AppendChild(constraint);
}
if (maxInclusive != null && maxInclusive.Length > 0) {
constraint =dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXINCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, maxInclusive);
type.AppendChild(constraint);
}
if (maxExclusive != null && maxExclusive.Length > 0) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXEXCLUSIVE, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, maxExclusive);
type.AppendChild(constraint);
}
if (enumeration.Length > 0) {
string[] list = enumeration.TrimEnd(null).Split(null);
for (int i = 0; i < list.Length; i++) {
constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_ENUMERATION, Keywords.XSDNS);
constraint.SetAttribute(Keywords.VALUE, list[i]);
type.AppendChild(constraint);
}
}
*/
typeNode.AppendChild(type);
return typeNode;
}
//
internal static SimpleType CreateEnumeratedType(string values) {
SimpleType enumType = new SimpleType("string");
enumType.enumeration = values;
return enumType;
}
internal static SimpleType CreateByteArrayType(string encoding) {
SimpleType byteArrayType = new SimpleType("base64Binary");
return byteArrayType;
}
internal static SimpleType CreateLimitedStringType(int length) {
SimpleType limitedString = new SimpleType("string");
limitedString.maxLength = length;
return limitedString;
}
internal static SimpleType CreateSimpleType(Type type) {
SimpleType simpleType = null;
if(type == typeof(Char)) {
simpleType = new SimpleType("string");
simpleType.length = 1;
}
return simpleType;
}
// Assumption is otherSimpleType and current ST name and NS matches.
// if existing simpletype is being redefined with different facets, then it will return no-empty string defining the error
internal string HasConflictingDefinition(SimpleType otherSimpleType) {
if (otherSimpleType == null)
return "otherSimpleType";
if (this.MaxLength != otherSimpleType.MaxLength)
return ("MaxLength");
if (string.Compare(this.BaseType, otherSimpleType.BaseType, StringComparison.Ordinal) != 0)
return ("BaseType");
if ((this.BaseSimpleType == null && otherSimpleType.BaseSimpleType != null) &&
(this.BaseSimpleType.HasConflictingDefinition(otherSimpleType.BaseSimpleType)).Length != 0)
return ("BaseSimpleType");
return string.Empty;
}
// only string types can have MaxLength
internal bool CanHaveMaxLength() {
SimpleType rootType = this;
while (rootType.BaseSimpleType != null) {
rootType = rootType.BaseSimpleType;
}
if (string.Compare(rootType.BaseType, "string", StringComparison.OrdinalIgnoreCase) == 0)
return true;
return false;
}
internal void ConvertToAnnonymousSimpleType() {
this.name = null;
this.ns = string.Empty;
SimpleType tmpSimpleType = this;
while (tmpSimpleType.baseSimpleType != null) {
tmpSimpleType = tmpSimpleType.baseSimpleType;
}
baseType = tmpSimpleType.baseType;
baseSimpleType = tmpSimpleType.baseSimpleType;
xmlBaseType = tmpSimpleType.xmlBaseType;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- cookiecontainer.cs
- WebScriptEndpointElement.cs
- TraceProvider.cs
- ServiceInstanceProvider.cs
- BufferedReadStream.cs
- CultureInfoConverter.cs
- WebPartChrome.cs
- NamedPermissionSet.cs
- KnownBoxes.cs
- ProvidePropertyAttribute.cs
- XmlILOptimizerVisitor.cs
- PartialList.cs
- RoleService.cs
- SharedPersonalizationStateInfo.cs
- ForeignConstraint.cs
- UrlPath.cs
- PrefixQName.cs
- WebPartDisplayMode.cs
- RankException.cs
- MailSettingsSection.cs
- BamlWriter.cs
- Msmq.cs
- VersionConverter.cs
- StreamAsIStream.cs
- BlobPersonalizationState.cs
- BindingNavigator.cs
- GeneralTransformGroup.cs
- ZoneIdentityPermission.cs
- WebPartVerb.cs
- TypographyProperties.cs
- Resources.Designer.cs
- PersianCalendar.cs
- IdentityModelStringsVersion1.cs
- XmlSchemaSet.cs
- StringUtil.cs
- XmlMembersMapping.cs
- SecurityManager.cs
- SqlBulkCopyColumnMapping.cs
- SerializationInfo.cs
- ModelUIElement3D.cs
- MasterPageBuildProvider.cs
- FileVersionInfo.cs
- ScriptingJsonSerializationSection.cs
- TextDpi.cs
- MetadataPropertyCollection.cs
- Html32TextWriter.cs
- ObjectIDGenerator.cs
- ToolStripButton.cs
- AssociationTypeEmitter.cs
- ParameterEditorUserControl.cs
- ApplicationBuildProvider.cs
- WebPartActionVerb.cs
- NumberAction.cs
- CodeEntryPointMethod.cs
- Int64AnimationBase.cs
- StringDictionary.cs
- Stacktrace.cs
- ButtonFieldBase.cs
- AsynchronousChannelMergeEnumerator.cs
- Line.cs
- CodeExporter.cs
- ChangeProcessor.cs
- BindingSourceDesigner.cs
- JsonReader.cs
- LogicalExpr.cs
- GridViewCancelEditEventArgs.cs
- CodePageUtils.cs
- CategoryEditor.cs
- IsolationInterop.cs
- BitStream.cs
- GatewayDefinition.cs
- StateWorkerRequest.cs
- validationstate.cs
- HttpCapabilitiesEvaluator.cs
- ExportOptions.cs
- OdbcConnectionPoolProviderInfo.cs
- TriggerBase.cs
- RenderOptions.cs
- DataGridViewCellCollection.cs
- ParamArrayAttribute.cs
- WinCategoryAttribute.cs
- SuppressIldasmAttribute.cs
- CurrencyManager.cs
- ComboBox.cs
- PrePrepareMethodAttribute.cs
- ExceptionWrapper.cs
- Pens.cs
- Propagator.ExtentPlaceholderCreator.cs
- ScriptingAuthenticationServiceSection.cs
- SmiTypedGetterSetter.cs
- NCryptSafeHandles.cs
- _ProxyChain.cs
- SqlTopReducer.cs
- TraceUtility.cs
- CompiledAction.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- DocumentXPathNavigator.cs
- RsaSecurityKey.cs
- COAUTHIDENTITY.cs
- ServerIdentity.cs