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
- GraphicsContainer.cs
- ResourceSetExpression.cs
- RangeContentEnumerator.cs
- ControlAdapter.cs
- FacetDescriptionElement.cs
- OLEDB_Enum.cs
- CodePrimitiveExpression.cs
- SerializationInfoEnumerator.cs
- ValueConversionAttribute.cs
- GetChildSubtree.cs
- TransactionScope.cs
- ClientType.cs
- _NegoStream.cs
- SchemaImporterExtensionElement.cs
- PermissionToken.cs
- AssociatedControlConverter.cs
- TextMessageEncoder.cs
- LocalizabilityAttribute.cs
- MessageSecurityOverHttpElement.cs
- XmlUtf8RawTextWriter.cs
- TouchesCapturedWithinProperty.cs
- DataGridCell.cs
- CommonObjectSecurity.cs
- Transform.cs
- SafeNativeMethodsOther.cs
- DataGridViewRowCollection.cs
- EntityContainerEmitter.cs
- TrackingProfile.cs
- FormClosedEvent.cs
- ObfuscationAttribute.cs
- SystemGatewayIPAddressInformation.cs
- Compiler.cs
- RangeValueProviderWrapper.cs
- BitmapFrame.cs
- SendingRequestEventArgs.cs
- ConfigurationStrings.cs
- Columns.cs
- AnimatedTypeHelpers.cs
- IIS7WorkerRequest.cs
- ConfigXmlSignificantWhitespace.cs
- ConnectionManagementElementCollection.cs
- HebrewCalendar.cs
- TextUtf8RawTextWriter.cs
- StrongNamePublicKeyBlob.cs
- SendMailErrorEventArgs.cs
- Enlistment.cs
- OleDbConnection.cs
- ParameterExpression.cs
- XamlLoadErrorInfo.cs
- JournalNavigationScope.cs
- SectionXmlInfo.cs
- XmlUTF8TextWriter.cs
- ClientBuildManager.cs
- ReaderContextStackData.cs
- XPathExpr.cs
- IdentityReference.cs
- PersistenceMetadataNamespace.cs
- XmlCountingReader.cs
- QilParameter.cs
- JpegBitmapEncoder.cs
- HelpKeywordAttribute.cs
- CapabilitiesUse.cs
- StorageComplexTypeMapping.cs
- IndicShape.cs
- TreeViewDesigner.cs
- CompiledRegexRunner.cs
- ParseChildrenAsPropertiesAttribute.cs
- PropertyChangingEventArgs.cs
- Section.cs
- ComponentResourceManager.cs
- DiagnosticTraceSource.cs
- SubpageParagraph.cs
- DecimalKeyFrameCollection.cs
- _UriSyntax.cs
- UIElementPropertyUndoUnit.cs
- SafeNativeMethods.cs
- PointUtil.cs
- FileDialog.cs
- PerspectiveCamera.cs
- SetterBase.cs
- EntityConnectionStringBuilderItem.cs
- XamlSerializerUtil.cs
- CollectionBuilder.cs
- ScriptControl.cs
- CodeTypeReference.cs
- ClearTypeHintValidation.cs
- UriWriter.cs
- ReadOnlyDataSource.cs
- GradientSpreadMethodValidation.cs
- VirtualPath.cs
- EntityContainer.cs
- PackageDigitalSignatureManager.cs
- DerivedKeySecurityTokenStub.cs
- ImplicitInputBrush.cs
- ConstrainedGroup.cs
- UIElementCollection.cs
- RelationshipManager.cs
- Normalizer.cs
- NameSpaceEvent.cs
- WindowsToolbarItemAsMenuItem.cs