]> matita.cs.unibo.it Git - helm.git/blob - metadata/dc/fill_db.pl
use the proper top level function to parse terms
[helm.git] / metadata / dc / fill_db.pl
1 #!/usr/bin/perl -w
2 use strict;
3
4 use XML::Parser;
5
6 my $skipped = 0;
7 my $open = 0;
8 my $content = "";
9 my $uri = "";
10
11 sub handle_start($$@) {
12    my ($expat, $element, @attrs) = @_;
13    if ($skipped == 1) {
14       $uri = $attrs[1];
15       $uri =~ s/'/''/g;
16    }
17    if ($skipped < 2) { $skipped++ ; }
18    else {
19       $open++;
20       $content = "";
21    }
22 }
23
24 sub handle_end($$) {
25    my ($expat,$element) = @_;
26    $open--;
27    if ($open >= 0) {
28       $content =~ s/'/''/g;
29       $element =~ s/(\w+):(\w+)/$1$2/;
30       my $query = "INSERT INTO $element VALUES ('$content','$uri');";
31                         print $query, "\n";
32    }
33 }
34
35 sub handle_char($$) {
36    my ($expat,$char) = @_;
37    if ($open >= 1) {
38       chomp($char);
39       $char =~ s/ +/ /g;
40       $char =~ s/^ //g;
41       $char =~ s/ $//g;
42       $content .= $char;
43    }
44 }
45
46 my $p = new XML::Parser(
47   Handlers =>
48     { Start => \&handle_start,
49       End   => \&handle_end,
50       Char  => \&handle_char});
51
52 $p->parsefile($ARGV[0]);
53