File: mkdtskel

package info (click to toggle)
libxml-dt-perl 0.3-1.1
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 296 kB
  • ctags: 42
  • sloc: perl: 914; xml: 424; makefile: 64
file content (80 lines) | stat: -rwxr-xr-x 1,397 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/perl -s
use XML::DT;

our ($dtd, $html);

if ($dtd) {

  $/ = ">";
  while(<>) {
    s/\n/ /g;
    s/
/ /g;
    s/^\s*//;
    if (m/<!ELEMENT\s+([A-Za-z_-]+)/) {
      $elem{$1} = [];
    } elsif (m/<!ATTLIST\s+([A-Za-z_-]+)\s+(.*)\s*>/) {
      my $elem = $1;
      my $fields = $2;
      while($fields =~ m!([A-Za-z_-]+)+.*?#(REQUIRED|IMPLIED)\s*!g) {
	push @{$elem{$elem}}, $1;
      }
    } else {
      #print STDERR "Ignoring $_\n";
      #---
    }
  }

  print <<'EOH';
#!/usr/bin/perl -w
use XML::DT;

my $filename = shift;
my %handler = (
EOH

  for (keys %elem) {
    print "\t'$_' => sub {},";
    print " #remember ",join(", ",map {"'$_'"} @{$elem{$_}}) if @{$elem{$_}};
    print "\n";
  }

  print <<'EOH';
);
print dt($filename, %handler);
EOH

} else {
  if ($html) {
    mkdtskel ("-html", @ARGV);
  } else {
    mkdtskel (@ARGV);
  }
}

__END__

=head1 NAME

mkdtskel - Perl code skeleton generator to process XML files with XML::DT

=head1 SYNOPSIS

  mkdtskel <xmlfile>

  mkdtskel -dtd <dtdfile>

  mkdtskel -html <htmlfile>

=head1 DESCRIPTION

Use this command to prepare a skeleton file with basic code needed to
process your XML file with XML::DT; The command checks the element
names and for each one, the attributes. This information is described
on the generated file to remember the programmer.

=head1 SEE ALSO

XML::DT(1), mkdtdskel(1) and perl(1)

=cut