xml2multi.pl

#!/usr/bin/perl
use locale; #caracteres accentues
#perl ext2html-ext2xml.pl (pour obtenir des -3-balise.xml et des -c3-balise.xml)
#perl xml2multi.pl
#On obtient: 3 fichiers identiques avec le lien vers 3 feuilles de style différentes
print "Bienvenu(e) au programme qui permet de \n
faire des copies de vos fichiers .xml sous \n d'autres noms. \n";
print "Tapez a si il s'agit exactement des fichiers \n livres-un-3-balise.xml, livres-un-c3-balise.xml, \n culture-un-3-balise.xml et livres-un-c3-balise.xml \n";
print "Tapez t si vous voulez transformer des \n -3-balise.xml en -3-NA.xml, -3-NN.xml et -3-NPN.xml \n";
print "Tapez c si vous voulez transformer des \n -c3-balise.xml en -c3-NA.xml, -c3-NN.xml et -c3-NPN.xml \n";
print "Dans les trois premiers cas, on va aussi \n rajouter automatiquement l'adresse style-3-patron de la feuille de style correspondante. \n";
print "Tapez x si vous voulez transformer un .xml \n en trois -patron.xml et \n rajouter les \n feuilles de style nommees style-3-patron.xsl \n";
print "Sinon tapez q \n";
my $rep=<STDIN>;
chomp($rep);
##################################################
if ($rep=~/a/) {

system "#!/bin/bash
cp livres-un-3-balise.xml \.\/livres-un-3-NA.xml;
cp livres-un-3-balise.xml \.\/livres-un-3-NN.xml;
cp livres-un-3-balise.xml \.\/livres-un-3-NPN.xml;
cp culture-un-3-balise.xml \.\/culture-un-3-NA.xml;
cp culture-un-3-balise.xml \.\/culture-un-3-NN.xml;
cp culture-un-3-balise.xml \.\/culture-un-3-NPN.xml;
cp livres-un-c3-balise.xml \.\/livres-un-c3-NA.xml;
cp livres-un-c3-balise.xml \.\/livres-un-c3-NN.xml;
cp livres-un-c3-balise.xml \.\/livres-un-c3-NPN.xml;
cp culture-un-c3-balise.xml \.\/culture-un-c3-NA.xml;
cp culture-un-c3-balise.xml \.\/culture-un-c3-NN.xml;
cp culture-un-c3-balise.xml \.\/culture-un-c3-NPN.xml;

echo \"Attendez s'il vous plait...\";";

my $file01="livres-un-3-NA\.xml";
my $file02="livres-un-3-NN\.xml";
my $file03="livres-un-3-NPN\.xml";
my $file04="culture-un-3-NA\.xml";
my $file05="culture-un-3-NN\.xml";
my $file06="culture-un-3-NPN\.xml";
my $file07="livres-un-c3-NA\.xml";
my $file08="livres-un-c3-NN\.xml";
my $file09="livres-un-c3-NPN\.xml";
my $file10="culture-un-c3-NA\.xml";
my $file11="culture-un-c3-NN\.xml";
my $file12="culture-un-c3-NPN\.xml";
#
open(FILEIN01, $file01);
open(FILEOUT01, ">$file01.NA");
my $DUMPFULL01="";
while(my $recup01=<FILEIN01>) {
$recup01=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-ADJ\.xsl\"\?>\n/g;
$DUMPFULL01.=$recup01;
};
print FILEOUT01 $DUMPFULL01;
close(FILEIN01);
close(FILEOUT01);
#
open(FILEIN04, $file04);
open(FILEOUT04, ">$file04.NA");
my $DUMPFULL04="";
while(my $recup04=<FILEIN04>) {
$recup04=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-ADJ\.xsl\"\?>\n/g;
$DUMPFULL04.=$recup04;
};
print FILEOUT04 $DUMPFULL04;
close(FILEIN04);
close(FILEOUT04);
#
open(FILEIN07, $file07);
open(FILEOUT07, ">$file07.NA");
my $DUMPFULL07="";
while(my $recup07=<FILEIN07>) {
$recup07=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-ADJ\.xsl\"\?>\n/g;
$DUMPFULL07.=$recup07;
};
print FILEOUT07 $DUMPFULL07;
close(FILEIN07);
close(FILEOUT07);
#
open(FILEIN10, $file10);
open(FILEOUT10, ">$file10.NA");
my $DUMPFULL10="";
while(my $recup10=<FILEIN10>) {
$recup10=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-ADJ\.xsl\"\?>\n/g;
$DUMPFULL10.=$recup10;
};
print FILEOUT10 $DUMPFULL10;
close(FILEIN10);
close(FILEOUT10);
# Il écrase le fichier xml
system "#!/bin/bash
rename $file01.NA $file01 *\.xml\.NA;
rename $file04.NA $file04 *\.xml\.NA;
rename $file07.NA $file07 *\.xml\.NA;
rename $file10.NA $file10 *\.xml\.NA;";
###
open(FILEIN02, $file02);
open(FILEOUT02, ">$file02.NN");
my $DUMPFULL02="";
while(my $recup02=<FILEIN02>) {
$recup02=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-NOM.xsl\"\?>\n/g;
$DUMPFULL02.=$recup02;
};
print FILEOUT02 $DUMPFULL02;
close(FILEIN02);
#
open(FILEIN05, $file05);
open(FILEOUT05, ">$file05.NN");
my $DUMPFULL05="";
while(my $recup05=<FILEIN05>) {
$recup05=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-NOM.xsl\"\?>\n/g;
$DUMPFULL05.=$recup05;
};
print FILEOUT05 $DUMPFULL05;
close(FILEIN05);
#
open(FILEIN08, $file08);
open(FILEOUT08, ">$file08.NN");
my $DUMPFULL08="";
while(my $recup08=<FILEIN08>) {
$recup08=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-NOM.xsl\"\?>\n/g;
$DUMPFULL08.=$recup08;
};
print FILEOUT08 $DUMPFULL08;
close(FILEIN08);
#
open(FILEIN11, $file11);
open(FILEOUT11, ">$file11.NN");
my $DUMPFULL11="";
while(my $recup11=<FILEIN11>) {
$recup11=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-NOM.xsl\"\?>\n/g;
$DUMPFULL11.=$recup11;
};
print FILEOUT11 $DUMPFULL11;
close(FILEIN11);
# Il écrase le fichier xml
system "#!/bin/bash
rename $file02.NN $file02 *\.xml\.NN;
rename $file05.NN $file05 *\.xml\.NN;
rename $file08.NN $file08 *\.xml\.NN;
rename $file11.NN $file11 *\.xml\.NN;
";
####
open(FILEIN03, $file03);
open(FILEOUT03, ">$file03.NPN");
my $DUMPFULL03="";
while(my $recup03=<FILEIN03>) {
$recup03=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-PREP-NOM\.xsl\"\?>\n/g;
$DUMPFULL03.=$recup03;
};
print FILEOUT03 $DUMPFULL03;
close(FILEIN03);
close(FILEOUT03);
#
open(FILEIN06, $file06);
open(FILEOUT06, ">$file06.NPN");
my $DUMPFULL06="";
while(my $recup06=<FILEIN06>) {
$recup06=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-PREP-NOM\.xsl\"\?>\n/g;
$DUMPFULL06.=$recup06;
};
print FILEOUT06 $DUMPFULL06;
close(FILEIN06);
close(FILEOUT06);
#
open(FILEIN09, $file09);
open(FILEOUT09, ">$file09.NPN");
my $DUMPFULL09="";
while(my $recup09=<FILEIN09>) {
$recup09=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-PREP-NOM\.xsl\"\?>\n/g;
$DUMPFULL09.=$recup09;
};
print FILEOUT09 $DUMPFULL09;
close(FILEIN09);
close(FILEOUT09);
#
open(FILEIN12, $file12);
open(FILEOUT12, ">$file12.NPN");
my $DUMPFULL12="";
while(my $recup12=<FILEIN12>) {
$recup12=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-PREP-NOM\.xsl\"\?>\n/g;
$DUMPFULL12.=$recup12;
};
print FILEOUT12 $DUMPFULL12;
close(FILEIN12);
close(FILEOUT12);
# Il écrase le fichier xml
system "#!/bin/bash
rename $file03.NPN $file03 *\.xml\.NPN;
rename $file06.NPN $file06 *\.xml\.NPN;
rename $file09.NPN $file09 *\.xml\.NPN;
rename $file12.NPN $file12 *\.xml\.NPN;
";
#
system "#!/bin/bash
ls > tous-vos-fichiers\.txt;
grep \"NA\.xml\" tous-vos-fichiers\.txt > nom-de-fichier\.txt;
grep \"NN\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;
grep \"NPN\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;
echo \"Termine\";";
print "\nLes nouveaux fichiers créés se trouvent dans cette liste: \n";
system "#!/bin/bash
cat nom-de-fichier\.txt;";
#Correction de l'erreur pour le a: 1 erreur subsiste interne à la compilation de perl ou de cygwin avec culture-un-3-NN.xml par exemple il ne reconnaît pas le LF après <document> alors qu'il est là, la plupart des tentatives de modification du fichier ne marchent pas, et donc il y a des erreurs dans la constitution du fichier et donc rien n'est remplace.
}

