Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / schema / autovalidator.cs / 1 / autovalidator.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Schema {
using System.Diagnostics;
using System.Globalization;
#pragma warning disable 618
internal class AutoValidator : BaseValidator {
const string x_schema = "x-schema";
public AutoValidator(XmlValidatingReaderImpl reader, XmlSchemaCollection schemaCollection, ValidationEventHandler eventHandler) : base(reader, schemaCollection, eventHandler) {
schemaInfo = new SchemaInfo();
}
public override bool PreserveWhitespace {
get { return false; }
}
public override void Validate() {
ValidationType valType = DetectValidationType();
switch(valType) {
case ValidationType.XDR:
reader.Validator = new XdrValidator(this);
reader.Validator.Validate();
break;
case ValidationType.Schema:
reader.Validator = new XsdValidator(this);
reader.Validator.Validate();
break;
case ValidationType.Auto:
break;
}
}
public override void CompleteValidation() {}
public override object FindId(string name) {
return null;
}
private ValidationType DetectValidationType() {
//Type not yet detected : Check in Schema Collection
if (reader.Schemas != null && reader.Schemas.Count > 0) {
XmlSchemaCollectionEnumerator enumerator = reader.Schemas.GetEnumerator();
while (enumerator.MoveNext()) {
XmlSchemaCollectionNode node = enumerator.CurrentNode;
SchemaInfo schemaInfo = node.SchemaInfo;
if(schemaInfo.SchemaType == SchemaType.XSD)
return ValidationType.Schema;
else if(schemaInfo.SchemaType == SchemaType.XDR)
return ValidationType.XDR;
}
}
if (reader.NodeType == XmlNodeType.Element) {
SchemaType schemaType = SchemaNames.SchemaTypeFromRoot(reader.LocalName, reader.NamespaceURI);
if (schemaType == SchemaType.XSD) {
return ValidationType.Schema;
}
else if (schemaType == SchemaType.XDR) {
return ValidationType.XDR;
}
else {
int count = reader.AttributeCount;
for (int i = 0; i < count ; i++) {
reader.MoveToAttribute(i);
string objectNs = reader.NamespaceURI;
string objectName = reader.LocalName;
if (Ref.Equal(objectNs, SchemaNames.NsXmlNs)) {
if(XdrBuilder.IsXdrSchema(reader.Value)) {
reader.MoveToElement();
return ValidationType.XDR;
}
}
else if (Ref.Equal(objectNs, SchemaNames.NsXsi)) {
reader.MoveToElement();
return ValidationType.Schema;
}
else if (Ref.Equal(objectNs, SchemaNames.QnDtDt.Namespace) && Ref.Equal(objectName, SchemaNames.QnDtDt.Name)) {
reader.SchemaTypeObject = XmlSchemaDatatype.FromXdrName(reader.Value);
reader.MoveToElement();
return ValidationType.XDR;
}
} //end of for
if(count > 0) {
reader.MoveToElement();
}
}
}
return ValidationType.Auto;
}
}
#pragma warning restore 618
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataList.cs
- RegexGroupCollection.cs
- BufferBuilder.cs
- SpellerHighlightLayer.cs
- RightsManagementEncryptedStream.cs
- BindingCollection.cs
- GatewayIPAddressInformationCollection.cs
- AuthenticationModuleElementCollection.cs
- HelpKeywordAttribute.cs
- InfoCardArgumentException.cs
- EdmSchemaAttribute.cs
- Currency.cs
- CompoundFileDeflateTransform.cs
- CfgArc.cs
- ColumnBinding.cs
- ApplicationServiceHelper.cs
- BulletedList.cs
- QueryReaderSettings.cs
- CryptoKeySecurity.cs
- SessionEndedEventArgs.cs
- ByteStreamGeometryContext.cs
- InternalBase.cs
- RuleSettings.cs
- SqlWebEventProvider.cs
- XhtmlBasicControlAdapter.cs
- XmlAttributeCollection.cs
- MeshGeometry3D.cs
- RectAnimationUsingKeyFrames.cs
- ReadOnlyState.cs
- WebServiceEnumData.cs
- PolyLineSegment.cs
- sqlcontext.cs
- TargetParameterCountException.cs
- DataProtection.cs
- ScrollChangedEventArgs.cs
- EditorZoneBase.cs
- AddInController.cs
- IdlingCommunicationPool.cs
- ProgressChangedEventArgs.cs
- XamlParser.cs
- TextRunProperties.cs
- MLangCodePageEncoding.cs
- Int64AnimationBase.cs
- X509ChainElement.cs
- List.cs
- ScrollData.cs
- EqualityComparer.cs
- FileNotFoundException.cs
- ContentPropertyAttribute.cs
- ImageClickEventArgs.cs
- BaseProcessor.cs
- SmiXetterAccessMap.cs
- FrameworkElementFactoryMarkupObject.cs
- Model3D.cs
- XamlSerializerUtil.cs
- HwndTarget.cs
- HwndSource.cs
- ColumnReorderedEventArgs.cs
- ObjectSpanRewriter.cs
- FlatButtonAppearance.cs
- LoginUtil.cs
- DiagnosticTrace.cs
- LogicalTreeHelper.cs
- CustomTypeDescriptor.cs
- KeyboardEventArgs.cs
- ControlIdConverter.cs
- ApplicationInfo.cs
- StorageTypeMapping.cs
- EventLogWatcher.cs
- SQLInt64.cs
- ExtensionQuery.cs
- DtdParser.cs
- DetailsViewCommandEventArgs.cs
- RowBinding.cs
- DrawingContextDrawingContextWalker.cs
- FontConverter.cs
- AssociatedControlConverter.cs
- PropertyConverter.cs
- VoiceSynthesis.cs
- WinFormsUtils.cs
- EntityDataSourceSelectingEventArgs.cs
- ItemsPresenter.cs
- DispatcherTimer.cs
- DataSetUtil.cs
- SqlTypeConverter.cs
- mediapermission.cs
- TdsParameterSetter.cs
- QueryRewriter.cs
- ReferencedCollectionType.cs
- CommonEndpointBehaviorElement.cs
- DependencyPropertyAttribute.cs
- SizeFConverter.cs
- XamlBrushSerializer.cs
- WebPartDescription.cs
- ItemsControl.cs
- MenuItemCollectionEditorDialog.cs
- SqlGenericUtil.cs
- ErrorView.xaml.cs
- UInt64Storage.cs
- UserControlParser.cs