Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / XsltOutput.cs / 1305376 / XsltOutput.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.IO;
using System.Xml;
using System.Text;
using System.Collections;
internal class XsltOutput : CompiledAction {
internal enum OutputMethod {
Xml,
Html,
Text,
Other,
Unknown,
}
private OutputMethod method = OutputMethod.Unknown;
private int methodSId = int.MaxValue;
private Encoding encoding = System.Text.Encoding.UTF8;
private int encodingSId = int.MaxValue;
private string version;
private int versionSId = int.MaxValue;
private bool omitXmlDecl;
private int omitXmlDeclSId = int.MaxValue;
private bool standalone;
private int standaloneSId = int.MaxValue;
private string doctypePublic;
private int doctypePublicSId = int.MaxValue;
private string doctypeSystem;
private int doctypeSystemSId = int.MaxValue;
private bool indent;
private int indentSId = int.MaxValue;
private string mediaType = "text/html";
private int mediaTypeSId = int.MaxValue;
private Hashtable cdataElements;
internal OutputMethod Method {
get { return this.method; }
}
internal bool OmitXmlDeclaration {
get { return this.omitXmlDecl; }
}
internal bool HasStandalone {
get { return this.standaloneSId != int.MaxValue; }
}
internal bool Standalone {
get { return this.standalone; }
}
internal string DoctypePublic {
get { return this.doctypePublic; }
}
internal string DoctypeSystem {
get { return this.doctypeSystem; }
}
internal Hashtable CDataElements {
get { return this.cdataElements; }
}
internal bool Indent {
get { return this.indent; }
}
internal Encoding Encoding {
get { return this.encoding; }
}
internal string MediaType {
get { return this.mediaType; }
}
internal XsltOutput CreateDerivedOutput(OutputMethod method) {
XsltOutput output = (XsltOutput) MemberwiseClone();
output.method = method;
if (method == OutputMethod.Html && this.indentSId == int.MaxValue) { // HTML output and Ident wasn't specified
output.indent = true;
}
return output;
}
internal override void Compile(Compiler compiler) {
CompileAttributes(compiler);
CheckEmpty(compiler);
}
internal override bool CompileAttribute(Compiler compiler) {
string name = compiler.Input.LocalName;
string value = compiler.Input.Value;
if (Ref.Equal(name, compiler.Atoms.Method)) {
if (compiler.Stylesheetid <= this.methodSId) {
this.method = ParseOutputMethod(value, compiler);
this.methodSId = compiler.Stylesheetid;
if (this.indentSId == int.MaxValue) {
this.indent = (this.method == OutputMethod.Html);
}
}
}
else if (Ref.Equal(name, compiler.Atoms.Version)) {
if (compiler.Stylesheetid <= this.versionSId) {
this.version = value;
this.versionSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.Encoding)) {
if (compiler.Stylesheetid <= this.encodingSId) {
try {
this.encoding = System.Text.Encoding.GetEncoding(value);
this.encodingSId = compiler.Stylesheetid;
}
catch (System.NotSupportedException) {}
catch (System.ArgumentException) {}
Debug.Assert(this.encoding != null);
}
}
else if (Ref.Equal(name, compiler.Atoms.OmitXmlDeclaration)) {
if (compiler.Stylesheetid <= this.omitXmlDeclSId) {
this.omitXmlDecl = compiler.GetYesNo(value);
this.omitXmlDeclSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.Standalone)) {
if (compiler.Stylesheetid <= this.standaloneSId) {
this.standalone = compiler.GetYesNo(value);
this.standaloneSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.DocTypePublic)) {
if (compiler.Stylesheetid <= this.doctypePublicSId) {
this.doctypePublic = value;
this.doctypePublicSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.DocTypeSystem)) {
if (compiler.Stylesheetid <= this.doctypeSystemSId) {
this.doctypeSystem = value;
this.doctypeSystemSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.Indent)) {
if (compiler.Stylesheetid <= this.indentSId) {
this.indent = compiler.GetYesNo(value);
this.indentSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.MediaType)) {
if (compiler.Stylesheetid <= this.mediaTypeSId) {
this.mediaType = value;
this.mediaTypeSId = compiler.Stylesheetid;
}
}
else if (Ref.Equal(name, compiler.Atoms.CDataSectionElements)) {
string[] qnames = XmlConvert.SplitString(value);
if (this.cdataElements == null) {
this.cdataElements = new Hashtable(qnames.Length);
}
for (int i = 0; i < qnames.Length; i++) {
XmlQualifiedName qname = compiler.CreateXmlQName(qnames[i]);
this.cdataElements[qname] = qname;
}
}
else {
return false;
}
return true;
}
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(false);
}
private static OutputMethod ParseOutputMethod(string value, Compiler compiler) {
XmlQualifiedName method = compiler.CreateXPathQName(value);
if(method.Namespace.Length != 0) {
return OutputMethod.Other;
}
switch(method.Name) {
case "xml" :
return OutputMethod.Xml ;
case "html" :
return OutputMethod.Html;
case "text" :
return OutputMethod.Text;
default :
if (compiler.ForwardCompatibility) {
return OutputMethod.Unknown;
}
throw XsltException.Create(Res.Xslt_InvalidAttrValue, "method", value);
}
}
}
}
// 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
- DependencyPropertyChangedEventArgs.cs
- WindowsServiceCredential.cs
- SoapAttributeOverrides.cs
- ReflectTypeDescriptionProvider.cs
- OdbcConnectionStringbuilder.cs
- XPathAxisIterator.cs
- mediapermission.cs
- ObjectAnimationBase.cs
- OracleCommand.cs
- ConnectionPointCookie.cs
- SafeBitVector32.cs
- XmlChildNodes.cs
- SolidBrush.cs
- BitmapVisualManager.cs
- RoutedPropertyChangedEventArgs.cs
- EmissiveMaterial.cs
- EntityCommandDefinition.cs
- HtmlSelect.cs
- ObsoleteAttribute.cs
- JapaneseCalendar.cs
- DataGridViewTopLeftHeaderCell.cs
- XPathNode.cs
- XmlLanguage.cs
- ProcessProtocolHandler.cs
- PriorityChain.cs
- PagedDataSource.cs
- RuleConditionDialog.Designer.cs
- VectorConverter.cs
- TextTreeUndoUnit.cs
- SelectedDatesCollection.cs
- StreamSecurityUpgradeAcceptor.cs
- ColumnCollection.cs
- WsdlInspector.cs
- BatchWriter.cs
- MsmqOutputMessage.cs
- Int64Animation.cs
- NullableConverter.cs
- X509Extension.cs
- ReferenceSchema.cs
- SmtpClient.cs
- OleDbCommand.cs
- ObjectDataSourceStatusEventArgs.cs
- BitmapMetadata.cs
- Content.cs
- DataGridLength.cs
- PinnedBufferMemoryStream.cs
- DomainConstraint.cs
- CfgSemanticTag.cs
- DataKeyCollection.cs
- DateRangeEvent.cs
- InfiniteTimeSpanConverter.cs
- GlyphRunDrawing.cs
- ConnectionPoint.cs
- SymDocumentType.cs
- ArraySortHelper.cs
- FormViewInsertedEventArgs.cs
- EditingCommands.cs
- TextMetrics.cs
- RemotingConfiguration.cs
- BaseDataList.cs
- DiscoveryClientChannelBase.cs
- LayoutTable.cs
- RelationshipManager.cs
- UpdateCompiler.cs
- ResponseStream.cs
- XmlSchemaAttribute.cs
- OleDbReferenceCollection.cs
- ObjectStateEntryDbDataRecord.cs
- UseLicense.cs
- TypeLibConverter.cs
- _Events.cs
- Model3DGroup.cs
- SynchronizedDispatch.cs
- DefaultClaimSet.cs
- Block.cs
- ToolStripLocationCancelEventArgs.cs
- OleDbErrorCollection.cs
- DetailsViewCommandEventArgs.cs
- RoleService.cs
- TypefaceMap.cs
- TypeLoadException.cs
- TextUtf8RawTextWriter.cs
- DoubleAnimationUsingPath.cs
- SafeCryptoHandles.cs
- CommandTreeTypeHelper.cs
- StyleConverter.cs
- Dispatcher.cs
- DefaultValueTypeConverter.cs
- TypefaceCollection.cs
- UIElementPropertyUndoUnit.cs
- CatalogZoneBase.cs
- ReferentialConstraintRoleElement.cs
- ImageKeyConverter.cs
- StringAnimationUsingKeyFrames.cs
- RightsManagementProvider.cs
- WebConfigurationHostFileChange.cs
- TextServicesManager.cs
- ServiceBehaviorAttribute.cs
- initElementDictionary.cs
- StringInfo.cs