1 //------------------------------------------------------------------------------
2 // <copyright file="XsltArgumentList.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
8 using System.Collections;
9 using System.Security.Permissions;
11 namespace System.Xml.Xsl {
13 public abstract class XsltMessageEncounteredEventArgs : EventArgs {
14 public abstract string Message { get; }
17 public delegate void XsltMessageEncounteredEventHandler(object sender, XsltMessageEncounteredEventArgs e);
19 public class XsltArgumentList {
20 private Hashtable parameters = new Hashtable();
21 private Hashtable extensions = new Hashtable();
23 // Used for reporting xsl:message's during execution
24 internal XsltMessageEncounteredEventHandler xsltMessageEncountered = null;
26 public XsltArgumentList() {}
28 public object GetParam(string name, string namespaceUri) {
29 return this.parameters[new XmlQualifiedName(name, namespaceUri)];
32 public object GetExtensionObject(string namespaceUri) {
33 return this.extensions[namespaceUri];
36 public void AddParam(string name, string namespaceUri, object parameter) {
37 CheckArgumentNull(name , "name" );
38 CheckArgumentNull(namespaceUri, "namespaceUri");
39 CheckArgumentNull(parameter , "parameter" );
41 XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri);
43 this.parameters.Add(qname, parameter);
46 public void AddExtensionObject(string namespaceUri, object extension) {
47 CheckArgumentNull(namespaceUri, "namespaceUri");
48 CheckArgumentNull(extension , "extension" );
49 this.extensions.Add(namespaceUri, extension);
52 public object RemoveParam(string name, string namespaceUri) {
53 XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri);
54 object parameter = this.parameters[qname];
55 this.parameters.Remove(qname);
59 public object RemoveExtensionObject(string namespaceUri) {
60 object extension = this.extensions[namespaceUri];
61 this.extensions.Remove(namespaceUri);
65 public event XsltMessageEncounteredEventHandler XsltMessageEncountered {
67 xsltMessageEncountered += value;
70 xsltMessageEncountered -= value;
75 this.parameters.Clear();
76 this.extensions.Clear();
77 xsltMessageEncountered = null;
80 private static void CheckArgumentNull(object param, string paramName) {
82 throw new ArgumentNullException(paramName);