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', 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");
34 die(join('', @errors));
38 #########################################################################
42 if ($l =~ /^(.*)\<(\/?[a-zA-Z]+(:[a-zA-Z]+)?)([^\>\<]*)\>(.*)$/) {
43 my ($prev,$tag,$para,$rest) = ($1,$2,$4,$5);
44 $prev = &convert($prev);
45 $rest = &convert($rest);
46 if ($para !~ /^\s*\/?$/) {
47 if ($para !~ /^\s+[a-z]+(:[a-z]+)?\s*=/) {
48 $para =~ s/[^a-z_]/_/g;
51 $para = " " . &handlePara($para);
54 if ($para =~ s/\s*\/$//) {
55 return "$prev<$tag$para\>\</$tag\>$rest";
58 return "$prev<$tag$para>$rest";
69 if ($para =~ /^\s*([a-z]+(:[a-z]+)?)\s*=\s*(.*)$/) {
71 my ($p, $rest) = ($1, $3);
72 if ($rest =~ /^(\'([^\']|\\\')*\')(.*)$/) {
76 elsif ($rest =~ /^(\"([^\"]|\\\")*\")(.*)$/) {
80 elsif ($rest =~ /^([^\s]+)(.*)$/) {
83 $val1 =~ s/([\"\'\\])/\\$1/g;
84 $val = '"' . $val1 . '"';
87 die("param error for rest = $rest");
89 if ($rest !~ /^\s*$/) {
90 return "$p=$val " . &handlePara($rest);