##################################################
elsif (($rep=~/t/)||($rep=~/c/))
{
print "\n Nom du fichier de travail, de preference un -3-balise.xml \n ou un -c3-balise.xml au format UNIX: \n";
my $file=<STDIN>;
chomp($file);
system "#!/bin/bash
cp $file \.\/$file.01;
cp $file \.\/$file.02;
cp $file \.\/$file.03;
echo \"Attendez s'il vous plait...\";";
$file1 = $file.".01";
open(FILEIN01, $file1);
open(FILEOUT01, ">$file1.NA");
my $DUMPFULL01="";
while(my $recup01=<FILEIN01>) {
$recup01=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-ADJ\.xsl\"\?>\n/g;
$DUMPFULL01.=$recup01;
};
print FILEOUT01 $DUMPFULL01;
close(FILEIN01);
close(FILEOUT01);
system "#!/bin/bash
rename balise\.xml\.01\.NA NA\.xml *\.xml\.01\.NA;";
#
$file2 = $file.".02";
open(FILEIN02, $file2);
open(FILEOUT02, ">$file2.NN");
my $DUMPFULL02="";
while(my $recup02=<FILEIN02>) {
$recup02=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-NOM\.xsl\"\?>\n/g;
$DUMPFULL02.=$recup02;
};
print FILEOUT02 $DUMPFULL02;
close(FILEIN02);
close(FILEOUT02);
system "#!/bin/bash
rename balise\.xml\.02\.NN NN\.xml *\.xml\.02\.NN;
";
#
$file3 = $file.".03";
open(FILEIN03, $file3);
open(FILEOUT03, ">$file3.NPN");
my $DUMPFULL03="";
while(my $recup03=<FILEIN03>) {
$recup03=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-NOM-PREP-NOM\.xsl\"\?>\n/g;
$DUMPFULL03.=$recup03;
};
print FILEOUT03 $DUMPFULL03;
close(FILEIN03);
close(FILEOUT03);
system "#!/bin/bash
rename balise\.xml\.03\.NPN NPN\.xml *\.xml\.03\.NPN;";
#
system "#!/bin/bash
rm *balise.xml.01;
rm *balise.xml.02;
rm *balise.xml.03;";
#
system "#!/bin/bash
echo \"Termine.\";
ls > tous-vos-fichiers\.txt;
grep \"NA\.xml\" tous-vos-fichiers\.txt > nom-de-fichier\.txt;
grep \"NN\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;
grep \"NPN\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;";
print "\nLes nouveaux fichiers créés se trouvent dans cette liste: \n";
system "#!/bin/bash
cat nom-de-fichier\.txt;";
}
##################################################
elsif ($rep=~/x/) {
system "#!/bin/bash
echo \"Termine.\";
ls > tous-vos-fichiers\.txt;
grep \"\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;";
print "\nVos fichiers xml d'origine sont les suivants: \n";
system "#!/bin/bash
cat nom-de-fichier\.txt;";
print "\n Observez vos fichiers xml, attention si vous avez des fichiers \n dont le nom contient au debut, au milieu ou a la fin xml.01 ou xml.02 ou xml.03 \n tapez CTRL C pour quitter car ce type de fichier sera traite comme \n une copie temporaire de votre fichier en entree et sera efface.";
print "\n Nom du fichier de travail, de preference un .xml au format UNIX: \n";
my $file=<STDIN>;
chomp($file);
print "\n Nom du premier patron: \n";
my $p1=<STDIN>;
chomp($p1);
print "\n Nom du deuxieme patron: \n";
my $p2=<STDIN>;
chomp($p2);
print "\n Nom du troisieme patron: \n";
my $p3=<STDIN>;
chomp($p3);
system "#!/bin/bash
cp $file \.\/$file.01;
cp $file \.\/$file.02;
cp $file \.\/$file.03;
echo \"Attendez s'il vous plait...\";";
$file1 = $file.".01";
open(FILEIN01, $file1);
open(FILEOUT01, ">$file1.$p1");
my $DUMPFULL01="";
while(my $recup01=<FILEIN01>) {
$recup01=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-$p1\.xsl\"\?>\n/g;
$DUMPFULL01.=$recup01;
};
print FILEOUT01 $DUMPFULL01;
close(FILEIN01);
close(FILEOUT01);
system "#!/bin/bash
rename \.xml\.01\.$p1 $p1\.xml *\.xml\.01\.$p1;
";
#
$file2 = $file.".02";
open(FILEIN02, $file2);
open(FILEOUT02, ">$file2.$p2");
my $DUMPFULL02="";
while(my $recup02=<FILEIN02>) {
$recup02=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-$p2\.xsl\"\?>\n/g;
$DUMPFULL02.=$recup02;
};
print FILEOUT02 $DUMPFULL02;
close(FILEIN02);
close(FILEOUT02);
system "#!/bin/bash
rename \.xml\.02\.$p2 $p2\.xml *\.xml\.02\.$p2;
";
#
$file3 = $file.".03";
open(FILEIN03, $file3);
open(FILEOUT03, ">$file3.$p3");
my $DUMPFULL03="";
while(my $recup03=<FILEIN03>) {
$recup03=~s/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n/<\?xml version=\"1\.0\" encoding=\"iso-8859-1\" standalone=\"no\"\?>\n<\?xml-stylesheet type=\"text\/xsl\" href=\"style-3-$p3\.xsl\"\?>\n/g;
$DUMPFULL03.=$recup03;
};
print FILEOUT03 $DUMPFULL03;
close(FILEIN03);
close(FILEOUT03);
system "#!/bin/bash
rename \.xml\.03\.$p3 $p3\.xml *\.xml\.03\.$p3;
";
#
system "#!/bin/bash
rm *\.xml.01;
rm *\.xml.02;
rm *\.xml.03;";
#
system "#!/bin/bash
echo \"Termine.\";
ls > tous-vos-fichiers\.txt;
grep \"$p1\.xml\" tous-vos-fichiers\.txt > nom-de-fichier\.txt;
grep \"$p2\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;
grep \"$p3\.xml\" tous-vos-fichiers\.txt >> nom-de-fichier\.txt;";
print "\nLes nouveaux fichiers créés se trouvent dans cette liste: \n";
system "#!/bin/bash
cat nom-de-fichier\.txt;";
}
####
else
{ print "\n Annule.\n"; };