API support for debugging extension functions

  • Joseph Thomas-Kerr


    I use the saxon xslt engine in oxygen and do a lot of debugging with it. I am currently using the saxon:transform function to chain stylesheets together, and would love for oxygen to be able to step into a transform called in this manner. Unfortunately, on suggesting such a feature to syncroSoft, I was told

    "I am sorry, the Saxon engine does not offer a public API for knowing when extension functions are called in the stylesheet. Without such a public API it is impossible to step into the chained transforms."

    Is it possible to provide such an api so that oxygen can step into stylesheets called via saxon:transform?


    • Michael Kay

      Michael Kay - 2006-12-13

      There is in fact such a mechanism, and I believe Stylus Studio uses it. Saxon calls extension functions using a class called ExtensionFunctionCall, which you can subclass by tailoring the ExtensionFunctionFactory, which is accessible via the Configuration. In a subclass you can intercept the actual call of the underlying Java method.

      This only works for user-defined extension functions and for those Saxon-defined extension functions that use the standard call mechanism, but that list includes saxon:transform(). (It's not true of saxon:parse() and saxon:serialize(), because they need access to the static context, which isn't available to ordinary extension functions.)

      Of course oXygen may well feel that this is not a high-priority requirement, but it can be done if they choose to. I believe Stylus allows you to single-step from XSLT/XQuery debugging straight into the Java debugger when extension functions are invoked.


Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks