4

is it possible to use EXSLT functions within Visual Studio? I write and debug my xslt scripts in VS. What I have to do to be able to use e.g. date:add() function? What a very simple script should look like? Thanks a lot, petr

pnuts
  • 58,317
  • 11
  • 87
  • 139
Petr
  • 81
  • 1
  • 2
  • 7

2 Answers2

2

The latest three versions of Visual Studio (2010, 2008 and 2005) all use the .NET XslCompiledTransform XSLT processor. XslCompiledTransform does not implement any EXSLT function except common:node-set() -- so here you are out of luck.

I don't think there is an easy and natural way to use other XSLT processors in Visual Studio, and even there could be some trick to do this, one wouldn't be able to do XSLT debugging in this case.

Finally, EXSLT usually provides a limited XSLT implementation of some of the EXSLT functions. This is much less powerful and convenient, of course, but you could go that route.

My personal recommendation is to start using XSLT 2.0, which is so much more powerful than XSLT 1.0 that there is very little need to use EXSLT in an XSLT 2.0 application.

Of course, there is no support for XSLT 2.0 in VS, but there are other excellent IDEs such as oXygen, that among other things provide good XSLT 2.0 and XQuery debuggers.

Update: You can use a 3rd party implementation of EXSLT for XslCompiledTransform: the MVP - XML project's EXSLT .NET module.

Dimitre Novatchev
  • 240,661
  • 26
  • 293
  • 431
  • Thanks for answer! I'd love to use XSLT 2.0, but my client forces me to use only Microsoft technologies. – Petr Apr 01 '11 at 12:45
  • @Peter: You are welcome. Please, see the update to my answer. This work was done 6-7 years ago and I had completely forgotten it, even though I wrote the "sets" functions implementation ... Of course, VS itself is incognizant of EXSLT and will not provide intellisense for these functions. – Dimitre Novatchev Apr 01 '11 at 12:53
  • I actually am using EXSLT.NET, I was just wondering if it is possible to use it in VS XSLT debugger. Thanks for info it is not. – Petr Apr 01 '11 at 15:31
1

You can also use the msxml:script tag to include your own functions in the XSLT. This works fine for simple functions, and can also be debugged in VS2005 and above, e.g.

<msxml:script implements-prefix="user">
  <![CDATA[ 
  function toUpperCase(str)
  {
    return str.toUpperCase();
  }
  ]]>
</msxml:script>
Paul Russell
  • 545
  • 3
  • 10