Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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. // //[....] //----------------------------------------------------------------------------- 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProcessInfo.cs
- PageParserFilter.cs
- FileDialog.cs
- CancelAsyncOperationRequest.cs
- InplaceBitmapMetadataWriter.cs
- ListMarkerSourceInfo.cs
- TypeInfo.cs
- DispatchChannelSink.cs
- FontNamesConverter.cs
- PartialCachingAttribute.cs
- ActivationServices.cs
- ErrorWrapper.cs
- DesignerDataRelationship.cs
- CharConverter.cs
- ClrPerspective.cs
- ChangesetResponse.cs
- Clock.cs
- AgileSafeNativeMemoryHandle.cs
- RoleManagerModule.cs
- CmsInterop.cs
- PropertyFilter.cs
- DataRow.cs
- HttpCookiesSection.cs
- DataServiceQueryException.cs
- BasicCellRelation.cs
- SizeAnimationBase.cs
- TdsParserSessionPool.cs
- ClonableStack.cs
- ECDiffieHellmanPublicKey.cs
- MultiPageTextView.cs
- Pkcs7Recipient.cs
- SmiConnection.cs
- FixedSOMTable.cs
- TabItemAutomationPeer.cs
- TrackBar.cs
- MailAddress.cs
- HtmlLink.cs
- DelegatingTypeDescriptionProvider.cs
- BulletChrome.cs
- ExceptionValidationRule.cs
- SubMenuStyleCollection.cs
- OleDbInfoMessageEvent.cs
- ComponentChangingEvent.cs
- SemanticTag.cs
- AdapterSwitches.cs
- CompilationRelaxations.cs
- TagPrefixCollection.cs
- UnsafeNativeMethodsTablet.cs
- InstanceCollisionException.cs
- IPEndPointCollection.cs
- ValidationResult.cs
- HttpListener.cs
- TdsParserHelperClasses.cs
- ColumnClickEvent.cs
- ToolStripSystemRenderer.cs
- WebAdminConfigurationHelper.cs
- TransformerConfigurationWizardBase.cs
- StringUtil.cs
- CollectionContainer.cs
- TreeNodeMouseHoverEvent.cs
- DBConnection.cs
- SchemaImporterExtensionsSection.cs
- AstTree.cs
- Point3DIndependentAnimationStorage.cs
- InputLangChangeEvent.cs
- ToolStripArrowRenderEventArgs.cs
- DrawingDrawingContext.cs
- RegexRunner.cs
- NativeObjectSecurity.cs
- InkCanvasAutomationPeer.cs
- InterleavedZipPartStream.cs
- TabControlEvent.cs
- TimeSpanConverter.cs
- InputReport.cs
- WmlFormAdapter.cs
- RewritingValidator.cs
- WebPartHelpVerb.cs
- StoreContentChangedEventArgs.cs
- EntityDataReader.cs
- Tokenizer.cs
- CacheEntry.cs
- ToolStripPanelSelectionBehavior.cs
- DesignOnlyAttribute.cs
- ReadOnlyDataSourceView.cs
- SiteMapNodeCollection.cs
- SimplePropertyEntry.cs
- RuleSettingsCollection.cs
- CodeAttributeDeclarationCollection.cs
- ItemType.cs
- CodeFieldReferenceExpression.cs
- TextBox.cs
- ReversePositionQuery.cs
- WhereaboutsReader.cs
- LockRecursionException.cs
- DataBoundControlHelper.cs
- RemoteEndpointMessageProperty.cs
- AttributeQuery.cs
- DataBindingCollectionConverter.cs
- WorkerRequest.cs
- ObjectItemConventionAssemblyLoader.cs