Search code examples
debuggingvisual-studio-2010xslt-toolsxslt

Passing arguments to Visual Studio's XSLT debugger


I'm debugging a transform with Visual Studio. The application that uses the transform normally also passes in some parameters:

XslTransform xslTransform = new XslTransform();
xslTransform.Load(myXslt);
XsltArgumentList transformArgumentList = new XsltArgumentList();
transformArgumentList.AddParam(paramName1, String.Empty, paramValue1); // this
transformArgumentList.AddParam(paramName2, String.Empty, paramValue2); // and this
xslTransform.Transform(inputStream, transformArgumentList, outputStream);

How can I set the parameters when debugging?


Solution

  • How can I set the parameters when debugging?

    You should use the following XslCompiledTransform constructor:

    public XslCompiledTransform(
        bool enableDebug
    )
    

    with the enableDebug argument set to true.

    Then you can start debugging and the debugger will stop on breakpoints set in your XSLT transformation.

    Here is an example:

    // Enable XSLT debugging.
    XslCompiledTransform xslt = new XslCompiledTransform(true);
    
    // Load the style sheet.
    xslt.Load("MyTransformation.xsl");
    
    // Create the writer.
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent=true;
    XmlWriter writer = XmlWriter.Create("output.xml", settings);
    
    // Execute the transformation.
    xslt.Transform("books.xml", writer);
    writer.Close();
    

    Of course, if you are lazy, you may just hardcode the values of the parameters in your XSLT stylesheet:

    <xsl:param name="param1" select="SomeValue1"/>
    <xsl:param name="param2" select="SomeValue2"/>