4 use File::Temp qw/ tempfile tempdir /;
9 die("No xml file specified") if (! defined($ARGV[0]));
11 die("Bad extension of $f") if ($f !~ /\.xml$/);
12 die("Could not read $f") if (!open(FI, $f));
13 my ($fh, $filename) = tempfile("tempXXXX", SUFFIX => '.xml', DIR => '/tmp', UNLINK => 0);
14 while (my $l = <FI>) {
23 if (open(FI, "xmllint --sax $filename|")) {
24 while (my $l = <FI>) {
30 @errors = ("Could not run xmllint\n");
33 print "Not unlinking $filename\n";
35 die(join('', @errors));
39 #########################################################################
43 if ($l =~ /^(.*)\<(\/?[a-zA-Z]+(:[a-zA-Z]+)?)([^\>\<]*)\>(.*)$/) {
44 my ($prev,$tag,$para,$rest) = ($1,$2,$4,$5);
45 $prev = &convert($prev);
46 $rest = &convert($rest);
47 if ($para !~ /^\s*\/?$/) {
48 if ($para !~ /^\s+[a-z]+(:[a-z]+)?\s*=/) {
49 $para =~ s/[^a-z_]/_/g;
52 $para = " " . &handlePara($para);
55 if ($para =~ s/\s*\/$//) {
56 return "$prev<$tag$para\>\</$tag\>$rest";
59 return "$prev<$tag$para>$rest";
70 if ($para =~ /^\s*([a-z]+(:[a-z]+)?)\s*=\s*(.*)$/) {
72 my ($p, $rest) = ($1, $3);
73 if ($rest =~ /^(\'[^\']*\')(.*)$/) {
77 elsif ($rest =~ /^(\"[^\"]*\")(.*)$/) {
81 elsif ($rest =~ /^([^\s]+)(.*)$/) {
82 $val = '"' . $1 . '"';
86 die("param error for rest = $rest");
88 if ($rest !~ /^\s*$/) {
89 return "$p=$val " . &handlePara($rest);