#!/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\n"; } # -------------------------------------------------------------- # Diese Funktion konvertiert die kritischen Sonderzeichen # in Ihre XTags Interpretationen: # < -> < # \ -> > sub specialXmlChars { # & zu & $_[0] =~s|<|<|; $_[0] =~s|>|>|; return $_[0]; }