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 / Dom / XmlEntityReference.cs / 1 / XmlEntityReference.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- //EntityReference
objects may be inserted into the structure // model when an entity reference is in the source document, or when the user // wishes to insert an entity reference. Note that character references and // references to predefined entities are considered to be expanded by the // HTML or XML processor so that characters are represented by their Unicode // equivalent rather than by an entity reference. Moreover, the XML // processor may completely expand references to entities while building the // structure model, instead of providingEntityReference
// objects. If it does provide such objects, then for a given //EntityReference
node, it may be that there is no //Entity
node representing the referenced entity; but if such // anEntity
exists, then the child list of the //EntityReference
node is the same as that of the //Entity
node. As with theEntity
node, all // descendants of theEntityReference
are readonly. //The resolution of the children of the
EntityReference
(the // replacement value of the referencedEntity
) may be lazily // evaluated; actions by the user (such as calling the //childNodes
method on theEntityReference
node) // are assumed to trigger the evaluation. namespace System.Xml { using System.Diagnostics; // Represents an entity reference node. public class XmlEntityReference : XmlLinkedNode { string name; XmlLinkedNode lastChild; protected internal XmlEntityReference( string name, XmlDocument doc ) : base( doc ) { if ( !doc.IsLoading ) { if ( name.Length > 0 && name[0] == '#' ) { throw new ArgumentException( Res.GetString( Res.Xdom_InvalidCharacter_EntityReference ) ); } } this.name = doc.NameTable.Add(name); doc.fEntRefNodesPresent = true; } // Gets the name of the node. public override string Name { get { return name;} } // Gets the name of the node without the namespace prefix. public override string LocalName { get { return name;} } // Gets or sets the value of the node. public override String Value { get { return null; } set { throw new InvalidOperationException(Res.GetString(Res.Xdom_EntRef_SetVal)); } } // Gets the type of the node. public override XmlNodeType NodeType { get { return XmlNodeType.EntityReference;} } // Creates a duplicate of this node. public override XmlNode CloneNode(bool deep) { Debug.Assert( OwnerDocument != null ); XmlEntityReference eref = OwnerDocument.CreateEntityReference( name ); return eref; } // // Microsoft extensions // // Gets a value indicating whether the node is read-only. public override bool IsReadOnly { get { return true; // Make entity references readonly } } internal override bool IsContainer { get { return true;} } internal override void SetParent( XmlNode node ) { base.SetParent(node); if ( LastNode == null && node != null && node != OwnerDocument ) { //first time insert the entity reference into the tree, we should expand its children now XmlLoader loader = new XmlLoader(); loader.ExpandEntityReference(this); } } internal override void SetParentForLoad( XmlNode node ) { this.SetParent( node ); } internal override XmlLinkedNode LastNode { get { return lastChild; } set { lastChild = value;} } internal override bool IsValidChildType( XmlNodeType type ) { switch (type) { case XmlNodeType.Element: case XmlNodeType.Text: case XmlNodeType.EntityReference: case XmlNodeType.Comment: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: case XmlNodeType.ProcessingInstruction: case XmlNodeType.CDATA: return true; default: return false; } } // Saves the node to the specified XmlWriter. public override void WriteTo(XmlWriter w) { w.WriteEntityRef(name); } // Saves all the children of the node to the specified XmlWriter. public override void WriteContentTo(XmlWriter w) { // -- eventually will the fix. commented out waiting for finalizing on the issue. foreach( XmlNode n in this ) { n.WriteTo( w ); } //still use the old code to generate the output /* foreach( XmlNode n in this ) { if ( n.NodeType != XmlNodeType.EntityReference ) n.WriteTo( w ); else n.WriteContentTo( w ); }*/ } public override String BaseURI { get { return OwnerDocument.BaseURI; } } private string ConstructBaseURI( string baseURI, string systemId ) { if ( baseURI == null ) return systemId; int nCount = baseURI.LastIndexOf('/')+1; string buf = baseURI; if ( nCount > 0 && nCount < baseURI.Length ) buf = baseURI.Substring(0, nCount); else if ( nCount == 0 ) buf = buf + "\\"; return (buf + systemId.Replace('\\', '/')); } //childrenBaseURI returns where the entity reference node's children come from internal String ChildBaseURI { get { //get the associate entity and return its baseUri XmlEntity ent = OwnerDocument.GetEntityNode( name ); if ( ent != null ) { if ( ent.SystemId != null && ent.SystemId.Length > 0 ) return ConstructBaseURI(ent.BaseURI, ent.SystemId); else return ent.BaseURI; } return String.Empty; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- //EntityReference
objects may be inserted into the structure // model when an entity reference is in the source document, or when the user // wishes to insert an entity reference. Note that character references and // references to predefined entities are considered to be expanded by the // HTML or XML processor so that characters are represented by their Unicode // equivalent rather than by an entity reference. Moreover, the XML // processor may completely expand references to entities while building the // structure model, instead of providingEntityReference
// objects. If it does provide such objects, then for a given //EntityReference
node, it may be that there is no //Entity
node representing the referenced entity; but if such // anEntity
exists, then the child list of the //EntityReference
node is the same as that of the //Entity
node. As with theEntity
node, all // descendants of theEntityReference
are readonly. //The resolution of the children of the
EntityReference
(the // replacement value of the referencedEntity
) may be lazily // evaluated; actions by the user (such as calling the //childNodes
method on theEntityReference
node) // are assumed to trigger the evaluation. namespace System.Xml { using System.Diagnostics; // Represents an entity reference node. public class XmlEntityReference : XmlLinkedNode { string name; XmlLinkedNode lastChild; protected internal XmlEntityReference( string name, XmlDocument doc ) : base( doc ) { if ( !doc.IsLoading ) { if ( name.Length > 0 && name[0] == '#' ) { throw new ArgumentException( Res.GetString( Res.Xdom_InvalidCharacter_EntityReference ) ); } } this.name = doc.NameTable.Add(name); doc.fEntRefNodesPresent = true; } // Gets the name of the node. public override string Name { get { return name;} } // Gets the name of the node without the namespace prefix. public override string LocalName { get { return name;} } // Gets or sets the value of the node. public override String Value { get { return null; } set { throw new InvalidOperationException(Res.GetString(Res.Xdom_EntRef_SetVal)); } } // Gets the type of the node. public override XmlNodeType NodeType { get { return XmlNodeType.EntityReference;} } // Creates a duplicate of this node. public override XmlNode CloneNode(bool deep) { Debug.Assert( OwnerDocument != null ); XmlEntityReference eref = OwnerDocument.CreateEntityReference( name ); return eref; } // // Microsoft extensions // // Gets a value indicating whether the node is read-only. public override bool IsReadOnly { get { return true; // Make entity references readonly } } internal override bool IsContainer { get { return true;} } internal override void SetParent( XmlNode node ) { base.SetParent(node); if ( LastNode == null && node != null && node != OwnerDocument ) { //first time insert the entity reference into the tree, we should expand its children now XmlLoader loader = new XmlLoader(); loader.ExpandEntityReference(this); } } internal override void SetParentForLoad( XmlNode node ) { this.SetParent( node ); } internal override XmlLinkedNode LastNode { get { return lastChild; } set { lastChild = value;} } internal override bool IsValidChildType( XmlNodeType type ) { switch (type) { case XmlNodeType.Element: case XmlNodeType.Text: case XmlNodeType.EntityReference: case XmlNodeType.Comment: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: case XmlNodeType.ProcessingInstruction: case XmlNodeType.CDATA: return true; default: return false; } } // Saves the node to the specified XmlWriter. public override void WriteTo(XmlWriter w) { w.WriteEntityRef(name); } // Saves all the children of the node to the specified XmlWriter. public override void WriteContentTo(XmlWriter w) { // -- eventually will the fix. commented out waiting for finalizing on the issue. foreach( XmlNode n in this ) { n.WriteTo( w ); } //still use the old code to generate the output /* foreach( XmlNode n in this ) { if ( n.NodeType != XmlNodeType.EntityReference ) n.WriteTo( w ); else n.WriteContentTo( w ); }*/ } public override String BaseURI { get { return OwnerDocument.BaseURI; } } private string ConstructBaseURI( string baseURI, string systemId ) { if ( baseURI == null ) return systemId; int nCount = baseURI.LastIndexOf('/')+1; string buf = baseURI; if ( nCount > 0 && nCount < baseURI.Length ) buf = baseURI.Substring(0, nCount); else if ( nCount == 0 ) buf = buf + "\\"; return (buf + systemId.Replace('\\', '/')); } //childrenBaseURI returns where the entity reference node's children come from internal String ChildBaseURI { get { //get the associate entity and return its baseUri XmlEntity ent = OwnerDocument.GetEntityNode( name ); if ( ent != null ) { if ( ent.SystemId != null && ent.SystemId.Length > 0 ) return ConstructBaseURI(ent.BaseURI, ent.SystemId); else return ent.BaseURI; } return String.Empty; } } } } // 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
- WebPartCollection.cs
- ControlEvent.cs
- EmptyReadOnlyDictionaryInternal.cs
- SerializationFieldInfo.cs
- EncoderExceptionFallback.cs
- XPathChildIterator.cs
- Size.cs
- WebPartVerbsEventArgs.cs
- ServiceDocument.cs
- SQLMoneyStorage.cs
- GrammarBuilderWildcard.cs
- SerializerProvider.cs
- WindowExtensionMethods.cs
- FastPropertyAccessor.cs
- TreeViewImageIndexConverter.cs
- UICuesEvent.cs
- EventLogStatus.cs
- XD.cs
- PathGradientBrush.cs
- BeginEvent.cs
- SymbolType.cs
- AnonymousIdentificationSection.cs
- ComPlusSynchronizationContext.cs
- BooleanStorage.cs
- UTF8Encoding.cs
- _ScatterGatherBuffers.cs
- NavigationEventArgs.cs
- Brush.cs
- CapacityStreamGeometryContext.cs
- QueryExpr.cs
- IISMapPath.cs
- Point.cs
- BevelBitmapEffect.cs
- ProtocolInformationWriter.cs
- LayoutUtils.cs
- SrgsGrammar.cs
- GregorianCalendar.cs
- StrongNameHelpers.cs
- PublisherMembershipCondition.cs
- SignatureResourceHelper.cs
- XmlToDatasetMap.cs
- DecimalAverageAggregationOperator.cs
- RowsCopiedEventArgs.cs
- StylusPointProperties.cs
- GiveFeedbackEvent.cs
- TypeNameHelper.cs
- RegexCompilationInfo.cs
- ipaddressinformationcollection.cs
- Stroke2.cs
- NotConverter.cs
- ToolStripContainer.cs
- ListViewCommandEventArgs.cs
- SchemaNamespaceManager.cs
- SqlProviderManifest.cs
- SplitterPanel.cs
- MutexSecurity.cs
- HtmlMobileTextWriter.cs
- ProjectionAnalyzer.cs
- SqlLiftIndependentRowExpressions.cs
- DataControlImageButton.cs
- Win32.cs
- HiddenFieldPageStatePersister.cs
- DbCommandTree.cs
- XmlSchemaAny.cs
- ComNativeDescriptor.cs
- path.cs
- PeerTransportListenAddressValidatorAttribute.cs
- FloaterBaseParaClient.cs
- MachineKey.cs
- WorkflowInlining.cs
- XmlElementList.cs
- AuthorizationRule.cs
- OutputWindow.cs
- SynchronizedDispatch.cs
- DescendantOverDescendantQuery.cs
- XmlWhitespace.cs
- XPathDocumentIterator.cs
- RegexFCD.cs
- PolyLineSegment.cs
- VariableModifiersHelper.cs
- NamespaceInfo.cs
- XPathNavigatorKeyComparer.cs
- FileNotFoundException.cs
- QilGeneratorEnv.cs
- NumberSubstitution.cs
- ToolStripGripRenderEventArgs.cs
- ConstantSlot.cs
- Rotation3DKeyFrameCollection.cs
- Context.cs
- CancellationToken.cs
- CharacterShapingProperties.cs
- MasterPage.cs
- VirtualPathUtility.cs
- BrowserTree.cs
- KeyValueConfigurationCollection.cs
- COM2Properties.cs
- WebAdminConfigurationHelper.cs
- StateDesigner.cs
- Dictionary.cs
- UxThemeWrapper.cs