baseportal
Suche: 
 Forum   Start 

Verschiedene Ausgabeformate aus derselben XML-Seite generieren

ab Version 3 
Verstecken Inhalt
Eine der Möglichkeiten von XML ist es, dass man aus ein- und derselben Datenbasis unterschiedliche Ausgaben für verschiedene Formate erzeugen kann - ohne irgendetwas an den Seiten zu ändern. Im folgenden wird gezeigt, wie aus einer XML-Seite die Ausgabe für HTML, WAP und einfachen Text erzeugt wird.

Wem sich der Vorteil hier nicht gleich erschliesst, möge sich vor Augen halten, dass er vielleicht Hunderte von Seiten erstellt hat, die er nun durch das Anpassen eines einzigen Tag-Satzes automatisch ALLE in ein neues Format wandeln kann.


XML

Hier die XML-Seite, der Ursprung für alle anderen Seiten:

      <header titel="Meine Seite"/>

      <einleitung>
      Hier ist meine persönliche Seite.
      </einleitung>

      <adressen>

          <person>
              <name>Hans Huber</name>
              <strasse>Waldweg 3</strasse>
              <ort>12345 Berlin</ort>
              <telefon>030 / 12345678</telefon>
          </person>

          <person>
              <name>Andrea Aal</name>
              <strasse>Zossener Str. 9a</strasse>
              <ort>10999 Berlin</ort>
              <telefon>030 / 98765431</telefon>
          </person>

      </adressen>

      &disclaimer;

      <footer/>

In der eigentlichen XML-Seite sollte kein "Format-spezifischer" Code vorkommen, wie einleitende oder abschliessende Tags (z.B. <html><head><title>... in HTML). Da wir sie in einer vernünftigen HTML-Seite und entsprechendes in einer wohlgeformten WAP-Seite brauchen, verwenden wir dafür die alleinstehenden Tags "header" (dem wir noch den Titel als Parameter mitgeben) und "footer".

Man kann, wenn man weiss, was man tut, trotzdem Tagnamen verwenden, die in bestimmten Formaten eine Bedeutung haben, z.B. das <b>...</b>, das ja sogar in HTML und WAP dieselbe Bedeutung hat. Damit kann man das Tag einfach undefiniert durchreichen. Bei der reinen Text-Ausgabe ist dies zwar nicht gewünscht, allerdings weiss man ja, wofür das <b>-Tag steht und es für diesen Fall dann umdefinieren.


HTML

Hier nun die Tag-Datenbank für die HTML-Ausgabe:

Im header wird der Parameter "titel" entsprechend eingesetzt. adressen baut eine Tabelle um die Ausgabe der Personen, der Rest sollte klar sein.

Und das ist die HTML-Seite die erzeugt wird:

      <html><head><title>Adressen</title></head><body bgcolor=ffffff>

      <h2>Adressen</h2>

      <p><i>
      Hier ist meine persönliche Adressenliste.
      </i></p>

      <table bgcolor=e0e0e0 cellpadding=4 cellspacing=0>
      <tr align=middle bgcolor=d0d0d0><td>Name</td><td>Strasse</td><td>Ort</td><td>Telefon</td></tr>

          <tr>
              <td><b>Hans Huber</b></td>
              <td>Waldweg 3</td>
              <td>12345 Berlin</td>
              <td>030 / 12345678</td>
          </tr>

          <tr>
              <td><b>Andrea Aal</b></td>
              <td>Zossener Str. 9a</td>
              <td>10999 Berlin</td>
              <td>030 / 98765431</td>
          </tr>

      </table>

      <p align=center><font size=2>Ich distanziere mich von den Inhalten aller weiterführenden Links!</font></p>

      </body></html>


WML

Hier nun die Tag-Datenbank für die WML-Ausgabe:

Der anfängliche Perl-Abschnitt im header ist notwendig, damit baseportal die Seite auch als WAP-Seite schickt, sonst können WAP-Browser die Seite garnicht verstehen. Ansonsten wird ebenfalls mit dem "titel"-Parameter ein entsprechender "Seitenkopf" erzeugt. Der "Disclaimer" wird in diesem Beispiel weggelassen, da WAP-Handys sowieso so wenig Platz auf dem Display haben. Die Definition von disclaimer (mit leerem "Code"-Feld) ist aber notwendig, denn sonst würde &disclaimer; einfach so in der Seite stehen bleiben. Die restlichen Tags entsprechen in etwa denjenigen bei HTML.

Und das ist die WML-Seite die erzeugt wird:

      <perl>$_header="Content-type: text/vnd.wap.wml\n\n";</perl>

      <?xml version="1.0"?>
      <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
      <wml>
      <card title="Adressen">

      <b>Adressen</b>

      <p><i>
      Hier ist meine persönliche Adressenliste.
      </i></p>

      <table columns=4>
      <tr><td>Name</td><td>Strasse</td><td>Ort</td><td>Telefon</td></tr>

          <tr>
              <td><b>Hans Huber</b></td>
              <td>Waldweg 3</td>
              <td>12345 Berlin</td>
              <td>030 / 12345678</td>
          </tr>

          <tr>
              <td><b>Andrea Aal</b></td>
              <td>Zossener Str. 9a</td>
              <td>10999 Berlin</td>
              <td>030 / 98765431</td>
          </tr>

      </table>

      </card></wml>


Text

Und zum Schluss die Tag-Datenbank für die reine Text-Ausgabe:

Hier setzen wir nun etwas Perl-Programmierung ein, um beim header den Titel komplett GROSS zu schreiben. Einen footer brauchen wir nicht. Die meisten anderen Tags geben einfach ihren Inhalt unverändert weiter ($_). Bei adressen werden noch überflüssige Zeilenumbrüche und Tabs entfernt.

Und das ist die (zugegeben sehr schlichte) Text-Seite die erzeugt wird:

      ADRESSEN


      Hier ist meine persönliche Adressenliste.


      Hans Huber, Waldweg 3, 12345 Berlin, 030 / 12345678
      Andrea Aal, Zossener Str. 9a, 10999 Berlin, 030 / 98765431


      --- Ich distanziere mich von den Inhalten aller weiterführenden Links! ---

Mit Datenbanken umsetzen

Mancher wird sich bei diesem Beispiel verwundert die Augen reiben: Nanu, das ist doch eigentlich hervorragend für eine Datenbank geeignet - und genau dafür gibt es doch baseportal... Richtig! ;-)

Hier zerfliessen die Grenzen zwischen einem Datenbank-System wie baseportal und XML - letzteres wurde u.a. so gestaltet, dass es auf der einen Seite einfach aus Datenbanken generiert und auf der anderen Seite leicht in Datenbank integriert werden kann.

Natürlich sollte man die Personen mit einer entsprechende baseportal-Datenbank verwalten und dann mit ... in die Seite einbinden... ;-)

Letzte Änderung am 7.10.2006, 06:35

c - + 
© baseportal GmbH. Alle Rechte vorbehalten.


powered in 0.02s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!