Share

FXSL xslt Functional Programming Library

File Release Notes and Changelog

Release Name: EXSLT for MSXML4 -- 1.2

Notes:
This can be downloaded from the project page of FXSL
(https://sourceforge.net/projects/fxsl) or directly from:

https://sourceforge.net/project/showfiles.php?group_id=53841&release_id=164017


The following modules/functions are implemented in this initial release:

  common:
           node-set()

  sets:
           intersection()
           difference()
           has-same-node()
           distinct()
           leading()
           trailing()

Below is the contents of the Readme.txt file:


              EXSLT support for MSXML4 (Exslt-Msxml4),
            by Dimitre Novatchev, dnovatchev@yahoo.com

Welcome to this implementation of EXSLT for MSXML4.

II. Installation.

Run Setup.exe.

The installation will create the folder:

          C:\Program Files\EXSLT for MSXML4\msEXSLT

This contains the following two files:

  1. exMsxsl.exe -- a version of the msxsl.exe command-line utility
     with added support for EXSLT

  2. EXSLTOK.dll -- the actual implementation of EXSLT for Msxml4



II. Using Exslt-Msxml4

 1. To use the EXSLT implementation from exMsxsl.exe, specify

   -u '4.0*ex' on the command line.

    An example of a complete command line is:

    exMsxsl my.xml my.xsl -o my.result -t -u '4.0*ex'


    I have added a separate "exMsxml4" engine to my Xselerator like this:

    Options --> Environment Options --> Transformation --> Add

    Executable: C:\Program Files\EXSLT for MSXML4\msEXSLT\exMsxsl.exe

    Parameters: %xml% %xsl% -o %out% -t -u '4.0*ex' %param[name="value"]%

    
    To do the same for XML-Spy:

    Tools --> Options --> XSL
    External XSL transformation program:
    C:\Program Files\EXSLT for MSXML4\msEXSLT\exMsxsl.exe %1 %3 -o %2 -u '4.0*ex'


    The same can be done with other popular XSLT IDEs -- when you find out how,
    please, let me know, so I can include this valuable info in the Readme.txt file.

    Once this new transformation engine is added, one can perform
    single-click transformations that use the EXSLT support for MSXML4.

    Or one could create a .bat file and use exMsxsl.exe from the DOS window.


 2. The other way to use the EXSLT implementation is programmatically.

    The easiest way to do it is just as using MSXML4 before, with the
    only difference that instead of creating an IXSLTemplate object with
    ProgID "Msxml2.XSLTemplate.4.0", one will now create an
    IEXSLTemplate object with ProgID "EXSLT.EXSLTemplate".

Two typical examples of using Exslt-Msxml4 programmatically are the
following:


  2.1 From VB

    Option Explicit

    Dim xslt As New EXSLTLib.EXSLTemplate

    Dim xsldoc As New MSXML2.FreeThreadedDOMDocument40
    Dim xmldoc As New MSXML2.FreeThreadedDOMDocument40
    Dim xslproc As MSXML2.IXSLProcessor

    xsldoc.Load "E:\xml\EXSLT\VB6\Tests\testExsltCommon.xsl"
    Set xslt.stylesheet = xsldoc.documentElement
    Set xslproc = xslt.createProcessor
    xmldoc.Load "E:\xml\EXSLT\VB6\Tests\testDistinct100.xml"
    xslproc.input = xmldoc

    xslproc.Transform

    MsgBox xslproc.output


  2.2 From JavaScript

 function transform()
 {
 var xslt = new ActiveXObject("EXSLT.EXSLTemplate");

 var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0");
 xslDoc.async = false;
        xslDoc.load("E:\\xml\\EXSLT\\VB6\\Tests\\testExsltCommon.xsl");

 xslt.stylesheet = xslDoc;

 var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
 xmlDoc.async = false;
 xmlDoc.load("E:\\xml\\EXSLT\\VB6\\Tests\\testDistinct100.xml");

 var xslProc;
 xslProc = xslt.createProcessor();
 xslProc.input = xmlDoc;
 xslProc.transform();
 alert(xslProc.output);
 }


III. Acknowledgements

  1. I would like to thank Jeni Tennison for her suggestions -- the current
     version benefited greatly from implementing them.

  2. exMsxml is an adaptation of the source code of the msxsl.exe
     command-line utility by Microsoft, as published at:
http://www.microsoft.com/downloads/details.aspx?FamilyId=2FB55371-C94E-4373-B0E9-DB4816552E41&displaylang=en

     I'd like to thank Andy Kimball -- the the developer of this utility, 
     which makes easy and convenient for everyone to perform XSLT transformations.
     While I learnt a lot from his nice programming style, any bugs and mistakes in
     exMsxsl are entirely mine.

     The last change in exMsxsl (2004/01) was making it able to work with very high-resolution
     timers (e.g. like in Dell Dimension 8300 with 3GHz CPU speed). The original msxsl.exe
     does not perform and display any timings if the timer frequency exceeds the 32-bit
     capacity. This was fixed in the Jan. 2004 version of exMsxsl.


Enjoy!

Dimitre Novatchev.






Changes: 11. Jan. 2004 The last change in exMsxsl (2004/01) was making it able to work with very high-resolution timers (e.g. like in Dell Dimension 8300 with 3GHz CPU speed). The original msxsl.exe does not perform and display any timings if the timer frequency exceeds the 32-bit capacity. This was fixed in the Jan. 2004 version of exMsxsl.