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
- ListBoxAutomationPeer.cs
- HtmlTableCellCollection.cs
- ObfuscationAttribute.cs
- HighlightVisual.cs
- EnumMember.cs
- StringAnimationBase.cs
- SubMenuStyleCollectionEditor.cs
- TabPanel.cs
- TextTreeTextBlock.cs
- DataGridRelationshipRow.cs
- JsonReader.cs
- ClientBuildManagerCallback.cs
- BooleanConverter.cs
- ControlBuilderAttribute.cs
- ProfileEventArgs.cs
- WindowsToolbarAsMenu.cs
- TextMarkerSource.cs
- ValidationEventArgs.cs
- PageAdapter.cs
- AccessDataSource.cs
- Message.cs
- OdbcEnvironmentHandle.cs
- EntityTypeBase.cs
- ProcessModule.cs
- Triplet.cs
- WebConvert.cs
- SynchronizationLockException.cs
- TextTreePropertyUndoUnit.cs
- DockAndAnchorLayout.cs
- HighlightComponent.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- AvTraceDetails.cs
- Exceptions.cs
- CompositeClientFormatter.cs
- WindowShowOrOpenTracker.cs
- XmlSchemaSimpleTypeRestriction.cs
- ServerIdentity.cs
- XPathNodeHelper.cs
- ProxyWebPartConnectionCollection.cs
- BindingCollection.cs
- SkinBuilder.cs
- QuerySelectOp.cs
- SchemaTableOptionalColumn.cs
- NameTable.cs
- CompositeKey.cs
- AddInServer.cs
- DbCommandTree.cs
- TypeSemantics.cs
- XmlDataProvider.cs
- SafeCloseHandleCritical.cs
- AppManager.cs
- Point3D.cs
- SessionEndingCancelEventArgs.cs
- DataTable.cs
- WebControlsSection.cs
- BaseParser.cs
- ExpandableObjectConverter.cs
- SchemaLookupTable.cs
- CompilerInfo.cs
- DetailsViewRow.cs
- TextServicesCompartment.cs
- SqlStream.cs
- WindowsBrush.cs
- Trigger.cs
- PieceDirectory.cs
- Win32.cs
- sqlpipe.cs
- RijndaelManagedTransform.cs
- Material.cs
- NaturalLanguageHyphenator.cs
- Region.cs
- DataControlFieldHeaderCell.cs
- CodeMethodMap.cs
- OleAutBinder.cs
- SapiInterop.cs
- ValidationService.cs
- XmlnsDictionary.cs
- XhtmlBasicValidationSummaryAdapter.cs
- WorkItem.cs
- odbcmetadatafactory.cs
- SpellerError.cs
- FieldToken.cs
- SegmentInfo.cs
- CultureInfoConverter.cs
- SessionState.cs
- Base64Stream.cs
- FaultImportOptions.cs
- PermissionSetTriple.cs
- ChangeBlockUndoRecord.cs
- FixedFlowMap.cs
- TextContainerHelper.cs
- ListParaClient.cs
- CodeBlockBuilder.cs
- SQLStringStorage.cs
- BufferManager.cs
- DataRow.cs
- HtmlEncodedRawTextWriter.cs
- AffineTransform3D.cs
- ListViewTableCell.cs
- MetabaseServerConfig.cs