Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / NavigatorOutput.cs / 1305376 / 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 == XmlReservedNs.NsXmlNs) { 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 == XmlReservedNs.NsXmlNs) { 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
- EntityCommandDefinition.cs
- InsufficientMemoryException.cs
- ITreeGenerator.cs
- ShaderRenderModeValidation.cs
- OneToOneMappingSerializer.cs
- MenuItemCollectionEditorDialog.cs
- EntityDataSourceMemberPath.cs
- TemplatedAdorner.cs
- SoapProtocolImporter.cs
- HostingPreferredMapPath.cs
- AssemblyName.cs
- EntityDataSourceViewSchema.cs
- SelectedCellsChangedEventArgs.cs
- MD5CryptoServiceProvider.cs
- MatrixKeyFrameCollection.cs
- ActiveXHost.cs
- ParallelTimeline.cs
- PropertyPath.cs
- DocumentCollection.cs
- PrtCap_Base.cs
- HtmlHead.cs
- AssociationTypeEmitter.cs
- Monitor.cs
- DispatcherOperation.cs
- ListDictionaryInternal.cs
- DummyDataSource.cs
- OdbcHandle.cs
- AssemblyNameProxy.cs
- Debug.cs
- XmlReflectionMember.cs
- CodeValidator.cs
- TransportManager.cs
- BrushValueSerializer.cs
- DbModificationClause.cs
- WindowsRebar.cs
- XhtmlConformanceSection.cs
- DataFormat.cs
- PreservationFileReader.cs
- ProfileParameter.cs
- DirectoryObjectSecurity.cs
- Atom10ItemFormatter.cs
- UidPropertyAttribute.cs
- IntPtr.cs
- DataTemplateKey.cs
- DesignerAttribute.cs
- ConnectionInterfaceCollection.cs
- DynamicRendererThreadManager.cs
- ReservationCollection.cs
- CustomPopupPlacement.cs
- XmlException.cs
- DataPagerFieldItem.cs
- Queue.cs
- Clipboard.cs
- XmlQueryTypeFactory.cs
- KeyEvent.cs
- XamlWrapperReaders.cs
- LinkClickEvent.cs
- BoundPropertyEntry.cs
- WebConfigurationFileMap.cs
- ConnectivityStatus.cs
- WindowsFormsLinkLabel.cs
- UrlMappingsModule.cs
- SqlXml.cs
- TextRange.cs
- FilterElement.cs
- WindowsAuthenticationEventArgs.cs
- XmlILConstructAnalyzer.cs
- LazyTextWriterCreator.cs
- OdbcUtils.cs
- ContainerAction.cs
- MetadataHelper.cs
- HandlerWithFactory.cs
- TextTrailingCharacterEllipsis.cs
- HttpCacheVaryByContentEncodings.cs
- Trigger.cs
- RuntimeWrappedException.cs
- SamlDoNotCacheCondition.cs
- AgileSafeNativeMemoryHandle.cs
- CodeAssignStatement.cs
- AutomationPatternInfo.cs
- JavaScriptString.cs
- querybuilder.cs
- ScriptResourceMapping.cs
- TypeSystem.cs
- XmlFormatExtensionPointAttribute.cs
- SerializationEventsCache.cs
- OciLobLocator.cs
- FixedSOMElement.cs
- PageContent.cs
- Point3DCollectionValueSerializer.cs
- SmiGettersStream.cs
- ListItemDetailViewAttribute.cs
- ControlLocalizer.cs
- UrlPath.cs
- ExpressionsCollectionEditor.cs
- TransformConverter.cs
- XmlSchemaChoice.cs
- dataobject.cs
- MSHTMLHost.cs
- OracleConnection.cs