<Type Name="XsltArgumentList" FullName="System.Xml.Xsl.XsltArgumentList">
  <TypeSignature Maintainer="auto" Language="C#" Value="public class XsltArgumentList" />
  <AssemblyInfo>
    <AssemblyName>System.Xml</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>To be added</ThreadSafetyStatement>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>This class is used to customized the behavior of the <see cref="System.Xml.Xsl.XslTransform" /> class through stylesheet parameters and extension objects.</summary>
    <remarks>This type is used in the various overloads of the Transform method of the <see cref="System.Xml.Xsl.XslTransform" /> class that accept an XsltArgumentList.</remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public XsltArgumentList ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Creates a new XsltArgumentList with no extension objects or stylesheet parameters set.</summary>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="AddExtensionObject">
      <MemberSignature Language="C#" Value="public void AddExtensionObject (string namespaceUri, object extension);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="namespaceUri" Type="System.String" />
        <Parameter Name="extension" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="namespaceUri">The URI of the namespace to associate with the extension object.</param>
        <param name="extension">The extension object.</param>
        <summary>Associates an extension object with a namespace to provide added functionality to XPath expressions in the <see cref="T:System.Xml.Xsl.XslTransform" />.</summary>
        <remarks>
          <para>The static and instance methods of <paramref name="extension" /> are made available to XSLT stylesheets via XPath function calls.</para>
          <para>The arguments and return type of extension methods can be the basic numeric types, strings, <see cref="T:System.Xml.XPath.XPathNavigator" /> objects, and <see cref="T:System.Xml.XPath.XPathNodeIterator" /> objects.  Using XPathNavigators and XPathNodeIterators allows the extension method to receive and pass back node sets.</para>
          <para>Only one extension object may be associated with any namespace, and the <c>http://www.w3.org/1999/XSL/Transform</c> namespace may not be used.</para>
          <example>
            <para>The following example makes a string length function available to an XSLT stylesheet.</para>
            <code lang="C#">class MyExtObject {
	public int GetStringLength(string s) {
		return s.Length;
	}
}

(...elsewhere...)

XsltArgumentList args = new XsltArgumentList();
args.AddExtensionObject("http://www.mydomain.com/mynamespace", new MyExtObject());
XmlReader result = stylesheet.Transform(doc, args);
  </code>
            <para>The stylesheet accesses this function by declaring the namespace and then using XPath:</para>
            <code lang="XML">&lt;template match="mynode" xmlns:ext="http://www.mydomain.com/mynamespace"&gt;
   &lt;xsl:value-of select="ext:GetStringLength('MyString')"/&gt;
&lt;/template&gt;</code>
          </example>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="AddParam">
      <MemberSignature Language="C#" Value="public void AddParam (string name, string namespaceUri, object parameter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="name" Type="System.String" />
        <Parameter Name="namespaceUri" Type="System.String" />
        <Parameter Name="parameter" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="name">The name of the variable.</param>
        <param name="namespaceUri">The namespace URI of the variable, or the empty string for variables not declared in a namespace.</param>
        <param name="parameter">The value to assign to the parameter.</param>
        <summary>Assigns a value to a stylesheet parameter.</summary>
        <remarks>
          <para>Stylesheet parameters refer to top-level xsl:param nodes outside of templates.  For instance:</para>
          <code lang="XML">&lt;xsl:stylesheet xmlns:mynamespace="http://www.mydomain.com"&gt;
	&lt;xsl:param name="arg1" select="'defaultValue'" /&gt;
	&lt;xsl:param name="mynamespace:nsarg1" /&gt;
&lt;/xsl:stylesheet&gt;</code>
          <para>To assign a value to the first parameter, use:</para>
          <code lang="C#">args.AddParam("arg1", "", "newvalue");</code>
          <para>To assign a value to the second parameter, use:</para>
          <code lang="C#">args.AddParam("nsarg1", "http://www.mydomain.com", "newvalue");</code>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Clear">
      <MemberSignature Language="C#" Value="public void Clear ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Clears the extension objects and parameters associated with this XsltArgumentList.</summary>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetExtensionObject">
      <MemberSignature Language="C#" Value="public object GetExtensionObject (string namespaceUri);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="namespaceUri" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="namespaceUri">The namespace URI for which to retrieve the extension object.</param>
        <summary>Retreives the extension object associated with the namespace URI.</summary>
        <returns>The object associated with the namespace, or <see langword="null" /> if no extension object was associated with the namespace.</returns>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetParam">
      <MemberSignature Language="C#" Value="public object GetParam (string name, string namespaceUri);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="name" Type="System.String" />
        <Parameter Name="namespaceUri" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="name">The name of the parameter.</param>
        <param name="namespaceUri">The namespace URI of the variable, or the empty string for variables not declared in a namespace.</param>
        <summary>Gets the value assigned to a stylesheet parameter.</summary>
        <returns>The value associated with the parameter, or <see langword="null" /> if no value is associated with the parameter.</returns>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="RemoveExtensionObject">
      <MemberSignature Language="C#" Value="public object RemoveExtensionObject (string namespaceUri);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="namespaceUri" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="namespaceUri">The namespace URI for which to remove the extension object.</param>
        <summary>Removes the extension object associated with a namespace.</summary>
        <returns>The object formerly associated with the namespace, or <see langword="null" /> if no extension object was associated with the namespace.</returns>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="RemoveParam">
      <MemberSignature Language="C#" Value="public object RemoveParam (string name, string namespaceUri);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="name" Type="System.String" />
        <Parameter Name="namespaceUri" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="name">The name of the variable.</param>
        <param name="namespaceUri">The namespace URI of the variable, or the empty string for variables not declared in a namespace.</param>
        <summary>Removes an assigned value to a stylesheet parameter.</summary>
        <returns>The value formerly associated with the parameter, or <see langword="null" /> if no value was associated with the parameter.</returns>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="XsltMessageEncountered">
      <MemberSignature Language="C#" Value="public event System.Xml.Xsl.XsltMessageEncounteredEventHandler XsltMessageEncountered;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>System.Xml.Xsl.XsltMessageEncounteredEventHandler</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
    </Member>
  </Members>
</Type>
