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
- Soap.cs
- TrackingProfile.cs
- TcpTransportSecurity.cs
- TableProvider.cs
- ProfileSection.cs
- Symbol.cs
- TextDocumentView.cs
- Stylesheet.cs
- ErrorProvider.cs
- HttpCachePolicy.cs
- XmlSchemaSubstitutionGroup.cs
- VerificationAttribute.cs
- XmlSchemaCompilationSettings.cs
- GeometryHitTestResult.cs
- TableDetailsRow.cs
- assemblycache.cs
- NativeMethods.cs
- WebSysDescriptionAttribute.cs
- Single.cs
- OrCondition.cs
- AssemblyBuilder.cs
- PeerDefaultCustomResolverClient.cs
- RegexGroupCollection.cs
- ShapingWorkspace.cs
- InputDevice.cs
- TraceLog.cs
- LogRecordSequence.cs
- StackSpiller.cs
- DLinqAssociationProvider.cs
- SvcMapFileLoader.cs
- KeyToListMap.cs
- EncryptionUtility.cs
- DataViewSetting.cs
- CommonGetThemePartSize.cs
- ProcessThread.cs
- Hex.cs
- ValueTypePropertyReference.cs
- RepeaterItem.cs
- WebPageTraceListener.cs
- BufferedMessageWriter.cs
- EntityDataSourceView.cs
- NonBatchDirectoryCompiler.cs
- MultidimensionalArrayItemReference.cs
- UiaCoreTypesApi.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Floater.cs
- ButtonFieldBase.cs
- Polyline.cs
- LinqDataSourceInsertEventArgs.cs
- SettingsBindableAttribute.cs
- MessageQueueCriteria.cs
- BaseAsyncResult.cs
- CounterNameConverter.cs
- ApplicationException.cs
- GridViewDeleteEventArgs.cs
- LocatorPart.cs
- NumberEdit.cs
- XmlWrappingReader.cs
- SecurityContext.cs
- Compensate.cs
- UrlMappingsModule.cs
- SqlBooleanMismatchVisitor.cs
- CustomValidator.cs
- TextRunCache.cs
- ByteStream.cs
- StatusStrip.cs
- ToolStripCodeDomSerializer.cs
- WindowsEditBoxRange.cs
- Metadata.cs
- TokenBasedSetEnumerator.cs
- SplineKeyFrames.cs
- MobilePage.cs
- BinaryFormatterSinks.cs
- WebServiceTypeData.cs
- Color.cs
- CryptoApi.cs
- TraceContextRecord.cs
- OutOfProcStateClientManager.cs
- SchemaCollectionPreprocessor.cs
- _NetRes.cs
- CharAnimationUsingKeyFrames.cs
- ItemsControl.cs
- Win32SafeHandles.cs
- DocumentViewer.cs
- MessageHeaderT.cs
- EdmProviderManifest.cs
- NamespaceTable.cs
- TextPattern.cs
- SessionStateContainer.cs
- HostedAspNetEnvironment.cs
- WebPartEditorOkVerb.cs
- DefaultSection.cs
- PageCodeDomTreeGenerator.cs
- DependencyObject.cs
- HwndMouseInputProvider.cs
- WebPartManagerInternals.cs
- WebServiceEnumData.cs
- SecureStringHasher.cs
- DynamicValidatorEventArgs.cs
- MetadataItem.cs