I am relatively new to the Tcl world, and I am having trouble with
this bizarre problem which googling doesn't yield any useful result.
*********************************************************************************************************************
What I'm using: ActiveState Tcl 8.3.4.2
*********************************************************************************************************************
What I need: Adding XSLT capabilities to my Tcl scripts , ActiveState
Tcl 8.3.4.2 includes the Tclxml and Tcldom packages, but not Tclxslt.
It is necessary for me to use ActiveState Tcl 8.3.4.2 because my
company requires it
*********************************************************************************************************************
What I tried to do: I downloaded the TclXML combo package from
http://tclxml.sourceforge.net/combo.html , which includes TclXML,
TclDOM and TclXSLT packages as of today. The instructions for
installation is as follow:
1. Download libxml2-2.6.20 and libxslt-1.1.14+ from the xmlsoft
website. Unpack and copy the win32 binaries for libxml2 and libxslt
into the Tcl bin directory, eg. C:\Tcl\bin.
--------------------------------------------------------------------------------------------------------------------------------------------------
I downloaded libxml 2-2.6.30 and libxslt-1.1.22, and extracted all the
contents to respective directories (C:\Tcl\bin, C:\Tcl\include, C:\Tcl
\lib)
2. remove the version 2.6 TclXML, TclDOM and TclXSLT packages from the
Tcl installation (eg. C:\Tcl\lib).
--------------------------------------------------------------------------------------------------------------------------------------------------
I removed tclxml2.0 and tcldom2.0 folders from C:\Tcl\lib
3. Unzip the contents of the combo download into the Tcl installation,
eg. C:\Tcl.
--------------------------------------------------------------------------------------------------------------------------------------------------
followed this direction exactly.
When I run my script - transform.tcl, it gives error on the first line
"package require dom 3.1", with the following error message:
couldn't load library "C:\Tcl\lib\Tcllibxml3.1\tcllibxml231.dll": this
library or a dependent library could not be found in library path
while executing
"load C:/Tcl/lib/Tcllibxml3.1/tcllibxml231.dll Tclxml_libxml2"
("package ifneeded" script)
invoked from within
"package require xml::libxml2"
("package ifneeded" script)
invoked from within
"package require dom 3.1"
(file "transform.tcl" line 1)
*********************************************************************************************************************
What I have done to try to fix this:
I used dependency walker on tcllibxml231.dll, and found out that it is
missing:
ICONV.DLL
TCLXML31.DLL
ZLIB1.DLL
DWMAPI.DLL
with Delay-load module warning on:
MPR.DLL
SHLWAPI.DLL
I found a TCLXML31.dll in the folder C:\Tcl\lib\Tclxml3.1\ , which was
copied over from the combo TCLXML combo file I downloaded, I also
downloaded ICONV.DLL and ZLIB1.DLL from http://www.dll-files.com/ ,
and extracted them to the "c:\windows\system\" directory (not
DWMAPI.DLL though). I tried to run the script, instead of giving me
error message, it crashes tclsh.
*********************************************************************************************************************
I am at loss right now, I can't get the XML / XDOM / XSLT to work in
ActiveState Tcl 8.3.4.2, and I can't upgrade it because it could break
other Tcl scripts that my company run on a daily basis. Any input
would be appreciated. Thanks in advance.
-Calvin
Are you sure that something would break?
There should be no backward incompatibilities between 8.3.x and 8.4.x or
even 8.5.x.
Could you find out what would cause something to break and post it?
--
+--------------------------------+---------------------------------------+
| Gerald W. Lester |
|"The man who fights for his ideals is the man who is alive." - Cervantes|
+------------------------------------------------------------------------+
We also had this problem with loading dom. Something in the paths
loading the dlls changed between 2.6 and 3.1. What worked for us was
to do package require xml first, that loads "something", and then the
package require dom worked.
Troy