Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- TextUtf8RawTextWriter.cs
- VisualStyleInformation.cs
- WindowsTokenRoleProvider.cs
- CustomValidator.cs
- EntityDataSourceUtil.cs
- MimeObjectFactory.cs
- ControlCachePolicy.cs
- ConfigurationValidatorAttribute.cs
- KeySpline.cs
- Operator.cs
- FreezableDefaultValueFactory.cs
- OleDbException.cs
- NameSpaceExtractor.cs
- FixedPosition.cs
- BitmapEffectInput.cs
- SapiRecoContext.cs
- XPathPatternBuilder.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- TimelineGroup.cs
- UserControlAutomationPeer.cs
- ColorAnimation.cs
- WebConfigurationFileMap.cs
- UrlAuthFailedErrorFormatter.cs
- ProgressBar.cs
- ConnectionsZone.cs
- StringConverter.cs
- ChannelManager.cs
- SaveFileDialog.cs
- EnumerableRowCollection.cs
- Dispatcher.cs
- ObjectNavigationPropertyMapping.cs
- SessionStateUtil.cs
- Environment.cs
- OpenTypeLayoutCache.cs
- ProfileGroupSettings.cs
- IDataContractSurrogate.cs
- CompareValidator.cs
- RawStylusInputReport.cs
- SchemaDeclBase.cs
- OrCondition.cs
- WebReferencesBuildProvider.cs
- DetailsViewPagerRow.cs
- HtmlControl.cs
- ViewCellSlot.cs
- PrintDialogException.cs
- DrawingAttributeSerializer.cs
- BindingWorker.cs
- GradientPanel.cs
- ListViewHitTestInfo.cs
- FamilyMapCollection.cs
- KnownColorTable.cs
- DecoratedNameAttribute.cs
- Converter.cs
- BamlRecordWriter.cs
- Bits.cs
- TraceSection.cs
- EncryptedData.cs
- OperationParameterInfo.cs
- TableTextElementCollectionInternal.cs
- SchemaElement.cs
- ObjectCloneHelper.cs
- CacheChildrenQuery.cs
- ThreadStartException.cs
- ToolBarOverflowPanel.cs
- ParserStreamGeometryContext.cs
- DataSourceXmlAttributeAttribute.cs
- CompositeTypefaceMetrics.cs
- ClientRolePrincipal.cs
- MatrixUtil.cs
- ParserExtension.cs
- cookieexception.cs
- DelegateOutArgument.cs
- DataListAutoFormat.cs
- HttpWebRequestElement.cs
- SrgsToken.cs
- DynamicValidator.cs
- SqlDataSourceView.cs
- WizardStepBase.cs
- DelegateArgumentValue.cs
- AutomationElementIdentifiers.cs
- ResolveNameEventArgs.cs
- CodeRegionDirective.cs
- SplitterEvent.cs
- ArglessEventHandlerProxy.cs
- ActiveXHelper.cs
- RegularExpressionValidator.cs
- SamlAuthorizationDecisionStatement.cs
- HashLookup.cs
- ProcessMessagesAsyncResult.cs
- ConfigurationSectionGroup.cs
- XmlRawWriter.cs
- ItemType.cs
- DockProviderWrapper.cs
- XmlSchemaSimpleTypeList.cs
- FormParameter.cs
- TemplateContent.cs
- BamlTreeMap.cs
- ImmComposition.cs
- Shape.cs
- EFColumnProvider.cs