Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Xml / System / Xml / Xslt / XslTransform.cs / 1 / XslTransform.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl {
#if ! HIDE_XSL
using System.Reflection;
using System.Diagnostics;
using System.IO;
using System.Xml.XPath;
using System.Xml.Xsl.XsltOld;
using MS.Internal.Xml.XPath;
using MS.Internal.Xml.Cache;
using System.Collections.Generic;
using System.Xml.Xsl.XsltOld.Debugger;
using System.Security.Policy;
using System.Security.Permissions;
[Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform {
private XmlResolver _XmlResolver = new XmlUrlResolver();
//
// Compiled stylesheet state
//
private Stylesheet _CompiledStylesheet;
private List _QueryStore;
private RootAction _RootAction;
private IXsltDebugger debugger;
public XslTransform() {}
public XmlResolver XmlResolver {
set { _XmlResolver = value; }
}
public void Load(XmlReader stylesheet) {
Load(stylesheet, new XmlUrlResolver());
}
public void Load(XmlReader stylesheet, XmlResolver resolver) {
Load(new XPathDocument(stylesheet, XmlSpace.Preserve), resolver);
}
public void Load(IXPathNavigable stylesheet) {
Load(stylesheet, new XmlUrlResolver());
}
public void Load(IXPathNavigable stylesheet, XmlResolver resolver) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(stylesheet.CreateNavigator(), resolver);
}
public void Load(XPathNavigator stylesheet) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(stylesheet, new XmlUrlResolver());
}
public void Load(XPathNavigator stylesheet, XmlResolver resolver) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
if (resolver == null) {
resolver = new XmlNullResolver();
}
Compile(stylesheet, resolver, /*evidence:*/null);
}
public void Load(string url) {
Load(url, new XmlUrlResolver());
}
public void Load(string url, XmlResolver resolver) {
XmlTextReaderImpl tr = new XmlTextReaderImpl(url); {
tr.XmlResolver = resolver;
}
Evidence evidence = XmlSecureResolver.CreateEvidenceForUrl(tr.BaseURI); // We should ask BaseURI before we start reading because it's changing with each node
if (resolver == null) {
resolver = new XmlNullResolver();
}
Compile(Compiler.LoadDocument(tr).CreateNavigator(), resolver, evidence);
}
public void Load(IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(stylesheet.CreateNavigator(), resolver, evidence);
}
public void Load(XmlReader stylesheet, XmlResolver resolver, Evidence evidence) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(new XPathDocument(stylesheet, XmlSpace.Preserve), resolver, evidence);
}
public void Load(XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
if (resolver == null) {
resolver = new XmlNullResolver();
}
if (evidence == null) {
evidence = new Evidence();
}
else {
new SecurityPermission(SecurityPermissionFlag.ControlEvidence).Demand();
}
Compile(stylesheet, resolver, evidence);
}
// ------------------------------------ Transform() ------------------------------------ //
private void CheckCommand() {
if (_CompiledStylesheet == null) {
throw new InvalidOperationException(Res.GetString(Res.Xslt_NoStylesheetLoaded));
}
}
public XmlReader Transform(XPathNavigator input, XsltArgumentList args, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
return processor.StartReader();
}
public XmlReader Transform(XPathNavigator input, XsltArgumentList args) {
return Transform(input, args, _XmlResolver);
}
public void Transform(XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public void Transform(XPathNavigator input, XsltArgumentList args, XmlWriter output) {
Transform(input, args, output, _XmlResolver);
}
public void Transform(XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public void Transform(XPathNavigator input, XsltArgumentList args, Stream output) {
Transform(input, args, output, _XmlResolver);
}
public void Transform(XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public void Transform(XPathNavigator input, XsltArgumentList args, TextWriter output) {
CheckCommand();
Processor processor = new Processor(input, args, _XmlResolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public XmlReader Transform(IXPathNavigable input, XsltArgumentList args, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
return Transform(input.CreateNavigator(), args, resolver);
}
public XmlReader Transform(IXPathNavigable input, XsltArgumentList args) {
if (input == null) {
throw new ArgumentNullException("input");
}
return Transform(input.CreateNavigator(), args, _XmlResolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, resolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, TextWriter output) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, _XmlResolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, resolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, Stream output) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, _XmlResolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, resolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, XmlWriter output) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, _XmlResolver);
}
public void Transform(String inputfile, String outputfile, XmlResolver resolver) {
FileStream fs = null;
try {
// We should read doc before creating output file in case they are the same
XPathDocument doc = new XPathDocument(inputfile);
fs = new FileStream(outputfile, FileMode.Create, FileAccess.ReadWrite);
Transform(doc, /*args:*/null, fs, resolver);
}
finally {
if (fs != null) {
fs.Close();
}
}
}
public void Transform(String inputfile, String outputfile) {
Transform(inputfile, outputfile, _XmlResolver);
}
// Implementation
private void Compile(XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence) {
Debug.Assert(stylesheet != null);
Debug.Assert(resolver != null);
Compiler compiler = (Debugger == null) ? new Compiler() : new DbgCompiler(this.Debugger);
NavigatorInput input = new NavigatorInput(stylesheet);
compiler.Compile(input, resolver, evidence);
Debug.Assert(compiler.CompiledStylesheet != null);
Debug.Assert(compiler.QueryStore != null);
Debug.Assert(compiler.QueryStore != null);
_CompiledStylesheet = compiler.CompiledStylesheet;
_QueryStore = compiler.QueryStore;
_RootAction = compiler.RootAction;
}
internal IXsltDebugger Debugger {
get { return this.debugger; }
}
#if false
internal XslTransform(IXsltDebugger debugger) {
this.debugger = debugger;
}
#endif
internal XslTransform(object debugger) {
if (debugger != null) {
this.debugger = new DebuggerAddapter(debugger);
}
}
private class DebuggerAddapter : IXsltDebugger {
private object unknownDebugger;
private MethodInfo getBltIn;
private MethodInfo onCompile;
private MethodInfo onExecute;
public DebuggerAddapter(object unknownDebugger) {
this.unknownDebugger = unknownDebugger;
BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static;
Type unknownType = unknownDebugger.GetType();
getBltIn = unknownType.GetMethod("GetBuiltInTemplatesUri", flags);
onCompile = unknownType.GetMethod("OnInstructionCompile" , flags);
onExecute = unknownType.GetMethod("OnInstructionExecute" , flags);
}
// ------------------ IXsltDebugger ---------------
public string GetBuiltInTemplatesUri() {
if (getBltIn == null) {
return null;
}
return (string) getBltIn.Invoke(unknownDebugger, new object[] {});
}
public void OnInstructionCompile(XPathNavigator styleSheetNavigator) {
if (onCompile != null) {
onCompile.Invoke(unknownDebugger, new object[] { styleSheetNavigator });
}
}
public void OnInstructionExecute(IXsltProcessor xsltProcessor) {
if (onExecute != null) {
onExecute.Invoke(unknownDebugger, new object[] { xsltProcessor });
}
}
}
}
#endif // ! HIDE_XSL
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl {
#if ! HIDE_XSL
using System.Reflection;
using System.Diagnostics;
using System.IO;
using System.Xml.XPath;
using System.Xml.Xsl.XsltOld;
using MS.Internal.Xml.XPath;
using MS.Internal.Xml.Cache;
using System.Collections.Generic;
using System.Xml.Xsl.XsltOld.Debugger;
using System.Security.Policy;
using System.Security.Permissions;
[Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform {
private XmlResolver _XmlResolver = new XmlUrlResolver();
//
// Compiled stylesheet state
//
private Stylesheet _CompiledStylesheet;
private List _QueryStore;
private RootAction _RootAction;
private IXsltDebugger debugger;
public XslTransform() {}
public XmlResolver XmlResolver {
set { _XmlResolver = value; }
}
public void Load(XmlReader stylesheet) {
Load(stylesheet, new XmlUrlResolver());
}
public void Load(XmlReader stylesheet, XmlResolver resolver) {
Load(new XPathDocument(stylesheet, XmlSpace.Preserve), resolver);
}
public void Load(IXPathNavigable stylesheet) {
Load(stylesheet, new XmlUrlResolver());
}
public void Load(IXPathNavigable stylesheet, XmlResolver resolver) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(stylesheet.CreateNavigator(), resolver);
}
public void Load(XPathNavigator stylesheet) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(stylesheet, new XmlUrlResolver());
}
public void Load(XPathNavigator stylesheet, XmlResolver resolver) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
if (resolver == null) {
resolver = new XmlNullResolver();
}
Compile(stylesheet, resolver, /*evidence:*/null);
}
public void Load(string url) {
Load(url, new XmlUrlResolver());
}
public void Load(string url, XmlResolver resolver) {
XmlTextReaderImpl tr = new XmlTextReaderImpl(url); {
tr.XmlResolver = resolver;
}
Evidence evidence = XmlSecureResolver.CreateEvidenceForUrl(tr.BaseURI); // We should ask BaseURI before we start reading because it's changing with each node
if (resolver == null) {
resolver = new XmlNullResolver();
}
Compile(Compiler.LoadDocument(tr).CreateNavigator(), resolver, evidence);
}
public void Load(IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(stylesheet.CreateNavigator(), resolver, evidence);
}
public void Load(XmlReader stylesheet, XmlResolver resolver, Evidence evidence) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
Load(new XPathDocument(stylesheet, XmlSpace.Preserve), resolver, evidence);
}
public void Load(XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence) {
if (stylesheet == null) {
throw new ArgumentNullException("stylesheet");
}
if (resolver == null) {
resolver = new XmlNullResolver();
}
if (evidence == null) {
evidence = new Evidence();
}
else {
new SecurityPermission(SecurityPermissionFlag.ControlEvidence).Demand();
}
Compile(stylesheet, resolver, evidence);
}
// ------------------------------------ Transform() ------------------------------------ //
private void CheckCommand() {
if (_CompiledStylesheet == null) {
throw new InvalidOperationException(Res.GetString(Res.Xslt_NoStylesheetLoaded));
}
}
public XmlReader Transform(XPathNavigator input, XsltArgumentList args, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
return processor.StartReader();
}
public XmlReader Transform(XPathNavigator input, XsltArgumentList args) {
return Transform(input, args, _XmlResolver);
}
public void Transform(XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public void Transform(XPathNavigator input, XsltArgumentList args, XmlWriter output) {
Transform(input, args, output, _XmlResolver);
}
public void Transform(XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public void Transform(XPathNavigator input, XsltArgumentList args, Stream output) {
Transform(input, args, output, _XmlResolver);
}
public void Transform(XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver) {
CheckCommand();
Processor processor = new Processor(input, args, resolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public void Transform(XPathNavigator input, XsltArgumentList args, TextWriter output) {
CheckCommand();
Processor processor = new Processor(input, args, _XmlResolver, _CompiledStylesheet, _QueryStore, _RootAction, debugger);
processor.Execute(output);
}
public XmlReader Transform(IXPathNavigable input, XsltArgumentList args, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
return Transform(input.CreateNavigator(), args, resolver);
}
public XmlReader Transform(IXPathNavigable input, XsltArgumentList args) {
if (input == null) {
throw new ArgumentNullException("input");
}
return Transform(input.CreateNavigator(), args, _XmlResolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, resolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, TextWriter output) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, _XmlResolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, resolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, Stream output) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, _XmlResolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, resolver);
}
public void Transform(IXPathNavigable input, XsltArgumentList args, XmlWriter output) {
if (input == null) {
throw new ArgumentNullException("input");
}
Transform(input.CreateNavigator(), args, output, _XmlResolver);
}
public void Transform(String inputfile, String outputfile, XmlResolver resolver) {
FileStream fs = null;
try {
// We should read doc before creating output file in case they are the same
XPathDocument doc = new XPathDocument(inputfile);
fs = new FileStream(outputfile, FileMode.Create, FileAccess.ReadWrite);
Transform(doc, /*args:*/null, fs, resolver);
}
finally {
if (fs != null) {
fs.Close();
}
}
}
public void Transform(String inputfile, String outputfile) {
Transform(inputfile, outputfile, _XmlResolver);
}
// Implementation
private void Compile(XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence) {
Debug.Assert(stylesheet != null);
Debug.Assert(resolver != null);
Compiler compiler = (Debugger == null) ? new Compiler() : new DbgCompiler(this.Debugger);
NavigatorInput input = new NavigatorInput(stylesheet);
compiler.Compile(input, resolver, evidence);
Debug.Assert(compiler.CompiledStylesheet != null);
Debug.Assert(compiler.QueryStore != null);
Debug.Assert(compiler.QueryStore != null);
_CompiledStylesheet = compiler.CompiledStylesheet;
_QueryStore = compiler.QueryStore;
_RootAction = compiler.RootAction;
}
internal IXsltDebugger Debugger {
get { return this.debugger; }
}
#if false
internal XslTransform(IXsltDebugger debugger) {
this.debugger = debugger;
}
#endif
internal XslTransform(object debugger) {
if (debugger != null) {
this.debugger = new DebuggerAddapter(debugger);
}
}
private class DebuggerAddapter : IXsltDebugger {
private object unknownDebugger;
private MethodInfo getBltIn;
private MethodInfo onCompile;
private MethodInfo onExecute;
public DebuggerAddapter(object unknownDebugger) {
this.unknownDebugger = unknownDebugger;
BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static;
Type unknownType = unknownDebugger.GetType();
getBltIn = unknownType.GetMethod("GetBuiltInTemplatesUri", flags);
onCompile = unknownType.GetMethod("OnInstructionCompile" , flags);
onExecute = unknownType.GetMethod("OnInstructionExecute" , flags);
}
// ------------------ IXsltDebugger ---------------
public string GetBuiltInTemplatesUri() {
if (getBltIn == null) {
return null;
}
return (string) getBltIn.Invoke(unknownDebugger, new object[] {});
}
public void OnInstructionCompile(XPathNavigator styleSheetNavigator) {
if (onCompile != null) {
onCompile.Invoke(unknownDebugger, new object[] { styleSheetNavigator });
}
}
public void OnInstructionExecute(IXsltProcessor xsltProcessor) {
if (onExecute != null) {
onExecute.Invoke(unknownDebugger, new object[] { xsltProcessor });
}
}
}
}
#endif // ! HIDE_XSL
}
// 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
- HwndHostAutomationPeer.cs
- StringAttributeCollection.cs
- PositiveTimeSpanValidatorAttribute.cs
- WorkflowInstanceProxy.cs
- Vector3DKeyFrameCollection.cs
- XmlCDATASection.cs
- ILGenerator.cs
- XmlSchemaException.cs
- DrawingBrush.cs
- EmbeddedMailObjectsCollection.cs
- SettingsPropertyIsReadOnlyException.cs
- EntityReference.cs
- DoubleStorage.cs
- ListViewDeleteEventArgs.cs
- XmlSchemaSimpleTypeRestriction.cs
- AsyncOperationManager.cs
- PerfProviderCollection.cs
- SourceItem.cs
- NameSpaceExtractor.cs
- UnicodeEncoding.cs
- EntityViewGenerationConstants.cs
- SplitterPanel.cs
- XmlNotation.cs
- WebPartConnectVerb.cs
- OperationContractGenerationContext.cs
- Parameter.cs
- FontSource.cs
- IndicCharClassifier.cs
- IndentedWriter.cs
- PkcsMisc.cs
- InternalEnumValidator.cs
- ReceiveCompletedEventArgs.cs
- dataprotectionpermissionattribute.cs
- SortQuery.cs
- DataSourceXmlTextReader.cs
- SQLResource.cs
- HScrollBar.cs
- CallSiteBinder.cs
- IconHelper.cs
- TrustLevelCollection.cs
- AddInController.cs
- KeyedCollection.cs
- SetState.cs
- TextBoxBase.cs
- SqlCacheDependencyDatabaseCollection.cs
- SecureStringHasher.cs
- SHA1Cng.cs
- precedingquery.cs
- __Filters.cs
- DateTimeOffsetAdapter.cs
- SingleSelectRootGridEntry.cs
- FileChangesMonitor.cs
- Timer.cs
- DocumentViewer.cs
- DiscardableAttribute.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- TypeSystem.cs
- InkCanvasAutomationPeer.cs
- ButtonAutomationPeer.cs
- ContextMenuStripGroup.cs
- InternalConfigHost.cs
- DependencyProperty.cs
- Operators.cs
- SqlConnectionPoolProviderInfo.cs
- DataControlField.cs
- SiteMembershipCondition.cs
- HtmlInputPassword.cs
- SchemaTypeEmitter.cs
- FormatterServicesNoSerializableCheck.cs
- UniqueConstraint.cs
- TraceHandlerErrorFormatter.cs
- GridViewRow.cs
- HtmlTitle.cs
- Utils.cs
- CatalogPart.cs
- HandlerBase.cs
- EventTask.cs
- HostedElements.cs
- MoveSizeWinEventHandler.cs
- manifestimages.cs
- EmptyQuery.cs
- PageVisual.cs
- PointF.cs
- UnsafeNativeMethodsCLR.cs
- ElementAtQueryOperator.cs
- TabItemWrapperAutomationPeer.cs
- RectConverter.cs
- DateTimeUtil.cs
- WindowsListViewItemCheckBox.cs
- ImageBrush.cs
- DataGridViewComboBoxColumn.cs
- ProjectionPruner.cs
- DesignerTransaction.cs
- CultureInfoConverter.cs
- PropertyOverridesDialog.cs
- MergeFailedEvent.cs
- WindowsImpersonationContext.cs
- CreateUserWizard.cs
- HorizontalAlignConverter.cs
- X509Certificate2Collection.cs