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
- ImageSource.cs
- WindowsRebar.cs
- MSG.cs
- RelationshipType.cs
- ObjectStorage.cs
- MetaModel.cs
- DefaultValueConverter.cs
- ExpressionVisitor.cs
- Filter.cs
- RefreshPropertiesAttribute.cs
- GenericEnumConverter.cs
- XNodeNavigator.cs
- IntSecurity.cs
- GeometryCombineModeValidation.cs
- ImageSourceValueSerializer.cs
- RelOps.cs
- TrailingSpaceComparer.cs
- StorageMappingItemLoader.cs
- RawContentTypeMapper.cs
- bidPrivateBase.cs
- METAHEADER.cs
- StringDictionary.cs
- UndoEngine.cs
- EntitySetRetriever.cs
- FixedSOMElement.cs
- XamlPoint3DCollectionSerializer.cs
- TokenFactoryFactory.cs
- SolidBrush.cs
- UniqueEventHelper.cs
- DataPager.cs
- WebBrowserNavigatedEventHandler.cs
- CrossSiteScriptingValidation.cs
- DateTimeConverter2.cs
- XmlStreamStore.cs
- SoapAttributeOverrides.cs
- ScriptControlDescriptor.cs
- ServicePoint.cs
- DisableDpiAwarenessAttribute.cs
- AllMembershipCondition.cs
- StorageEntitySetMapping.cs
- TypographyProperties.cs
- FixedTextPointer.cs
- WindowsGraphicsWrapper.cs
- SrgsElement.cs
- TreeView.cs
- MessageBox.cs
- StateRuntime.cs
- SchemaName.cs
- SafeSecurityHandles.cs
- __FastResourceComparer.cs
- AtomMaterializer.cs
- InstanceCreationEditor.cs
- PlanCompilerUtil.cs
- InputLanguageSource.cs
- CommonDialog.cs
- RtfControlWordInfo.cs
- TypefaceMetricsCache.cs
- ListViewItem.cs
- TypeConstant.cs
- GB18030Encoding.cs
- StorageEntityTypeMapping.cs
- WebProxyScriptElement.cs
- TextDataBindingHandler.cs
- ProgressiveCrcCalculatingStream.cs
- OptimisticConcurrencyException.cs
- TextDecorationUnitValidation.cs
- DoubleIndependentAnimationStorage.cs
- SqlColumnizer.cs
- DesignerSerializationVisibilityAttribute.cs
- SqlNode.cs
- XmlCountingReader.cs
- StrokeDescriptor.cs
- TableParagraph.cs
- NumericUpDown.cs
- CheckBoxDesigner.cs
- KoreanCalendar.cs
- AnimationException.cs
- MulticastOption.cs
- MatrixIndependentAnimationStorage.cs
- BitmapPalette.cs
- RegistryExceptionHelper.cs
- BindingContext.cs
- ComponentDispatcher.cs
- EntryWrittenEventArgs.cs
- FileSystemEnumerable.cs
- ToolboxComponentsCreatingEventArgs.cs
- PartialCachingAttribute.cs
- ElementAtQueryOperator.cs
- ArraySubsetEnumerator.cs
- XmlAnyElementAttribute.cs
- PrintPreviewDialog.cs
- HybridDictionary.cs
- OleDbParameter.cs
- FileVersionInfo.cs
- SystemColors.cs
- WebPartsPersonalization.cs
- QueryableFilterRepeater.cs
- XsltException.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs