#!/usr/local/bin/perl -w
=pod
=head1 dbxmlpublish.pl konvertiert eine Veranstaltungsdatenbank in XML
=head2 description
Die Eingabedaten sollen durch ein Tab-Zeichen getrennt sein.
Die Reihenfolge der Felder muss folgendermassen aufgebaut sein:
Datum
Titel der Veranstaltung
Bemerkungen
Ort der Veranstaltung
Zeit der Veranstaltung
Sparte
=head2 Author
Copyright (c) 1999 by Karsten Meier
=cut
require 'StandardFile.pl';
#$| = 1; #no buffering during testing
#### Konfiguration ####
$xmlstart = qq(\n);
$xmlend = "";
@xmltags = qw( datum zeit titel bemerkung ort kategorie );
#### Deklarationen ####
#### Eingabedateien ermitteln ####
print "wir haben $ARGV -1 Argumente. sie Lauten @ARGV \n";
if($#ARGV < 0) # Falls keine Eingabe
{ # Frage Benutzer nach Eingabedatei
$inputfilename = &StandardFile::GetFile('TEXT');
if(defined $inputfilename) {
unshift(@ARGV, $inputfilename);
} else {
die "keine Eingabedatei";
}
}
foreach $filename (@ARGV) { # fŸr jede datei:
&processFile($filename);
} #end foreach
# --------------------------------------------------------------
# Diese Funktion uebernimmt die eigentliche Arbeit
sub processFile{
my($filename) = @_;
my($vdate, $vtitle, $vremark, $vplace, $vtime, $vkat);
my ($oldKat) = "";
open( INPUT, $filename) # šffne Eingabedatei
or die "kann $filename nicht šffnen";
open( OUTPUT, ">$filename.xml") # erzeuge und šffne Ausgabedatei
or die "kann $filename.xml nicht schreiben";
print "ich konvertiere $filename\n"; Ê # Statusmeldung
# jetzt koennen wir mit der eigentlichen Konvertierung anfangen
print OUTPUT $xmlstart;
Ê
while() { # fŸr jede Eingabezeile
chop; # entferne letztes Zeichen
&specialXmlChars($_); # wandelt die Spezialzeichen um
# teile Eingabe in die Felder auf:
($vdate, $vtitle, $vremark, $vplace, $vtime, $vkat)
= split /\t/;
if(defined $vtitle) # Falls Ÿbnerhaupt was zu tun ist
{
print OUTPUT "\n";
print OUTPUT &tagify( $xmltags[2], $vtitle);
# verhindere das bei fehlender $vremark ein Komma Ÿbrigbleibt
print OUTPUT &tagify( $xmltags[3], $vremark) unless $vremark eq "";
print OUTPUT &tagify( $xmltags[4], $vplace);
print OUTPUT &tagify( $xmltags[1], $vtime);
print OUTPUT &tagify( $xmltags[5], $vkat);
print OUTPUT "\n";
}
} #end while
print OUTPUT $xmlend;
Ê
close( OUTPUT);
close( INPUT );
MacPerl::SetFileInfo("ALFA","TEXT","$filename.xml"); # set Filetype to Alpha Editor
}
sub tagify{
my($tag, $text)= @_;
return "<$tag>$text$tag>\n";
}
# --------------------------------------------------------------
# Diese Funktion konvertiert die kritischen Sonderzeichen
# in Ihre XTags Interpretationen:
# < -> <
# \ -> >
sub specialXmlChars {
# & zu &
$_[0] =~s|<|<|;
$_[0] =~s|>|>|;
return $_[0];
}