Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- TreeNodeStyleCollection.cs
- AppDomain.cs
- JoinQueryOperator.cs
- SoapMessage.cs
- ManagementEventArgs.cs
- DataGrid.cs
- SqlCacheDependencyDatabase.cs
- SemaphoreSlim.cs
- XmlConvert.cs
- SqlNodeAnnotations.cs
- PopupRoot.cs
- xmlglyphRunInfo.cs
- DBParameter.cs
- ClientFormsIdentity.cs
- EventRouteFactory.cs
- DefaultValueTypeConverter.cs
- SecurityPermission.cs
- EdmRelationshipRoleAttribute.cs
- QuaternionRotation3D.cs
- ChooseAction.cs
- TemplateBindingExtensionConverter.cs
- Bitmap.cs
- InputScopeConverter.cs
- __ComObject.cs
- SqlUDTStorage.cs
- DoubleCollectionValueSerializer.cs
- AffineTransform3D.cs
- PresentationSource.cs
- FontWeight.cs
- SoapProtocolReflector.cs
- Matrix3D.cs
- PanelDesigner.cs
- DelegateSerializationHolder.cs
- BindingExpressionBase.cs
- Matrix.cs
- CodeIterationStatement.cs
- WebPartActionVerb.cs
- SerialStream.cs
- Descriptor.cs
- MultiTrigger.cs
- shaperfactoryquerycachekey.cs
- MetadataCacheItem.cs
- PathStreamGeometryContext.cs
- HierarchicalDataBoundControlAdapter.cs
- VirtualDirectoryMappingCollection.cs
- NetCodeGroup.cs
- SqlCharStream.cs
- WebPartsSection.cs
- ReadOnlyDictionary.cs
- EntityTransaction.cs
- SendParametersContent.cs
- NativeMethods.cs
- JournalEntry.cs
- Version.cs
- BoolLiteral.cs
- LingerOption.cs
- HttpHandler.cs
- SEHException.cs
- DeviceContext.cs
- UnaryNode.cs
- COM2ExtendedBrowsingHandler.cs
- ResourcePermissionBase.cs
- MultipleViewProviderWrapper.cs
- Panel.cs
- EventEntry.cs
- IndentTextWriter.cs
- UITypeEditor.cs
- RotateTransform.cs
- AppDomainEvidenceFactory.cs
- ConstraintEnumerator.cs
- PrimaryKeyTypeConverter.cs
- Stroke.cs
- SqlDataSourceSelectingEventArgs.cs
- InternalControlCollection.cs
- RangeValidator.cs
- VirtualDirectoryMappingCollection.cs
- NonNullItemCollection.cs
- BaseDataBoundControlDesigner.cs
- DataExpression.cs
- ApplicationActivator.cs
- SecurityPermission.cs
- SchemaType.cs
- CodePageUtils.cs
- SqlXml.cs
- sqlnorm.cs
- BinaryFormatter.cs
- InstanceOwner.cs
- EventRoute.cs
- TextDataBindingHandler.cs
- ByteAnimationBase.cs
- FormattedTextSymbols.cs
- AnnotationHighlightLayer.cs
- ListViewItemSelectionChangedEvent.cs
- StretchValidation.cs
- DataObject.cs
- KeyFrames.cs
- MailAddressParser.cs
- BamlRecordHelper.cs
- WebHttpBinding.cs
- ListMarkerLine.cs