Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / schema / autovalidator.cs / 1305376 / 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, IValidationEventHandling eventHandling) : base(reader, schemaCollection, eventHandling) { 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, IValidationEventHandling eventHandling) : base(reader, schemaCollection, eventHandling) { 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
- FileLoadException.cs
- GeneralTransform2DTo3DTo2D.cs
- Listbox.cs
- XmlIlVisitor.cs
- TriggerCollection.cs
- ChildTable.cs
- DataTableReader.cs
- VariableAction.cs
- CallbackHandler.cs
- SharedUtils.cs
- ListContractAdapter.cs
- StatusBar.cs
- XmlSchemaInclude.cs
- ConfigXmlCDataSection.cs
- ColumnWidthChangingEvent.cs
- CompatibleIComparer.cs
- SwitchElementsCollection.cs
- Int32Converter.cs
- ControlUtil.cs
- WmlValidationSummaryAdapter.cs
- Hyperlink.cs
- FileLevelControlBuilderAttribute.cs
- HotCommands.cs
- JsonCollectionDataContract.cs
- Size3D.cs
- ContextActivityUtils.cs
- ExpandCollapsePatternIdentifiers.cs
- SQLBytesStorage.cs
- HandoffBehavior.cs
- LinkedList.cs
- ParserOptions.cs
- ObjectConverter.cs
- EdmFunction.cs
- RequestQueryProcessor.cs
- GeometryModel3D.cs
- TextMetrics.cs
- QueryPageSettingsEventArgs.cs
- MaterialGroup.cs
- FocusManager.cs
- CheckBox.cs
- WindowsStatic.cs
- SortDescription.cs
- XPathAncestorQuery.cs
- BuildProvider.cs
- FixedHyperLink.cs
- SqlStream.cs
- X509CertificateValidator.cs
- Switch.cs
- TabletDeviceInfo.cs
- SwitchCase.cs
- UnknownWrapper.cs
- StateMachine.cs
- DSASignatureFormatter.cs
- DataTableMapping.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ImageCodecInfo.cs
- KeyedPriorityQueue.cs
- Tuple.cs
- Image.cs
- DbXmlEnabledProviderManifest.cs
- SlipBehavior.cs
- WebPartMinimizeVerb.cs
- StateRuntime.cs
- TextSchema.cs
- coordinatorfactory.cs
- WindowsEditBox.cs
- DataRelationCollection.cs
- BamlRecordWriter.cs
- CompilerState.cs
- HttpInputStream.cs
- TerminatorSinks.cs
- ReferenceService.cs
- BoundsDrawingContextWalker.cs
- RowBinding.cs
- CheckPair.cs
- DataControlCommands.cs
- TdsRecordBufferSetter.cs
- SqlDataSourceFilteringEventArgs.cs
- PreparingEnlistment.cs
- ComponentChangedEvent.cs
- ExceptionHandlers.cs
- ByteAnimationUsingKeyFrames.cs
- StatementContext.cs
- WebPageTraceListener.cs
- SqlServer2KCompatibilityCheck.cs
- PartBasedPackageProperties.cs
- TransactionProxy.cs
- EmptyReadOnlyDictionaryInternal.cs
- ProfilePropertyNameValidator.cs
- XmlILAnnotation.cs
- CalendarDataBindingHandler.cs
- TreeWalkHelper.cs
- DispatcherObject.cs
- RoutedEventHandlerInfo.cs
- SqlMultiplexer.cs
- LinqTreeNodeEvaluator.cs
- Label.cs
- PtsPage.cs
- DoubleAnimationUsingPath.cs
- BindingSource.cs