Apr 13

Um mit Perl XSL-Transformationen durchführen zu können, wollte ich zunächst das nachfolgende einfache Beispiel aus dem CPAN-Archiv ausprobieren:

use XML::LibXSLT;
use XML::LibXML;

my $xslt = XML::LibXSLT->new();
my $source = XML::LibXML->load_xml(location => 'foo.xml');
my $style_doc = XML::LibXML->load_xml(location=>'bar.xsl', no_cdata=>1);
my $stylesheet = $xslt->parse_stylesheet($style_doc);
my $results = $stylesheet->transform($source);

print $stylesheet->output_as_bytes($results);

Jedoch bekam ich nur folgende Fehlermeldung:

Can't locate object method "load_xml" via package "XML::LibXML"

Die Suche bei Google ergab, das bei Ubuntu 9.10 nur XML::LibXML in der Version 1.68 in den Ubuntu-Quellen vorliegt, die Funktion „load_xml“ aber erst in Version 1.70 existiert. Somit blieb nur die Installation über das CPAN-Archiv mittels
perl -MCPAN -e shell .

Das Perl-Modul wurde aus dem CPAN-Archiv erfolgreich installiert, aber das obige Beispiel funktionierte immernoch nicht. Jetzt meldete sich das Perl-Modul XML::LibXSLT mit der Fehlermeldung, das dieses Modul in Version 1.68 auch das Perl-Modul XML::LibXML in Version 1.68 benötigt!
Okay also das Perl-Modul XML::LibXSLT auch in Version 1.70 aus dem CPAN-Archiv installieren. Der Versuch wurde jedoch leider mit folgender Fehlermeldung abgebrochen:

/usr/bin/ld: cannot find -lgdbm

Die Suche bei Google war diesmal nicht so erfolgreich, der einzige Hinweis war, das es wohl an der Library libgdbm.so liegt. Diese war bei mir jedoch bereits installiert und ein libgdbm-perl Paket in den Ubuntu-Quellen gab es nicht, nur Pakete für Ruby und Smalltalk. Jedoch gab es das Paket libgdbm-dev, welches ich installierte und mit somit zur Lösung des Problems führte.

Jetzt funktioniert obiges Beispiel fehlerfrei und ich kann mit dem ausprobieren loslegen! 🙂

Nachtrag:

Unter Debian waren zusätzlich zur Installation des Paketes libgdbm-dev noch die Pakete libxslt1-dev und libxml2-dev notwendig bevor(!) sich aus dem CPAN-Archiv die aktuellen
Perl-Module XML::LibXML und XML::LibXSLT installieren ließen.
Ohne die Installation dieser Entwicklerpakete meldete der Versuch der CPAN-Archiv Installation folgende Fehler:
looking for -lxml2... no
looking for -llibxml2... no
libxml2 not found

Tagged with:
preload preload preload