Pass parameter to XSLT stylesheet

23,522

Here is my XSLT:

<xsl:template match="/">     
  <xsl:param name="processingId"></xsl:param>     
  ..HTML..     
  <xsl:value-of select="$processingId"/> 

Am I missing something?

Yes, you are missing the fact that the invoker of an XSLT transformation can set the values of global-level parameters -- not the values of template-level parameters.

Therefore, the code must be:

 <xsl:param name="processingId"/>     

 <xsl:template match="/">     
   ..HTML..     
   <xsl:value-of select="$processingId"/> 
   <!-- Possibly other processing here  -->
 </xsl:template>
Share:
23,522
coson
Author by

coson

Updated on June 06, 2020

Comments

  • coson
    coson almost 4 years

    I'm trying to pass a couple of parameters to an XSLT style sheet. I have followed the example: Passing parameters to XSLT Stylesheet via .NET.

    But my transformed page is not correctly displaying the value.

    Here is my C# code. I had to add a custom function to perform some arithmetic because Visual Studio 2010 doesn't use XSLT 2.0.

      var args = new XsltArgumentList();
      args.AddExtensionObject("urn:XslFunctionExtensions", new XslFunctionExtensions());
      args.AddParam("processingId", string.Empty, processingId);
    
      var myXPathDoc = new XPathDocument(claimDataStream);
      var xslCompiledTransformation = new XslCompiledTransform(true);
    
      // XSLT File
      xslCompiledTransformation.Load(xmlReader);
    
      // HTML File
      using (var xmlTextWriter = new XmlTextWriter(outputFile, null))
      {
          xslCompiledTransformation.Transform(myXPathDoc, args, xmlTextWriter);
      }
    

    Here is my XSLT:

        <xsl:template match="/">
        <xsl:param name="processingId"></xsl:param>
        ..HTML..
        <xsl:value-of select="$processingId"/>
    

    Am I missing something?