je suis à la recherche d'un parseur XSLT Perl qui soit :
* correctement performant en termes de rapidité
* ne nécessite pas l'installation de logiciels annexes trop complexes.
Merci de votre aide en ces temps de grosse chaleur
--
Paul
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Klaus
paul POULAIN wrote:
Bonjour,
je suis à la recherche d'un parseur XSLT Perl qui soit : * correctement performant en termes de rapidité * ne nécessite pas l'installation de logiciels annexes trop complexes.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode "transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit :
* correctement performant en termes de rapidité
* ne nécessite pas l'installation de logiciels annexes trop complexes.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode
"transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit : * correctement performant en termes de rapidité * ne nécessite pas l'installation de logiciels annexes trop complexes.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode "transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit : * correctement performant en termes de rapidité * ne nécessite pas l'installation de logiciels annexes trop complexes.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode "transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit :
* correctement performant en termes de rapidité
* ne nécessite pas l'installation de logiciels annexes trop complexes.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode
"transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit : * correctement performant en termes de rapidité * ne nécessite pas l'installation de logiciels annexes trop complexes.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode "transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit : * correctement performant en termes de rapidité * ne nécessite pas l'installation de logiciels annexes trop complexe s.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode "transformNodeToObject" de MSXML (accessible par Win32::OLE).
Il existe aussi "XML::LibXslt" sur CPAN, voir http://tinyurl.co.uk/1tx5 Ils disent que c'est très rapide.
Je n'ai jamais réussi à installer "XML::LibXslt" chez moi sur Windows XP, mais peut-être ça marche sur ton système ?
paul POULAIN wrote:
Klaus wrote:
paul POULAIN wrote:
Bonjour,
je suis à la recherche d'un parseur XSLT Perl qui soit :
* correctement performant en termes de rapidité
* ne nécessite pas l'installation de logiciels annexes trop complexe s.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode
"transformNodeToObject" de MSXML (accessible par Win32::OLE).
je suis à la recherche d'un parseur XSLT Perl qui soit : * correctement performant en termes de rapidité * ne nécessite pas l'installation de logiciels annexes trop complexe s.
Avec Activestate Perl v5.8.8 sous Windows XP, j'utilise la méthode "transformNodeToObject" de MSXML (accessible par Win32::OLE).
La bibliothèque 'libxml2' elle-même existe pour Windows. Mais je ne sais pas si les modules Perl existent en PPM.
La version 1.58 est disponible sur le dépot ppm de l'université de Winnipeg :
http://cpan.uwinnipeg.ca/module/XML::LibXSLT
HTH
-- J-L.M. http://www.bribes.org/perl
nadjia
salutation:
Tout d'abord je me présente: je suis étudiante en informatique je suis en ce moment en préparation de mon projet de fin d'étude , l'objectif global du projet est de faire une translation entre deux logiciels , bon bref j'ai réaliser cette translation à l'aide de script "xslt" que je compile à l'aide de la commande "xsltproc" sous linux , et ça étais mieux de l'interpeler à l'aide de scripts PERL/CGI :
main1.cgi:
#!/usr/bin/perl
printf STDOUT "Content-type: text/htmlnn"; printf STDOUT "<HTML><HEAD>"; printf STDOUT "<TITLE> Le module de translation </TITLE>"; printf STDOUT "</HEAD>";
$buffer=$ENV{"QUERY_STRING"}; # onfiltered=value local(@champs) = split(/&/, $buffer); local($donnees) = ""; # recuperation et mise en forme des donnees # onfiltered=value foreach $i (0 .. $#champs) { # On separe chaque champ en une cle et sa valeur ($key, $val) = split(/=/,$champs[$i],2); #decode les valeurs $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; #if ( $i == 0 ){my $xmlfile = $val }; #if ( $i == 1 ){my $resultat = $val }; @ARGV==$champs[$i]; } system("/usr/bin/perl perl1.pl $xmlfile $resultat"); printf STDOUT "Content-type: text/htmlnn"; printf STDOUT "<HTML><HEAD>"; printf STDOUT "<TITLE> Le module de translation </TITLE>"; printf STDOUT "</HEAD>"; printf STDOUT "
perl1.pl:
usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my ($xmlfile,$resultat) = @ARGV; my $xslfile="/var/www/cgi-bin/essegroup22.xsl"; #my $xmlfile=" /home/nadjia/Desktop/configuration.fwb"; my $sortie = qx(/usr/bin/xsltproc $xslfile $xmlfile ); #my $y='>> /home/nadjia/Desktop/ktttttttttt.xml'; open ( MON_XML, $resultat ); { print MON_XML "$sortie";} close (MON_XML);
mon problème maintenant c'est que je n'arrive pas à recuperer à la fois les paramètres $xmlsource et $resultat passés en url et les utiliser lors de l'appel du script "perl1.pl" à l'aide de la commande :system("/usr/bin/perl perl1.pl $xmlfile $resultat")
Je vous remerci d'avance ,
cordialement Nadjia
salutation:
Tout d'abord je me présente:
je suis étudiante en informatique je suis en ce moment en
préparation de mon projet de fin d'étude , l'objectif global du
projet est de faire une translation entre deux logiciels , bon bref
j'ai réaliser cette translation à l'aide de script "xslt" que je
compile à l'aide de la commande "xsltproc" sous linux , et ça étais
mieux de l'interpeler à l'aide de scripts PERL/CGI :
main1.cgi:
#!/usr/bin/perl
printf STDOUT "Content-type: text/htmlnn";
printf STDOUT "<HTML><HEAD>";
printf STDOUT "<TITLE> Le module de translation </TITLE>";
printf STDOUT "</HEAD>";
$buffer=$ENV{"QUERY_STRING"};
# onfiltered=value
local(@champs) = split(/&/, $buffer);
local($donnees) = "";
# recuperation et mise en forme des donnees
# onfiltered=value
foreach $i (0 .. $#champs)
{
# On separe chaque champ en une cle et sa valeur
($key, $val) = split(/=/,$champs[$i],2);
#decode les valeurs
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
#if ( $i == 0 ){my $xmlfile = $val };
#if ( $i == 1 ){my $resultat = $val };
@ARGV==$champs[$i];
}
system("/usr/bin/perl perl1.pl $xmlfile $resultat");
printf STDOUT "Content-type: text/htmlnn";
printf STDOUT "<HTML><HEAD>";
printf STDOUT "<TITLE> Le module de translation </TITLE>";
printf STDOUT "</HEAD>";
printf STDOUT "
perl1.pl:
usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my ($xmlfile,$resultat) = @ARGV;
my $xslfile="/var/www/cgi-bin/essegroup22.xsl";
#my $xmlfile=" /home/nadjia/Desktop/configuration.fwb";
my $sortie = qx(/usr/bin/xsltproc $xslfile $xmlfile );
#my $y='>> /home/nadjia/Desktop/ktttttttttt.xml';
open ( MON_XML, $resultat );
{
print MON_XML "$sortie";}
close (MON_XML);
mon problème maintenant c'est que je n'arrive pas à recuperer à la
fois les paramètres $xmlsource et $resultat passés en url et les
utiliser lors de l'appel du script "perl1.pl" à l'aide de la commande
:system("/usr/bin/perl perl1.pl $xmlfile $resultat")
Tout d'abord je me présente: je suis étudiante en informatique je suis en ce moment en préparation de mon projet de fin d'étude , l'objectif global du projet est de faire une translation entre deux logiciels , bon bref j'ai réaliser cette translation à l'aide de script "xslt" que je compile à l'aide de la commande "xsltproc" sous linux , et ça étais mieux de l'interpeler à l'aide de scripts PERL/CGI :
main1.cgi:
#!/usr/bin/perl
printf STDOUT "Content-type: text/htmlnn"; printf STDOUT "<HTML><HEAD>"; printf STDOUT "<TITLE> Le module de translation </TITLE>"; printf STDOUT "</HEAD>";
$buffer=$ENV{"QUERY_STRING"}; # onfiltered=value local(@champs) = split(/&/, $buffer); local($donnees) = ""; # recuperation et mise en forme des donnees # onfiltered=value foreach $i (0 .. $#champs) { # On separe chaque champ en une cle et sa valeur ($key, $val) = split(/=/,$champs[$i],2); #decode les valeurs $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; #if ( $i == 0 ){my $xmlfile = $val }; #if ( $i == 1 ){my $resultat = $val }; @ARGV==$champs[$i]; } system("/usr/bin/perl perl1.pl $xmlfile $resultat"); printf STDOUT "Content-type: text/htmlnn"; printf STDOUT "<HTML><HEAD>"; printf STDOUT "<TITLE> Le module de translation </TITLE>"; printf STDOUT "</HEAD>"; printf STDOUT "
perl1.pl:
usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); my ($xmlfile,$resultat) = @ARGV; my $xslfile="/var/www/cgi-bin/essegroup22.xsl"; #my $xmlfile=" /home/nadjia/Desktop/configuration.fwb"; my $sortie = qx(/usr/bin/xsltproc $xslfile $xmlfile ); #my $y='>> /home/nadjia/Desktop/ktttttttttt.xml'; open ( MON_XML, $resultat ); { print MON_XML "$sortie";} close (MON_XML);
mon problème maintenant c'est que je n'arrive pas à recuperer à la fois les paramètres $xmlsource et $resultat passés en url et les utiliser lors de l'appel du script "perl1.pl" à l'aide de la commande :system("/usr/bin/perl perl1.pl $xmlfile $resultat")
Aussi, je me demande si le "STDOUT" est vraiment nécessaire, normalement il n'y a pas de besoin de préciser "STDOUT", un simple print "..." suffit.
Autrement, pour fair du CGI (écrire les balises "<HTML>", "<HEAD>", etc...), il vaut mieux utiliser le module CGI, comme par exemple dans le programme suivant:
=========== use CGI qw(:standard); print header; print start_html("Hello World"); ===========
On trouve des références sur la documentation CGI dans http://perl.enstimac.fr/DocFr/perlfaq2.html
perl1.pl:
usr/bin/perl -w
il manque le "#!", il faut plutôt dire: #!/usr/bin/perl -w
mais encore mieux, remplacer le "#!/usr/bin/perl -w" par: use warnings;
use strict; très bien
use CGI::Carp qw(fatalsToBrowser); Ce programme "perl1.pl" ne fait pas pas de CGI, mais le module
"CGI::Carp" est utile uniquement pour CGI, donc le module est inutile dans ce programme. (pour rappel: l'autre programme "main1.cgi" fait du CGI, mais bizarrement il n'y avait pas de "use CGI..." dans "main1.cgi")
open ( MON_XML, $resultat );
1. il faut toujours tester si le open a réussi, et en cas d'échec préciser le problème dans la fonction "die()" avec la variable "$!". 2. il est conseillé, dans la fonction open(), de remplacer les variables de paquage (comme, par exemple "MON_XML") par des variables lexicales (comme par exemple "my $mon_xml"). 3. il est conseillé d'utiliser la fonction "open()" avec 3 (et non pas 2) paramètres.
donc: open my $mon_xml, '<', $resultat or die "Erreur lecture '$resultat' ($!)";
print MON_XML "$sortie";}
Vous avez placé la variable $sortie entre guillemets, sans autres caractères. Dans ce cas, Il vaut mieux utiliser la variable sans guillemets.
En quoi est-ce un problème de toujours placer ``$vars'' entre guillemets ?
Le problème est que ces guillemets forcent la conversion en chaîne, imposant aux nombres et aux références de devenir des chaînes, même lorsqu'on ne le souhaite pas. Pensez-y de cette façon : l'expansion des guillemets est utilisée pour produire de nouvelles chaînes. Si vous avez déjà une chaîne, pourquoi en vouloir plus ?
Aussi, je me demande si le "STDOUT" est vraiment nécessaire,
normalement il n'y a pas de besoin de préciser "STDOUT", un simple
print "..." suffit.
Autrement, pour fair du CGI (écrire les balises "<HTML>", "<HEAD>",
etc...), il vaut mieux utiliser le module CGI, comme par exemple dans
le programme suivant:
===========
use CGI qw(:standard);
print header;
print start_html("Hello World");
===========
On trouve des références sur la documentation CGI dans
http://perl.enstimac.fr/DocFr/perlfaq2.html
perl1.pl:
usr/bin/perl -w
il manque le "#!", il faut plutôt dire:
#!/usr/bin/perl -w
mais encore mieux, remplacer le "#!/usr/bin/perl -w" par:
use warnings;
use strict;
très bien
use CGI::Carp qw(fatalsToBrowser);
Ce programme "perl1.pl" ne fait pas pas de CGI, mais le module
"CGI::Carp" est utile uniquement pour CGI, donc le module est inutile
dans ce programme.
(pour rappel: l'autre programme "main1.cgi" fait du CGI, mais
bizarrement il n'y avait pas de "use CGI..." dans "main1.cgi")
open ( MON_XML, $resultat );
1. il faut toujours tester si le open a réussi, et en cas d'échec
préciser le problème dans la fonction "die()" avec la variable "$!".
2. il est conseillé, dans la fonction open(), de remplacer les
variables de paquage (comme, par exemple "MON_XML") par des variables
lexicales (comme par exemple "my $mon_xml").
3. il est conseillé d'utiliser la fonction "open()" avec 3 (et non pas
2) paramètres.
donc:
open my $mon_xml, '<', $resultat or die "Erreur lecture '$resultat'
($!)";
print MON_XML "$sortie";}
Vous avez placé la variable $sortie entre guillemets, sans autres
caractères. Dans ce cas, Il vaut mieux utiliser la variable sans
guillemets.
En quoi est-ce un problème de toujours placer ``$vars'' entre
guillemets ?
Le problème est que ces guillemets forcent la conversion en chaîne,
imposant aux nombres et aux références de devenir des chaînes, même
lorsqu'on ne le souhaite pas. Pensez-y de cette façon : l'expansion
des guillemets est utilisée pour produire de nouvelles chaînes. Si
vous avez déjà une chaîne, pourquoi en vouloir plus ?
Aussi, je me demande si le "STDOUT" est vraiment nécessaire, normalement il n'y a pas de besoin de préciser "STDOUT", un simple print "..." suffit.
Autrement, pour fair du CGI (écrire les balises "<HTML>", "<HEAD>", etc...), il vaut mieux utiliser le module CGI, comme par exemple dans le programme suivant:
=========== use CGI qw(:standard); print header; print start_html("Hello World"); ===========
On trouve des références sur la documentation CGI dans http://perl.enstimac.fr/DocFr/perlfaq2.html
perl1.pl:
usr/bin/perl -w
il manque le "#!", il faut plutôt dire: #!/usr/bin/perl -w
mais encore mieux, remplacer le "#!/usr/bin/perl -w" par: use warnings;
use strict; très bien
use CGI::Carp qw(fatalsToBrowser); Ce programme "perl1.pl" ne fait pas pas de CGI, mais le module
"CGI::Carp" est utile uniquement pour CGI, donc le module est inutile dans ce programme. (pour rappel: l'autre programme "main1.cgi" fait du CGI, mais bizarrement il n'y avait pas de "use CGI..." dans "main1.cgi")
open ( MON_XML, $resultat );
1. il faut toujours tester si le open a réussi, et en cas d'échec préciser le problème dans la fonction "die()" avec la variable "$!". 2. il est conseillé, dans la fonction open(), de remplacer les variables de paquage (comme, par exemple "MON_XML") par des variables lexicales (comme par exemple "my $mon_xml"). 3. il est conseillé d'utiliser la fonction "open()" avec 3 (et non pas 2) paramètres.
donc: open my $mon_xml, '<', $resultat or die "Erreur lecture '$resultat' ($!)";
print MON_XML "$sortie";}
Vous avez placé la variable $sortie entre guillemets, sans autres caractères. Dans ce cas, Il vaut mieux utiliser la variable sans guillemets.
En quoi est-ce un problème de toujours placer ``$vars'' entre guillemets ?
Le problème est que ces guillemets forcent la conversion en chaîne, imposant aux nombres et aux références de devenir des chaînes, même lorsqu'on ne le souhaite pas. Pensez-y de cette façon : l'expansion des guillemets est utilisée pour produire de nouvelles chaînes. Si vous avez déjà une chaîne, pourquoi en vouloir plus ?