Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Xml / System / Xml / schema / BaseProcessor.cs / 1 / BaseProcessor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Schema { using System.Collections; using System.Text; using System.Diagnostics; internal class BaseProcessor { XmlNameTable nameTable; SchemaNames schemaNames; ValidationEventHandler eventHandler; XmlSchemaCompilationSettings compilationSettings; int errorCount = 0; string NsXml; public BaseProcessor(XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventHandler) : this(nameTable, schemaNames, eventHandler, new XmlSchemaCompilationSettings()) {} //Use the default for XmlSchemaCollection public BaseProcessor(XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventHandler, XmlSchemaCompilationSettings compilationSettings) { Debug.Assert(nameTable != null); this.nameTable = nameTable; this.schemaNames = schemaNames; this.eventHandler = eventHandler; this.compilationSettings = compilationSettings; NsXml = nameTable.Add(XmlReservedNs.NsXml); } protected XmlNameTable NameTable { get { return nameTable; } } protected SchemaNames SchemaNames { get { if (schemaNames == null) { schemaNames = new SchemaNames(nameTable); } return schemaNames; } } protected ValidationEventHandler EventHandler { get { return eventHandler; } } protected XmlSchemaCompilationSettings CompilationSettings { get { return compilationSettings; } } protected bool HasErrors { get { return errorCount != 0; } } protected void AddToTable(XmlSchemaObjectTable table, XmlQualifiedName qname, XmlSchemaObject item) { if (qname.Name.Length == 0) { return; } XmlSchemaObject existingObject = (XmlSchemaObject)table[qname]; if (existingObject != null) { if (existingObject == item) { return; } string code = Res.Sch_DupGlobalElement; if (item is XmlSchemaAttributeGroup) { string ns = nameTable.Add(qname.Namespace); if (Ref.Equal(ns, NsXml)) { //Check for xml namespace XmlSchema schemaForXmlNS = Preprocessor.GetBuildInSchema(); XmlSchemaObject builtInAttributeGroup = schemaForXmlNS.AttributeGroups[qname]; if ((object)existingObject == (object)builtInAttributeGroup) { table.Insert(qname, item); return; } else if ((object)item == (object)builtInAttributeGroup) { //trying to overwrite customer's component with built-in, ignore built-in return; } } else if (IsValidAttributeGroupRedefine(existingObject, item, table)){ //check for redefines return; } code = Res.Sch_DupAttributeGroup; } else if (item is XmlSchemaAttribute) { string ns = nameTable.Add(qname.Namespace); if (Ref.Equal(ns, NsXml)) { XmlSchema schemaForXmlNS = Preprocessor.GetBuildInSchema(); XmlSchemaObject builtInAttribute = schemaForXmlNS.Attributes[qname]; if ((object)existingObject == (object)builtInAttribute) { //replace built-in one table.Insert(qname, item); return; } else if ((object)item == (object)builtInAttribute) { //trying to overwrite customer's component with built-in, ignore built-in return; } } code = Res.Sch_DupGlobalAttribute; } else if (item is XmlSchemaSimpleType) { if (IsValidTypeRedefine(existingObject, item, table)) { return; } code = Res.Sch_DupSimpleType; } else if (item is XmlSchemaComplexType) { if (IsValidTypeRedefine(existingObject, item, table)) { return; } code = Res.Sch_DupComplexType; } else if (item is XmlSchemaGroup) { if (IsValidGroupRedefine(existingObject, item, table)){ //check for redefines return; } code = Res.Sch_DupGroup; } else if (item is XmlSchemaNotation) { code = Res.Sch_DupNotation; } else if (item is XmlSchemaIdentityConstraint) { code = Res.Sch_DupIdentityConstraint; } else { Debug.Assert(item is XmlSchemaElement); } SendValidationEvent(code, qname.ToString(), item); } else { table.Add(qname, item); } } private bool IsValidAttributeGroupRedefine(XmlSchemaObject existingObject, XmlSchemaObject item, XmlSchemaObjectTable table) { XmlSchemaAttributeGroup attGroup = item as XmlSchemaAttributeGroup; XmlSchemaAttributeGroup existingAttGroup = existingObject as XmlSchemaAttributeGroup; if (existingAttGroup == attGroup.Redefined) { //attribute group is the redefinition of existingObject if (existingAttGroup.AttributeUses.Count == 0) { //If the existing one is not already compiled, then replace. table.Insert(attGroup.QualifiedName, attGroup); //Update with redefined entry return true; } } else if (existingAttGroup.Redefined == attGroup) { //Redefined type already exists in the set, original type is added after redefined type, ignore the original type return true; } return false; } private bool IsValidGroupRedefine(XmlSchemaObject existingObject, XmlSchemaObject item, XmlSchemaObjectTable table) { XmlSchemaGroup group = item as XmlSchemaGroup; XmlSchemaGroup existingGroup = existingObject as XmlSchemaGroup; if (existingGroup == group.Redefined) { //group is the redefinition of existingObject if (existingGroup.CanonicalParticle == null) { //If the existing one is not already compiled, then replace. table.Insert(group.QualifiedName, group); //Update with redefined entry return true; } } else if (existingGroup.Redefined == group) { //Redefined type already exists in the set, original type is added after redefined type, ignore the original type return true; } return false; } private bool IsValidTypeRedefine(XmlSchemaObject existingObject, XmlSchemaObject item, XmlSchemaObjectTable table) { XmlSchemaType schemaType = item as XmlSchemaType; XmlSchemaType existingType = existingObject as XmlSchemaType; if (existingType == schemaType.Redefined) { //schemaType is the redefinition of existingObject if (existingType.ElementDecl == null) { //If the existing one is not already compiled, then replace. table.Insert(schemaType.QualifiedName, schemaType); //Update with redefined entry return true; } } else if (existingType.Redefined == schemaType) { //Redefined type already exists in the set, original type is added after redefined type, ignore the original type return true; } return false; } protected void SendValidationEvent(string code, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, msg, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg1, string msg2, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, new string[] { msg1, msg2 }, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string[] args, Exception innerException, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, args, innerException, source.SourceUri, source.LineNumber, source.LinePosition, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg1, string msg2, string sourceUri, int lineNumber, int linePosition) { SendValidationEvent(new XmlSchemaException(code, new string[] { msg1, msg2 }, sourceUri, lineNumber, linePosition), XmlSeverityType.Error); } protected void SendValidationEvent(string code, XmlSchemaObject source, XmlSeverityType severity) { SendValidationEvent(new XmlSchemaException(code, source), severity); } protected void SendValidationEvent(XmlSchemaException e) { SendValidationEvent(e, XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg, XmlSchemaObject source, XmlSeverityType severity) { SendValidationEvent(new XmlSchemaException(code, msg, source), severity); } protected void SendValidationEvent(XmlSchemaException e, XmlSeverityType severity) { if (severity == XmlSeverityType.Error) { errorCount ++; } if (eventHandler != null) { eventHandler(null, new ValidationEventArgs(e, severity)); } else if (severity == XmlSeverityType.Error) { throw e; } } protected void SendValidationEventNoThrow(XmlSchemaException e, XmlSeverityType severity) { if (severity == XmlSeverityType.Error) { errorCount ++; } if (eventHandler != null) { eventHandler(null, new ValidationEventArgs(e, severity)); } } }; } // namespace System.Xml // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Schema { using System.Collections; using System.Text; using System.Diagnostics; internal class BaseProcessor { XmlNameTable nameTable; SchemaNames schemaNames; ValidationEventHandler eventHandler; XmlSchemaCompilationSettings compilationSettings; int errorCount = 0; string NsXml; public BaseProcessor(XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventHandler) : this(nameTable, schemaNames, eventHandler, new XmlSchemaCompilationSettings()) {} //Use the default for XmlSchemaCollection public BaseProcessor(XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventHandler, XmlSchemaCompilationSettings compilationSettings) { Debug.Assert(nameTable != null); this.nameTable = nameTable; this.schemaNames = schemaNames; this.eventHandler = eventHandler; this.compilationSettings = compilationSettings; NsXml = nameTable.Add(XmlReservedNs.NsXml); } protected XmlNameTable NameTable { get { return nameTable; } } protected SchemaNames SchemaNames { get { if (schemaNames == null) { schemaNames = new SchemaNames(nameTable); } return schemaNames; } } protected ValidationEventHandler EventHandler { get { return eventHandler; } } protected XmlSchemaCompilationSettings CompilationSettings { get { return compilationSettings; } } protected bool HasErrors { get { return errorCount != 0; } } protected void AddToTable(XmlSchemaObjectTable table, XmlQualifiedName qname, XmlSchemaObject item) { if (qname.Name.Length == 0) { return; } XmlSchemaObject existingObject = (XmlSchemaObject)table[qname]; if (existingObject != null) { if (existingObject == item) { return; } string code = Res.Sch_DupGlobalElement; if (item is XmlSchemaAttributeGroup) { string ns = nameTable.Add(qname.Namespace); if (Ref.Equal(ns, NsXml)) { //Check for xml namespace XmlSchema schemaForXmlNS = Preprocessor.GetBuildInSchema(); XmlSchemaObject builtInAttributeGroup = schemaForXmlNS.AttributeGroups[qname]; if ((object)existingObject == (object)builtInAttributeGroup) { table.Insert(qname, item); return; } else if ((object)item == (object)builtInAttributeGroup) { //trying to overwrite customer's component with built-in, ignore built-in return; } } else if (IsValidAttributeGroupRedefine(existingObject, item, table)){ //check for redefines return; } code = Res.Sch_DupAttributeGroup; } else if (item is XmlSchemaAttribute) { string ns = nameTable.Add(qname.Namespace); if (Ref.Equal(ns, NsXml)) { XmlSchema schemaForXmlNS = Preprocessor.GetBuildInSchema(); XmlSchemaObject builtInAttribute = schemaForXmlNS.Attributes[qname]; if ((object)existingObject == (object)builtInAttribute) { //replace built-in one table.Insert(qname, item); return; } else if ((object)item == (object)builtInAttribute) { //trying to overwrite customer's component with built-in, ignore built-in return; } } code = Res.Sch_DupGlobalAttribute; } else if (item is XmlSchemaSimpleType) { if (IsValidTypeRedefine(existingObject, item, table)) { return; } code = Res.Sch_DupSimpleType; } else if (item is XmlSchemaComplexType) { if (IsValidTypeRedefine(existingObject, item, table)) { return; } code = Res.Sch_DupComplexType; } else if (item is XmlSchemaGroup) { if (IsValidGroupRedefine(existingObject, item, table)){ //check for redefines return; } code = Res.Sch_DupGroup; } else if (item is XmlSchemaNotation) { code = Res.Sch_DupNotation; } else if (item is XmlSchemaIdentityConstraint) { code = Res.Sch_DupIdentityConstraint; } else { Debug.Assert(item is XmlSchemaElement); } SendValidationEvent(code, qname.ToString(), item); } else { table.Add(qname, item); } } private bool IsValidAttributeGroupRedefine(XmlSchemaObject existingObject, XmlSchemaObject item, XmlSchemaObjectTable table) { XmlSchemaAttributeGroup attGroup = item as XmlSchemaAttributeGroup; XmlSchemaAttributeGroup existingAttGroup = existingObject as XmlSchemaAttributeGroup; if (existingAttGroup == attGroup.Redefined) { //attribute group is the redefinition of existingObject if (existingAttGroup.AttributeUses.Count == 0) { //If the existing one is not already compiled, then replace. table.Insert(attGroup.QualifiedName, attGroup); //Update with redefined entry return true; } } else if (existingAttGroup.Redefined == attGroup) { //Redefined type already exists in the set, original type is added after redefined type, ignore the original type return true; } return false; } private bool IsValidGroupRedefine(XmlSchemaObject existingObject, XmlSchemaObject item, XmlSchemaObjectTable table) { XmlSchemaGroup group = item as XmlSchemaGroup; XmlSchemaGroup existingGroup = existingObject as XmlSchemaGroup; if (existingGroup == group.Redefined) { //group is the redefinition of existingObject if (existingGroup.CanonicalParticle == null) { //If the existing one is not already compiled, then replace. table.Insert(group.QualifiedName, group); //Update with redefined entry return true; } } else if (existingGroup.Redefined == group) { //Redefined type already exists in the set, original type is added after redefined type, ignore the original type return true; } return false; } private bool IsValidTypeRedefine(XmlSchemaObject existingObject, XmlSchemaObject item, XmlSchemaObjectTable table) { XmlSchemaType schemaType = item as XmlSchemaType; XmlSchemaType existingType = existingObject as XmlSchemaType; if (existingType == schemaType.Redefined) { //schemaType is the redefinition of existingObject if (existingType.ElementDecl == null) { //If the existing one is not already compiled, then replace. table.Insert(schemaType.QualifiedName, schemaType); //Update with redefined entry return true; } } else if (existingType.Redefined == schemaType) { //Redefined type already exists in the set, original type is added after redefined type, ignore the original type return true; } return false; } protected void SendValidationEvent(string code, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, msg, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg1, string msg2, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, new string[] { msg1, msg2 }, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string[] args, Exception innerException, XmlSchemaObject source) { SendValidationEvent(new XmlSchemaException(code, args, innerException, source.SourceUri, source.LineNumber, source.LinePosition, source), XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg1, string msg2, string sourceUri, int lineNumber, int linePosition) { SendValidationEvent(new XmlSchemaException(code, new string[] { msg1, msg2 }, sourceUri, lineNumber, linePosition), XmlSeverityType.Error); } protected void SendValidationEvent(string code, XmlSchemaObject source, XmlSeverityType severity) { SendValidationEvent(new XmlSchemaException(code, source), severity); } protected void SendValidationEvent(XmlSchemaException e) { SendValidationEvent(e, XmlSeverityType.Error); } protected void SendValidationEvent(string code, string msg, XmlSchemaObject source, XmlSeverityType severity) { SendValidationEvent(new XmlSchemaException(code, msg, source), severity); } protected void SendValidationEvent(XmlSchemaException e, XmlSeverityType severity) { if (severity == XmlSeverityType.Error) { errorCount ++; } if (eventHandler != null) { eventHandler(null, new ValidationEventArgs(e, severity)); } else if (severity == XmlSeverityType.Error) { throw e; } } protected void SendValidationEventNoThrow(XmlSchemaException e, XmlSeverityType severity) { if (severity == XmlSeverityType.Error) { errorCount ++; } if (eventHandler != null) { eventHandler(null, new ValidationEventArgs(e, severity)); } } }; } // namespace System.Xml // 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
- OracleSqlParser.cs
- SkinBuilder.cs
- NavigationEventArgs.cs
- Int64Storage.cs
- LineServices.cs
- BuildProvidersCompiler.cs
- MarginsConverter.cs
- AssemblyNameUtility.cs
- SqlCommand.cs
- OLEDB_Enum.cs
- XDRSchema.cs
- SemanticResolver.cs
- AutomationEventArgs.cs
- XmlAutoDetectWriter.cs
- Separator.cs
- SqlParameterCollection.cs
- ObjectDataSource.cs
- Ipv6Element.cs
- SchemaTableOptionalColumn.cs
- ComplusTypeValidator.cs
- RegularExpressionValidator.cs
- RecordsAffectedEventArgs.cs
- OleDbCommand.cs
- SoapBinding.cs
- ParameterBuilder.cs
- ServicePointManager.cs
- RPIdentityRequirement.cs
- FragmentQueryKB.cs
- ListDictionary.cs
- ClosureBinding.cs
- StateDesigner.LayoutSelectionGlyph.cs
- IndicCharClassifier.cs
- XmlAttribute.cs
- AnnotationResource.cs
- WriteFileContext.cs
- COM2ColorConverter.cs
- TableDetailsCollection.cs
- DataExpression.cs
- MarshalByValueComponent.cs
- EditorPart.cs
- SecureEnvironment.cs
- CodeIdentifier.cs
- DependencyObjectProvider.cs
- SmtpNetworkElement.cs
- IProvider.cs
- TransformerTypeCollection.cs
- ByteAnimationBase.cs
- IconBitmapDecoder.cs
- TimeSpan.cs
- AssemblyResourceLoader.cs
- BuildProviderAppliesToAttribute.cs
- SchemaTableOptionalColumn.cs
- SubtreeProcessor.cs
- GeometryHitTestResult.cs
- DesignerValidationSummaryAdapter.cs
- MostlySingletonList.cs
- SignedPkcs7.cs
- TrueReadOnlyCollection.cs
- InstanceDescriptor.cs
- AQNBuilder.cs
- XsltLibrary.cs
- SocketInformation.cs
- WebBrowserContainer.cs
- ErrorStyle.cs
- QuaternionValueSerializer.cs
- CharEntityEncoderFallback.cs
- Item.cs
- Msmq.cs
- RotateTransform.cs
- PropertyRecord.cs
- XamlReaderHelper.cs
- UriSection.cs
- SiteMapNode.cs
- AVElementHelper.cs
- BaseParser.cs
- ResourcePart.cs
- XmlValidatingReader.cs
- CompiledRegexRunner.cs
- DataSourceIDConverter.cs
- XmlDeclaration.cs
- DataGridDesigner.cs
- BooleanKeyFrameCollection.cs
- EntityContainerRelationshipSetEnd.cs
- UpdateCommandGenerator.cs
- XmlAttributeOverrides.cs
- UidManager.cs
- NavigationFailedEventArgs.cs
- XPathMultyIterator.cs
- UiaCoreApi.cs
- LookupBindingPropertiesAttribute.cs
- AttachedAnnotation.cs
- TextMessageEncodingElement.cs
- Visitors.cs
- DataBoundControl.cs
- DeliveryRequirementsAttribute.cs
- QueryCursorEventArgs.cs
- TableLayoutRowStyleCollection.cs
- Speller.cs
- InstalledVoice.cs
- JavascriptCallbackBehaviorAttribute.cs