Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / XmlUtils / System / Xml / Xsl / XmlQualifiedNameTest.cs / 1 / XmlQualifiedNameTest.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Xml; using System.Xml.Schema; using System.Collections.Generic; using System.Diagnostics; using System.Text; namespace System.Xml.Xsl { ////// XmlQualifiedName extends XmlQualifiedName to support wildcards and adds nametest functionality /// Following are the examples: /// {A}:B XmlQualifiedNameTest.New("B", "A") Match QName with namespace A and local name B /// * XmlQualifiedNameTest.New(null, null) Match any QName /// {A}:* XmlQualifiedNameTest.New(null, "A") Match QName with namespace A and any local name /// XmlQualifiedNameTest.New("A", false) /// *:B XmlQualifiedNameTest.New("B", null) Match QName with any namespace and local name B /// ~{A}:* XmlQualifiedNameTest.New("B", "A") Match QName with namespace not A and any local name /// {~A}:B only as a result of the intersection Match QName with namespace not A and local name B /// internal class XmlQualifiedNameTest : XmlQualifiedName { bool exclude; const string wildcard = "*"; static XmlQualifiedNameTest wc = XmlQualifiedNameTest.New(wildcard, wildcard); ////// Full wildcard /// public static XmlQualifiedNameTest Wildcard { get { return wc; } } ////// Constructor /// private XmlQualifiedNameTest(string name, string ns, bool exclude) : base (name, ns) { this.exclude = exclude; } ////// Construct new from name and namespace. Returns singleton Wildcard in case full wildcard /// public static XmlQualifiedNameTest New(string name, string ns) { if (ns == null && name == null) { return Wildcard; } else { return new XmlQualifiedNameTest(name == null ? wildcard : name, ns == null ? wildcard : ns, false); } } ////// True if matches any name and any namespace /// public bool IsWildcard { get { return (object)this == (object)Wildcard; } } ////// True if matches any name /// public bool IsNameWildcard { get { return (object)this.Name == (object)wildcard; } } ////// True if matches any namespace /// public bool IsNamespaceWildcard { get { return (object)this.Namespace == (object)wildcard; } } private bool IsNameSubsetOf(XmlQualifiedNameTest other) { return other.IsNameWildcard || this.Name == other.Name; } // private bool IsNamespaceSubsetOf(XmlQualifiedNameTest other) { return other.IsNamespaceWildcard || (this.exclude == other.exclude && this.Namespace == other.Namespace) || (other.exclude && !this.exclude && this.Namespace != other.Namespace); } ////// True if this matches every QName other does /// public bool IsSubsetOf(XmlQualifiedNameTest other) { return IsNameSubsetOf(other) && IsNamespaceSubsetOf(other); } ////// Return true if the result of intersection with other is not empty /// public bool HasIntersection(XmlQualifiedNameTest other) { return (IsNamespaceSubsetOf(other) || other.IsNamespaceSubsetOf(this)) && (IsNameSubsetOf(other) || other.IsNameSubsetOf(this)); } ////// String representation /// public override string ToString() { if ((object)this == (object)Wildcard) { return "*"; } else { if (this.Namespace.Length == 0) { return this.Name; } else if ((object)this.Namespace == (object)wildcard) { return "*:" + this.Name; } else if (this.exclude) { return "{~" + this.Namespace + "}:" + this.Name; } else { return "{" + this.Namespace + "}:" + this.Name; } } } #if SchemaTypeImport ////// Construct new from XmlQualifiedName. Returns singleton Wildcard in case full wildcard /// public static XmlQualifiedNameTest New(XmlQualifiedName name) { if (name.IsEmpty) { return Wildcard; } else { return new XmlQualifiedNameTest(name.Name, name.Namespace, false); } } ////// Construct new "exclusion" name test /// public static XmlQualifiedNameTest New(string ns, bool exclude) { Debug.Assert(ns != null); return new XmlQualifiedNameTest(wildcard, ns, exclude); } ////// Return the result of intersection with other /// public XmlQualifiedNameTest Intersect(XmlQualifiedNameTest other) { // Namespace // this\other ~y * y // ~x x=y ? this|other : null this x!=y ? other : null // * other this|other other // x x!=y ? this : null this x=y ? this|other : null XmlQualifiedNameTest namespaceFrom = IsNamespaceSubsetOf(other) ? this : other.IsNamespaceSubsetOf(this) ? other : null; XmlQualifiedNameTest nameFrom = IsNameSubsetOf(other) ? this : other.IsNameSubsetOf(this) ? other : null; if ((object)namespaceFrom == (object)nameFrom) { return namespaceFrom; } else if (namespaceFrom == null || nameFrom == null) { return null; } else { return new XmlQualifiedNameTest(nameFrom.Name, namespaceFrom.Namespace, namespaceFrom.ExcludeNamespace); } } ////// True if neither name nor namespace is a wildcard /// public bool IsSingleName { get { return (object)this.Name != (object)wildcard && (object)this.Namespace != (object)wildcard && this.exclude == false; } } ////// True if matches any namespace other then this.Namespace /// public bool ExcludeNamespace { get { return this.exclude; } } #endif } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Xml; using System.Xml.Schema; using System.Collections.Generic; using System.Diagnostics; using System.Text; namespace System.Xml.Xsl { ////// XmlQualifiedName extends XmlQualifiedName to support wildcards and adds nametest functionality /// Following are the examples: /// {A}:B XmlQualifiedNameTest.New("B", "A") Match QName with namespace A and local name B /// * XmlQualifiedNameTest.New(null, null) Match any QName /// {A}:* XmlQualifiedNameTest.New(null, "A") Match QName with namespace A and any local name /// XmlQualifiedNameTest.New("A", false) /// *:B XmlQualifiedNameTest.New("B", null) Match QName with any namespace and local name B /// ~{A}:* XmlQualifiedNameTest.New("B", "A") Match QName with namespace not A and any local name /// {~A}:B only as a result of the intersection Match QName with namespace not A and local name B /// internal class XmlQualifiedNameTest : XmlQualifiedName { bool exclude; const string wildcard = "*"; static XmlQualifiedNameTest wc = XmlQualifiedNameTest.New(wildcard, wildcard); ////// Full wildcard /// public static XmlQualifiedNameTest Wildcard { get { return wc; } } ////// Constructor /// private XmlQualifiedNameTest(string name, string ns, bool exclude) : base (name, ns) { this.exclude = exclude; } ////// Construct new from name and namespace. Returns singleton Wildcard in case full wildcard /// public static XmlQualifiedNameTest New(string name, string ns) { if (ns == null && name == null) { return Wildcard; } else { return new XmlQualifiedNameTest(name == null ? wildcard : name, ns == null ? wildcard : ns, false); } } ////// True if matches any name and any namespace /// public bool IsWildcard { get { return (object)this == (object)Wildcard; } } ////// True if matches any name /// public bool IsNameWildcard { get { return (object)this.Name == (object)wildcard; } } ////// True if matches any namespace /// public bool IsNamespaceWildcard { get { return (object)this.Namespace == (object)wildcard; } } private bool IsNameSubsetOf(XmlQualifiedNameTest other) { return other.IsNameWildcard || this.Name == other.Name; } // private bool IsNamespaceSubsetOf(XmlQualifiedNameTest other) { return other.IsNamespaceWildcard || (this.exclude == other.exclude && this.Namespace == other.Namespace) || (other.exclude && !this.exclude && this.Namespace != other.Namespace); } ////// True if this matches every QName other does /// public bool IsSubsetOf(XmlQualifiedNameTest other) { return IsNameSubsetOf(other) && IsNamespaceSubsetOf(other); } ////// Return true if the result of intersection with other is not empty /// public bool HasIntersection(XmlQualifiedNameTest other) { return (IsNamespaceSubsetOf(other) || other.IsNamespaceSubsetOf(this)) && (IsNameSubsetOf(other) || other.IsNameSubsetOf(this)); } ////// String representation /// public override string ToString() { if ((object)this == (object)Wildcard) { return "*"; } else { if (this.Namespace.Length == 0) { return this.Name; } else if ((object)this.Namespace == (object)wildcard) { return "*:" + this.Name; } else if (this.exclude) { return "{~" + this.Namespace + "}:" + this.Name; } else { return "{" + this.Namespace + "}:" + this.Name; } } } #if SchemaTypeImport ////// Construct new from XmlQualifiedName. Returns singleton Wildcard in case full wildcard /// public static XmlQualifiedNameTest New(XmlQualifiedName name) { if (name.IsEmpty) { return Wildcard; } else { return new XmlQualifiedNameTest(name.Name, name.Namespace, false); } } ////// Construct new "exclusion" name test /// public static XmlQualifiedNameTest New(string ns, bool exclude) { Debug.Assert(ns != null); return new XmlQualifiedNameTest(wildcard, ns, exclude); } ////// Return the result of intersection with other /// public XmlQualifiedNameTest Intersect(XmlQualifiedNameTest other) { // Namespace // this\other ~y * y // ~x x=y ? this|other : null this x!=y ? other : null // * other this|other other // x x!=y ? this : null this x=y ? this|other : null XmlQualifiedNameTest namespaceFrom = IsNamespaceSubsetOf(other) ? this : other.IsNamespaceSubsetOf(this) ? other : null; XmlQualifiedNameTest nameFrom = IsNameSubsetOf(other) ? this : other.IsNameSubsetOf(this) ? other : null; if ((object)namespaceFrom == (object)nameFrom) { return namespaceFrom; } else if (namespaceFrom == null || nameFrom == null) { return null; } else { return new XmlQualifiedNameTest(nameFrom.Name, namespaceFrom.Namespace, namespaceFrom.ExcludeNamespace); } } ////// True if neither name nor namespace is a wildcard /// public bool IsSingleName { get { return (object)this.Name != (object)wildcard && (object)this.Namespace != (object)wildcard && this.exclude == false; } } ////// True if matches any namespace other then this.Namespace /// public bool ExcludeNamespace { get { return this.exclude; } } #endif } } // 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
- EmbeddedMailObject.cs
- CellCreator.cs
- CodePrimitiveExpression.cs
- DataSourceXmlSubItemAttribute.cs
- SelectionUIHandler.cs
- ImageConverter.cs
- BindingMAnagerBase.cs
- LinearGradientBrush.cs
- RecommendedAsConfigurableAttribute.cs
- TypeExtensionSerializer.cs
- Image.cs
- GrammarBuilderPhrase.cs
- ClientData.cs
- StrokeNodeData.cs
- QueryStringHandler.cs
- CorrelationService.cs
- DLinqColumnProvider.cs
- SortFieldComparer.cs
- RequestNavigateEventArgs.cs
- VectorKeyFrameCollection.cs
- WebCategoryAttribute.cs
- XmlSerializationGeneratedCode.cs
- DataGridViewCellPaintingEventArgs.cs
- Rule.cs
- FocusChangedEventArgs.cs
- EventEntry.cs
- SpeechRecognizer.cs
- LinkedDataMemberFieldEditor.cs
- ChildChangedEventArgs.cs
- DataGridColumnCollection.cs
- ObjectDataSourceStatusEventArgs.cs
- ObjectItemCachedAssemblyLoader.cs
- OperationResponse.cs
- ConfigurationLocation.cs
- DataColumn.cs
- QilScopedVisitor.cs
- PreProcessor.cs
- ThreadPool.cs
- StorageComplexPropertyMapping.cs
- ExpandCollapseProviderWrapper.cs
- DrawingAttributeSerializer.cs
- SystemException.cs
- EncodingStreamWrapper.cs
- PopupEventArgs.cs
- StylusCaptureWithinProperty.cs
- ViewStateModeByIdAttribute.cs
- BamlWriter.cs
- CodeVariableReferenceExpression.cs
- HttpHandlersSection.cs
- RoutedEvent.cs
- RealizationDrawingContextWalker.cs
- UpdatePanel.cs
- MessageFilter.cs
- FusionWrap.cs
- WMIGenerator.cs
- namescope.cs
- DataGridTablesFactory.cs
- GatewayDefinition.cs
- GACIdentityPermission.cs
- SqlReferenceCollection.cs
- IndentTextWriter.cs
- basenumberconverter.cs
- BeginStoryboard.cs
- FunctionMappingTranslator.cs
- FtpRequestCacheValidator.cs
- IndicCharClassifier.cs
- MachineKeySection.cs
- UTF7Encoding.cs
- LockCookie.cs
- SspiWrapper.cs
- DateTimeOffsetConverter.cs
- WebPartDeleteVerb.cs
- XmlSchemaSimpleTypeList.cs
- SynchronizedCollection.cs
- TreeNodeCollection.cs
- WindowsProgressbar.cs
- IfElseDesigner.xaml.cs
- SqlWebEventProvider.cs
- Select.cs
- RegexCompilationInfo.cs
- InputMethod.cs
- XamlSerializerUtil.cs
- XmlSchemaObject.cs
- httpapplicationstate.cs
- PaperSource.cs
- Baml6ConstructorInfo.cs
- CultureInfoConverter.cs
- SymbolDocumentGenerator.cs
- PermissionRequestEvidence.cs
- SecurityContextSecurityToken.cs
- PackWebRequestFactory.cs
- BaseDataList.cs
- ErrorTableItemStyle.cs
- MediaElementAutomationPeer.cs
- GridViewCancelEditEventArgs.cs
- DPCustomTypeDescriptor.cs
- SpoolingTaskBase.cs
- Configuration.cs
- ResXResourceWriter.cs
- SqlMethodCallConverter.cs