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
- XhtmlBasicValidatorAdapter.cs
- NumberFormatInfo.cs
- ChooseAction.cs
- GridItemPatternIdentifiers.cs
- ControlEvent.cs
- XmlAttributeProperties.cs
- ValidationPropertyAttribute.cs
- ExpressionBuilder.cs
- HtmlEncodedRawTextWriter.cs
- XpsSerializerFactory.cs
- ScopelessEnumAttribute.cs
- DbSetClause.cs
- Metafile.cs
- PropertyEmitter.cs
- Converter.cs
- ProfileParameter.cs
- TypeElement.cs
- BindingManagerDataErrorEventArgs.cs
- Transform.cs
- BufferedReadStream.cs
- HwndProxyElementProvider.cs
- CodeObjectCreateExpression.cs
- FactoryMaker.cs
- XmlRawWriter.cs
- AnnotationAuthorChangedEventArgs.cs
- SupportingTokenParameters.cs
- TextRange.cs
- DocumentEventArgs.cs
- InstanceDescriptor.cs
- LinkAreaEditor.cs
- SequenceDesigner.cs
- SafeWaitHandle.cs
- CharAnimationBase.cs
- MessageHeaderT.cs
- XmlnsPrefixAttribute.cs
- XmlSchemaSimpleContent.cs
- DbgCompiler.cs
- LinearGradientBrush.cs
- DoubleConverter.cs
- ThemeableAttribute.cs
- FontFaceLayoutInfo.cs
- RtfControls.cs
- EventSinkActivityDesigner.cs
- TriggerCollection.cs
- UIElementHelper.cs
- CalendarButton.cs
- GetIndexBinder.cs
- WindowInteropHelper.cs
- DataGridSortCommandEventArgs.cs
- SchemaImporterExtensionElementCollection.cs
- FullTrustAssembliesSection.cs
- SqlDependencyListener.cs
- InvalidOperationException.cs
- SharedPersonalizationStateInfo.cs
- PropertyFilter.cs
- RuntimeConfigurationRecord.cs
- SqlConnectionStringBuilder.cs
- RoamingStoreFile.cs
- XPathAncestorQuery.cs
- MappingItemCollection.cs
- BooleanAnimationUsingKeyFrames.cs
- LinqExpressionNormalizer.cs
- DataListItem.cs
- TypeLibraryHelper.cs
- DataControlButton.cs
- DataServiceResponse.cs
- AppDomainFactory.cs
- XmlFormatWriterGenerator.cs
- _ServiceNameStore.cs
- _OSSOCK.cs
- DeliveryStrategy.cs
- RuleSettings.cs
- ParameterModifier.cs
- DocumentAutomationPeer.cs
- OneOfElement.cs
- ClientSettings.cs
- SlipBehavior.cs
- GroupItem.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- SendMailErrorEventArgs.cs
- PerfCounterSection.cs
- ConstructorArgumentAttribute.cs
- DbConnectionHelper.cs
- NetworkInformationException.cs
- CqlGenerator.cs
- CompoundFileStreamReference.cs
- nulltextnavigator.cs
- QueueProcessor.cs
- ISessionStateStore.cs
- DataSourceSelectArguments.cs
- SettingsSavedEventArgs.cs
- XmlUtf8RawTextWriter.cs
- PriorityItem.cs
- PeerEndPoint.cs
- EntityDataSourceWrapper.cs
- ToolboxItemCollection.cs
- CompModSwitches.cs
- X509CertificateInitiatorServiceCredential.cs
- ResourceDescriptionAttribute.cs
- ReliableSessionBindingElement.cs