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
- DSASignatureDeformatter.cs
- UIntPtr.cs
- XmlComplianceUtil.cs
- EventLogHandle.cs
- TemplateControlCodeDomTreeGenerator.cs
- Filter.cs
- ValidationSummary.cs
- WindowsIdentity.cs
- RepeaterCommandEventArgs.cs
- TableNameAttribute.cs
- SuppressMessageAttribute.cs
- UrlMappingsSection.cs
- ClientConvert.cs
- HttpClientCertificate.cs
- RenderContext.cs
- ObjectPersistData.cs
- PersonalizationProviderCollection.cs
- COM2ExtendedTypeConverter.cs
- Msec.cs
- DbSource.cs
- ClientScriptItemCollection.cs
- ComponentChangingEvent.cs
- CryptoApi.cs
- CodeSnippetCompileUnit.cs
- DbReferenceCollection.cs
- BufferedReadStream.cs
- Merger.cs
- PreservationFileReader.cs
- DebugInfoGenerator.cs
- InputScopeManager.cs
- WindowInteropHelper.cs
- JsonDataContract.cs
- SafeThemeHandle.cs
- DoubleLinkList.cs
- RenderContext.cs
- PlainXmlWriter.cs
- StylusOverProperty.cs
- DataGridLinkButton.cs
- HttpCookie.cs
- elementinformation.cs
- AutomationFocusChangedEventArgs.cs
- HtmlEncodedRawTextWriter.cs
- ServiceOperation.cs
- StructuredTypeInfo.cs
- QilBinary.cs
- PopupEventArgs.cs
- SpeechSeg.cs
- FileDialogCustomPlace.cs
- DbQueryCommandTree.cs
- StringToken.cs
- BamlRecords.cs
- XmlSchemaSimpleTypeRestriction.cs
- XmlBoundElement.cs
- ContentDisposition.cs
- MasterPageParser.cs
- CompilerWrapper.cs
- TextUtf8RawTextWriter.cs
- BitmapEffect.cs
- ResXBuildProvider.cs
- DataFormats.cs
- StringValueSerializer.cs
- ChangeInterceptorAttribute.cs
- FixedSOMPageElement.cs
- Vector3DKeyFrameCollection.cs
- CompilerCollection.cs
- DefaultBinder.cs
- AppModelKnownContentFactory.cs
- RSAOAEPKeyExchangeDeformatter.cs
- TypeUtil.cs
- BaseParser.cs
- Panel.cs
- Logging.cs
- FontUnitConverter.cs
- DataGridViewRowHeaderCell.cs
- UpnEndpointIdentityExtension.cs
- EpmSyndicationContentDeSerializer.cs
- PeerContact.cs
- DataRowCollection.cs
- EventLogEntryCollection.cs
- ISFTagAndGuidCache.cs
- TdsEnums.cs
- DesignerDataTableBase.cs
- LinqDataSourceView.cs
- PropertySegmentSerializationProvider.cs
- DataGridViewRowStateChangedEventArgs.cs
- EntityDataSourceSelectingEventArgs.cs
- WindowsSecurityTokenAuthenticator.cs
- NumericExpr.cs
- ComponentEditorForm.cs
- RootBuilder.cs
- ModuleBuilderData.cs
- CollectionsUtil.cs
- SiteOfOriginContainer.cs
- EventLog.cs
- DateBoldEvent.cs
- LabelAutomationPeer.cs
- EntityDataSourceViewSchema.cs
- HashCodeCombiner.cs
- XmlCustomFormatter.cs
- RuleAttributes.cs