[cologne-pm] XML - Mysql

fjpl at online.de fjpl at online.de
Do Jan 24 07:29:05 PST 2008


 Hallo!

und Danke für das Willkommen und die schnelle Antwort. 
Leider hilft mir das nicht wirklich weiter. Hat nicht jemand ein paar
konkrette Zeilen Code?

Die DTD sieht so aus:

<!ELEMENT wurfl ( version, devices ) >

<!ELEMENT version ( ver, last_updated, official_url, maintainers, authors,
contributors, statement ) >
<!ELEMENT ver ( #PCDATA ) >
<!ELEMENT last_updated ( #PCDATA ) >
<!ELEMENT official_url ( #PCDATA ) >
<!ELEMENT statement ( #PCDATA ) >

<!ELEMENT maintainers ( maintainer ) >
<!ELEMENT maintainer EMPTY >
<!ATTLIST maintainer email CDATA #REQUIRED >
<!ATTLIST maintainer home_page CDATA #REQUIRED >
<!ATTLIST maintainer name CDATA #REQUIRED >

<!ELEMENT authors ( author+ ) >
<!ELEMENT author EMPTY >
<!ATTLIST author name CDATA #REQUIRED >
<!ATTLIST author email CDATA #REQUIRED >
<!ATTLIST author home_page CDATA #IMPLIED >

<!ELEMENT contributors ( contributor+ ) >
<!ELEMENT contributor EMPTY >
<!ATTLIST contributor name CDATA #REQUIRED >
<!ATTLIST contributor email CDATA #REQUIRED >

<!ELEMENT devices ( device+ ) >
<!ELEMENT device ( group* ) >
<!ATTLIST device id NMTOKEN #REQUIRED >
<!ATTLIST device fall_back NMTOKEN #REQUIRED >
<!ATTLIST device user_agent CDATA #REQUIRED >
<!ATTLIST device actual_device_root CDATA #IMPLIED >

<!ELEMENT group ( capability+ ) >
<!ATTLIST group id NMTOKEN #REQUIRED >

<!ELEMENT capability EMPTY >
<!ATTLIST capability name NMTOKEN #REQUIRED >
<!ATTLIST capability value NMTOKEN #REQUIRED >

Die XML-Datei gibts unter: 
http://wurfl.sourceforge.net/wurfl.xml 6,82 MB!
http://wurfl.sourceforge.net/wurfl.zip  426 KB
 
Es gibt ein WURFLLite.pm und Mobile::WURFL, die Module laufen bei mir auch
(leider unter XP, da noch kein *nux), aber die beiliegenden Scripte geben
nicht das aus was sie sollen.

Hab dann zunächst mal folgendes geschrieben:

use XML::Parser;
my $zeiger = new XML::Parser ();
$zeiger->setHandlers (Start => \&anfang,End => \&ende,Char=>\&inhalt );
$zeiger->parsefile ("C:/www/data/wurfl.xml");

sub anfang {
  $wert_des_zeigers  = shift;
   $starttag= shift;
    print "$wert_des_zeigers == <$starttag>";
  print "\n";
}
sub ende {
  ($wert_des_zeigers,$endtag) = @_;
  print "$wert_des_zeigers == </$endtag>\n";
}
sub inhalt{
($wert_des_zeigers,$inhalt)=@_;
print " Inhalt: $inhalt";
} 

Bis  </statement> schreibt er auch was es soll, aber dann kommt kein $inhalt
mehr, nur noch jeweils die Start- und Endtags.

Also, wenn da  mal einer gucken täte, würde ich mich sehr freuen + auch
gerne bei gelegenheit revangieren...

Gruß - FranzL


> Da eine XML-Struktur grundsaetzlich erstmal Tree-Form hat, im 
> Gegensatz zu einer 2-Dimensionalen Tabelle wie sie bei 
> relationalen Datenbanken ueblich ist, haengt das schwer vom 
> XML-Schema ab.  Ist Dein Schema Flach, kannst Du es 
> natuerlich in ein SQL-Schema abbilden.  Bei komplexeren 
> XML-Schemata musst Du das ueber relationen zwischen mehreren 
> Tabellen machen, aber mir ist kein Tool bekannt, dass Dir aus 
> 'ner DTD ein SQL-Schema erstellt.
> 
> Du kannst natuerlich die XML-Datei einfach platt in ein 
> Volltextfeld ballern, hast dann aber natuerlich keinen 
> gezielten Zugriff auf XML-Unterelemente.
> mike at lamertz.net
> --