Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / NavigatorOutput.cs / 1 / NavigatorOutput.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Xsl.XsltOld { using Res = System.Xml.Utils.Res; using System; using System.Diagnostics; using System.Xml; using System.Xml.XPath; using MS.Internal.Xml.Cache; internal class NavigatorOutput : RecordOutput { private XPathDocument doc; private int documentIndex; private XmlRawWriter wr; internal XPathNavigator Navigator { get { return ((IXPathNavigable)doc).CreateNavigator(); } } internal NavigatorOutput(string baseUri) { doc = new XPathDocument(); this.wr = doc.LoadFromWriter(XPathDocument.LoadFlags.AtomizeNames, baseUri); } public Processor.OutputResult RecordDone(RecordBuilder record) { Debug.Assert(record != null); BuilderInfo mainNode = record.MainNode; documentIndex++; switch(mainNode.NodeType) { case XmlNodeType.Element: { wr.WriteStartElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); for (int attrib = 0; attrib < record.AttributeCount; attrib ++) { documentIndex++; Debug.Assert(record.AttributeList[attrib] is BuilderInfo); BuilderInfo attrInfo = (BuilderInfo) record.AttributeList[attrib]; if (attrInfo.NamespaceURI == Keywords.s_XmlnsNamespace) { if( attrInfo.Prefix.Length == 0 ) wr.WriteNamespaceDeclaration(string.Empty, attrInfo.Value ); else wr.WriteNamespaceDeclaration( attrInfo.LocalName, attrInfo.Value ); } else { wr.WriteAttributeString( attrInfo.Prefix, attrInfo.LocalName, attrInfo.NamespaceURI, attrInfo.Value ); } } wr.StartElementContent(); if (mainNode.IsEmptyTag) wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; } case XmlNodeType.Text: wr.WriteString( mainNode.Value ); break; case XmlNodeType.Whitespace: break; case XmlNodeType.SignificantWhitespace: wr.WriteString( mainNode.Value ); break; case XmlNodeType.ProcessingInstruction: wr.WriteProcessingInstruction( mainNode.LocalName, mainNode.Value ); break; case XmlNodeType.Comment: wr.WriteComment( mainNode.Value ); break; case XmlNodeType.Document: break; case XmlNodeType.EndElement: wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { wr.Close(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Xsl.XsltOld { using Res = System.Xml.Utils.Res; using System; using System.Diagnostics; using System.Xml; using System.Xml.XPath; using MS.Internal.Xml.Cache; internal class NavigatorOutput : RecordOutput { private XPathDocument doc; private int documentIndex; private XmlRawWriter wr; internal XPathNavigator Navigator { get { return ((IXPathNavigable)doc).CreateNavigator(); } } internal NavigatorOutput(string baseUri) { doc = new XPathDocument(); this.wr = doc.LoadFromWriter(XPathDocument.LoadFlags.AtomizeNames, baseUri); } public Processor.OutputResult RecordDone(RecordBuilder record) { Debug.Assert(record != null); BuilderInfo mainNode = record.MainNode; documentIndex++; switch(mainNode.NodeType) { case XmlNodeType.Element: { wr.WriteStartElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); for (int attrib = 0; attrib < record.AttributeCount; attrib ++) { documentIndex++; Debug.Assert(record.AttributeList[attrib] is BuilderInfo); BuilderInfo attrInfo = (BuilderInfo) record.AttributeList[attrib]; if (attrInfo.NamespaceURI == Keywords.s_XmlnsNamespace) { if( attrInfo.Prefix.Length == 0 ) wr.WriteNamespaceDeclaration(string.Empty, attrInfo.Value ); else wr.WriteNamespaceDeclaration( attrInfo.LocalName, attrInfo.Value ); } else { wr.WriteAttributeString( attrInfo.Prefix, attrInfo.LocalName, attrInfo.NamespaceURI, attrInfo.Value ); } } wr.StartElementContent(); if (mainNode.IsEmptyTag) wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; } case XmlNodeType.Text: wr.WriteString( mainNode.Value ); break; case XmlNodeType.Whitespace: break; case XmlNodeType.SignificantWhitespace: wr.WriteString( mainNode.Value ); break; case XmlNodeType.ProcessingInstruction: wr.WriteProcessingInstruction( mainNode.LocalName, mainNode.Value ); break; case XmlNodeType.Comment: wr.WriteComment( mainNode.Value ); break; case XmlNodeType.Document: break; case XmlNodeType.EndElement: wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { wr.Close(); } } } // 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
- RichTextBox.cs
- InheritanceService.cs
- WebPartCollection.cs
- GorillaCodec.cs
- SelectionEditingBehavior.cs
- WebFaultClientMessageInspector.cs
- TreeNodeEventArgs.cs
- RegistryExceptionHelper.cs
- Msec.cs
- ExpressionBinding.cs
- ProxySimple.cs
- TextEffect.cs
- FontDifferentiator.cs
- AuthorizationRule.cs
- TrustManager.cs
- ObjectDataSourceSelectingEventArgs.cs
- CompositeActivityMarkupSerializer.cs
- ValueOfAction.cs
- ByteStorage.cs
- WCFBuildProvider.cs
- MD5CryptoServiceProvider.cs
- Set.cs
- AutomationPeer.cs
- UniqueEventHelper.cs
- RequiredAttributeAttribute.cs
- SafeArchiveContext.cs
- ExpressionsCollectionEditor.cs
- SuppressMergeCheckAttribute.cs
- XNameConverter.cs
- VBCodeProvider.cs
- Crypto.cs
- ChannelServices.cs
- ScaleTransform3D.cs
- ObjectManager.cs
- List.cs
- BinaryMessageEncodingBindingElement.cs
- MultipleViewPattern.cs
- Button.cs
- SettingsPropertyWrongTypeException.cs
- IsolatedStorageFileStream.cs
- LabelTarget.cs
- UIAgentMonitorHandle.cs
- PagerSettings.cs
- DetailsViewModeEventArgs.cs
- ActivityCodeDomSerializer.cs
- StateChangeEvent.cs
- PlatformCulture.cs
- BamlRecordReader.cs
- XmlQualifiedName.cs
- SqlErrorCollection.cs
- SmtpLoginAuthenticationModule.cs
- BinaryObjectInfo.cs
- DependencyObjectType.cs
- TableItemPattern.cs
- SafePEFileHandle.cs
- RelationshipType.cs
- PermissionAttributes.cs
- CalendarDay.cs
- ValidationPropertyAttribute.cs
- FunctionQuery.cs
- SaveFileDialogDesigner.cs
- InstanceHandleReference.cs
- FileRegion.cs
- XPathNodePointer.cs
- StaticContext.cs
- PriorityQueue.cs
- AffineTransform3D.cs
- SourceSwitch.cs
- XmlSchemaObject.cs
- UDPClient.cs
- HotSpot.cs
- ComponentConverter.cs
- ReadOnlyHierarchicalDataSource.cs
- OperationExecutionFault.cs
- NativeCppClassAttribute.cs
- SafeViewOfFileHandle.cs
- ThousandthOfEmRealDoubles.cs
- ContentType.cs
- MachineKeySection.cs
- TableLayoutPanelCodeDomSerializer.cs
- HttpDictionary.cs
- CornerRadius.cs
- WindowsTokenRoleProvider.cs
- XmlValidatingReaderImpl.cs
- Filter.cs
- HMACSHA384.cs
- DataTableClearEvent.cs
- DataGridState.cs
- RemoteTokenFactory.cs
- VectorCollection.cs
- PrintEvent.cs
- DataGridViewColumnEventArgs.cs
- iisPickupDirectory.cs
- MasterPageCodeDomTreeGenerator.cs
- DataColumnMappingCollection.cs
- XPathItem.cs
- SafeBitVector32.cs
- WebPartDisplayMode.cs
- RouteItem.cs
- StylusDownEventArgs.cs