Kapitel 5 XML in der Praxis

5.1 XML-Dokumente mit Unterstützung erstellen: X-Metal 1.0 156

5.2 Synchronized Multimedia Integration Language (SMIL) 158

5.3 Wireless Markup Language (WML) 185

5.4 XML und EDI 201

5.5 Chemical Markup Language (CML) 203

5.6 Channel Definition Format 204

5.7 Szenarien 209

5.8 Microsoft Office 2000 211

5.9 Shakespeare 213

Nachdem Sie inzwischen die Grundlagen von XML kennen, gehen wir auf zahlreiche Umsetzungen des XML-Standards in der Praxis ein. Zunächst finden Sie in diesem Kapitel eine kurze Einführung in das Programm X-Metal. Mit diesem XML-Editor lassen sich die zahlreichen Beispiele am besten direkt nachvollziehen.

Im Anschluss daran finden Sie eine ausführliche Beschreibung der Syntax der beiden neuen Standards SMIL (Synchronized Multimedia Language) und WML (Wireless Markup Language). Dabei gehen wir sowohl auf die entsprechenden DTDs ein, die Sie als Beispiel für eigene Entwicklungen sehen können. Zusätzlich bieten wir aber auch einen Einstieg, um diese beiden Sprachen in der Praxis einsetzen zu können.

Neben zahlreichen weiteren Szenarien und Beispielen aus der Praxis finden Sie im Anschluss beispielsweise noch die Chemical Markup Language (CML), das Microsoft Channel Definition Format (CDF) und einen Ausblick auf XML in Verbindung mit EDI.

5.1 XML-Dokumente mit Unterstützung erstellen: X-Metal 1.0

Es existieren bisher nur wenige leicht zu bedienende visuelle Entwicklungsumgebungen zur Erstellung von XML-Dokumenten. Dennoch wird man komplexe XML-Dokumente kaum noch lediglich mithilfe eines einfachen Editors bewältigen können. Das Programm X-Metal der Firma SoftQuad bietet einen guten Einstieg in dieses Thema. Eine 30-Tage Trial-Version liegt auf der Buch-CD-ROM bei.

Im folgenden Abschnitt erläutern wir einige Funktionen dieser Software. Natürlich möchten wir hier keine komplette Bedienungsanleitung liefern, dennoch lassen sich viele Beispiele aus diesem Buch mithilfe einer solchen Software leichter umsetzen.

Abb. 5.1: X-Metal erstellt Dokumente direkt und ohne Umwege im XML-Format

X-Metal erstellt mithilfe einer DTD entsprechend konforme XML-Dokumente. Eine DTD muss also zunächst vorliegen oder erstellt werden. Diese DTD wird dann ausgewählt der Editor achtet automatisch darauf, dass nur erlaubte Elemente und Attribute eingegeben werden können. Einige fertige DTDs werden bereits mit dem Programm ausgeliefert, unter anderem für HTML 4.0.

5.1.1 HTML 4.0 Strict Dokumente mit X-Metal erstellen

Starten Sie das Programm zunächst und wählen Sie den Menüeintrag File / New aus. Sie können jetzt aus den vorhandenen DTDs die auswählen, auf deren Basis Sie das neue Dokument erstellen möchten.

Momentan werden neben einigen experimentellen DTDs folgende Sprachbeschreibungen mit der Software ausgeliefert:

Wählen Sie hier also die entsprechende Vorlage aus.

Abb. 5.2: Wählen Sie die DTD HTML 4.0 Strict aus

Über die Elementliste am rechten Bildschirmrand lassen sich sprachkonforme Elemente auswählen und auf der linken Seite im Editor einfügen. Dabei achtet das Programm bereits automatisch darauf, dass Elemente korrekt ineinander verschachtelt werden.

Abb. 5.3: Die Programmoberfläche mit eingeblendeter Elementenliste

So lässt sich beispielsweise kein img-Markup in den Header der Datei einfügen (sondern nur in den body des Dokuments). Aktivieren Sie über die Schaltflächen am unteren linken Fensterrand die verschiedenen Ansichten des Editor. Hier können Sie zwischen normaler Ansicht, Anzeige der Markups, Anzeige des Quelltextes und einer Vorschau auswählen.

Blenden Sie über View / Attribute Inspector den so genannten Attribute Inspector ein. Mit ihm haben Sie zusätzlich alle möglichen und gültigen Attribute für das jeweils ausgewählte Element im Blick und können diese direkt verändern.

Abb. 5.4: Der Attribute Inspector

5.1.2 Eigene DTDs in X-Metal einbinden

Lediglich für die Verwendung der HTML-DTDs ist der X-Metal-Editor eigentlich viel zu schade. Für diesen Zweck haben Sie wahrscheinlich auch bereits Ihren persönlichen Lieblingseditor gefunden. Interessanter wird es eigene DTDs oder DTDs, für die es keinen speziellen Editor gibt, zu verwenden (siehe Abb. 5.5).

Abb. 5.5: Kopieren der SMIL-DTD in das Programmverzeichnis

Kopieren Sie die gültige DTD zunächst in das Rules-Verzeichnis des Programms. Weitere interne Dateien, wie in der Abbildung zu sehen, werden bei der Verwendung vom Programm selbst angelegt (siehe Abb. 5.6).

Abb. 5.6: Blank XML-Dokument

Wählen Sie jetzt über File / New die Vorlage »Blank XML Document« aus (siehe Abb. 5.7).

Abb. 5.7: Auswählen der SMIL-DTD.DTD

Anschließend wählen Sie aus dem Dateifenster Ihre eigene oder neue DTD aus (siehe Abb. 5.8).

Abb. 5.8: Zurück im Editor

Das Programm sollte alle Elemente und zugehörigen Attribute, sowie deren Verknüpfungsmöglichkeiten erkannt haben und in der Elementliste anzeigen. Jetzt können Sie Ihr Dokument erstellen.

5.2 Synchronized Multimedia Integration Language (SMIL)

SMIL ist eine auf XML basierende neue Auszeichnungssprache, die speziell für die Bedürfnisse von multimedialen Webelementen entwickelt wurde. Die so genannte Synchronized Multimedia Integration Language hilft Video, Sound oder Grafiken miteinander zu verbinden und zu synchronisieren. Das bedeutet, dass Sie beispielsweise genau an einer bestimmten Stelle eines Videos einen entsprechenden Sound starten oder interaktiv auf den Besucher reagieren.

Abb. 5.9: Eine gute Anlaufstelle für aktuelle Informationen: www.justsmil.com

5.2.1 Was ist SMIL?

Bei der bisherigen Nutzung solcher Elemente mithilfe von HTML ist es nicht möglich die verschiedenen Elemente aufeinander abgestimmt ablaufen zu lassen. Sie können zwar auch jetzt schon Videos oder Sound in Ihre Internetseiten einbinden. Diese werden aber als separate und isolierte Objekte betrachtet und behandelt.

Mit SMIL lassen sich beispielsweise verschiedene Videosequenzen zeitlich aufeinander abgestimmt dem Besucher anzeigen. Bisher waren solche Interaktionen zwar auch schon möglich, Sie benötigten aber nicht-standardisierte Plug-Ins oder Erweiterungen. Großer Nachteil war zudem, dass in der Regel ein einziges riesiges Datenobjekt geliefert wurde, das alle Multimediainformationen enthielt. Mit SMIL bleiben die einzelnen Elemente wie bei HTML üblich voneinander getrennt und können von unterschiedlichen URLs bezogen werden.

Zusätzlich bietet SMIL Möglichkeiten die unterschiedlichen Bandbreiten des Benutzers zu berücksichtigen. Je nach verfügbarer Übertragungsgeschwindigkeit werden daran angepasste Objekte geliefert. Diese Auswahl erledigt SMIL automatisch. So können die gleichen Versionen beispielsweise sowohl auf CD-ROM als auch im Internet angeboten werden. Zusätzlich kann mit der gleichen Technik zwischen verschiedenen Sprachversionen unterschieden werden. So können englischsprachige Besucher automatisch mit einem englischen Video und deutschsprachige Besucher mit einem deutschen Video begrüßt werden.

Vorrangiges Ziel bei der Entwicklung von SMIL war die von HTML her bekannte Syntax. SMIL kommt mit sehr wenigen Befehlen aus und ist vergleichsweise einfach einzusetzen. Zudem ist die SMIL-Schnittstelle frei zugänglich und bleibt so nicht an einen einzigen Hersteller gebunden. Jeder der HTML und XML beherrscht sollte sich auch mit SMIL schnell zurecht finden. Denn SMIL basiert natürlich vollständig auf XML und die Befehle sind an HTML angelehnt.

Der aktuelle SMIL-Standard basiert auf der Spezifikation 1.0 des W3C vom Juni 1998.

Abb. 5.10: Die aktuellste Unterstützung des SMIL-Standards finden Sie bei Microsoft

5.2.2 Welche Software benötigen Sie?

SMIL-Dokumente können natürlich grundsätzlich »per Hand« mit einem einfachen Editor erstellt werden, ähnlich wie HTML-Dokumente. Zum Anschauen solcher Dokumente benötigen Sie aber auf jeden Fall ein zusätzliches Programm oder Plug-In für Ihren Browser, zukünftige Browser werden SMIL aber vermutlich bereits integriert haben (z.B. der Microsoft Internet Explorer 5.5). Bisher bleiben Ihnen vor allem drei bekannte Tools zum Anschauen dieser Dokumente. Das bekannteste Plug-In davon dürfte der RealPlayer sein, der vermutlich schon auf den meisten internetfähigen Computern installiert ist. Mit diesem Player sind Sie zudem für fast alle wichtigen Multimedia- und Streaming-Standards gerüstet.

GRINS (CWI)

www.cwi.nl/SMIL

RealPlayer

www.real.com

Abb. 5.11: Der RealPlayer 7.0 Basic ist kostenlos im Internet erhältlich

SOJA (Helio)

www.helio.org

Zum Erstellen von SMIL-Dokumenten bietet sich der SMIL Composer von Sausage an. Dieser ist kostenlos im Internet unter www.sausage.com erhältlich.

Abb. 5.12: Der visuelle SMIL Composer erleichtert die Erstellung von XML-Dokumenten

5.2.3 Die SMIL-DTD

Da SMIL vollständig auf XML basiert, existiert natürlich auch eine entsprechende DTD. Diese kurze DTD haben wir im folgenden Abschnitt abgedruckt. Eine vollständige Erläuterung der einzelnen Befehle mit zahlreichen Beispielen für die Verwendung, finden Sie dann im Anschluss daran.

Die aktuelle Version der DTD erhalten Sie im Internet z.B. unter: http://www.cwi.nl/SMIL/DTD/SMIL-DTD.txt.

Hinweise auf die Autoren

<!--
    This is the XML DTD for SMIL 1.0.
    Date: 1998/06/15 08:56:30
    Authors:
        Jacco van Ossenbruggen <jrvosse@cwi.nl>
        Sjoerd Mullender       <sjoerd@cwi.nl>
    Further information about SMIL is available at:
        http://www.w3.org/AudioVideo/
-->

Allgemeine Attribute

<!ENTITY % id-attr "id ID #IMPLIED">
<!ENTITY % title-attr "title CDATA #IMPLIED">
<!ENTITY % skip-attr "skip-content (true|false) 'true'">
<!ENTITY % desc-attr "
        %title-attr;
        abstract        CDATA   #IMPLIED
        author          CDATA   #IMPLIED
        copyright       CDATA   #IMPLIED
">

SMIL Dokumentenstruktur

Das Hauptelement smil (root) enthält alle anderen Elemente des Dokuments.
<!ELEMENT smil (head?,body?)>
<!ATTLIST smil
        %id-attr;
>

Dokumentenkopf (head)

<!ENTITY % layout-section "layout|switch">
<!ENTITY % head-element
      "(meta*,((%layout-section;), meta*))?">
<!ELEMENT head %head-element;>
<!ATTLIST head %id-attr;>

Layout Element

<!ELEMENT layout ANY>
<!ATTLIST layout
        %id-attr;
        type CDATA      "text/smil-basic-layout"
>

Region Element

<!ENTITY % viewport-attrs "
        height              CDATA    #IMPLIED
        width               CDATA    #IMPLIED
        background-color    CDATA    #IMPLIED
">
<!ELEMENT region EMPTY>
<!ATTLIST region
        %id-attr;
        %title-attr;
        %viewport-attrs;
        left                CDATA    "0"
        top                 CDATA    "0"
        z-index             CDATA    "0"
        fit                 (hidden|fill|meet|scroll|slice)
     "hidden"
        %skip-attr;
>

Root-Layout Element

<!ELEMENT root-layout EMPTY>
<!ATTLIST root-layout
        %id-attr;
        %title-attr;
        %viewport-attrs;
        %skip-attr;
>

Metainformationen

<!ELEMENT meta EMPTY>
<!ATTLIST meta
        name    NMTOKEN #REQUIRED
        content CDATA   #REQUIRED
        %skip-attr;
>

Dokumentenkörper (body)

<!ENTITY % media-object
          "audio|video|text|img|animation|textstream|ref">
<!ENTITY % schedule "par|seq|(%media-object;)">
<!ENTITY % inline-link "a">
<!ENTITY % assoc-link "anchor">
<!ENTITY % link "%inline-link;">
<!ENTITY % container-content "(%schedule;)|switch|(%link;)">
<!ENTITY % body-content "(%container-content;)">
<!ELEMENT body (%body-content;)*>
<!ATTLIST body %id-attr;>

Synchronisierung (Attribute)

<!ENTITY % sync-attributes "
        begin   CDATA   #IMPLIED
        end     CDATA   #IMPLIED
>

Switch Parameter

<!ENTITY % system-attribute "
        system-bitrate         CDATA                #IMPLIED
        system-language        CDATA                #IMPLIED
        system-required        NMTOKEN              #IMPLIED
        system-screen-size     CDATA                #IMPLIED
        system-screen-depth    CDATA                #IMPLIED
        system-captions        (on|off)             #IMPLIED
        system-overdub-or-caption
  (caption|overdub)    #IMPLIED
>

Fill Attribute

<!ENTITY % fill-attribute "
        fill    (remove|freeze)    'remove'
">

Parallel Element

<!ENTITY % par-content "%container-content;">
<!ELEMENT par    (%par-content;)*>
<!ATTLIST par
        %id-attr;
        %desc-attr;
        endsync CDATA           "last"
        dur     CDATA           #IMPLIED
        repeat  CDATA           "1"
        region  IDREF           #IMPLIED
        %sync-attributes;
        %system-attribute;
>

Sequential Element

<!ENTITY % seq-content "%container-content;">
<!ELEMENT seq    (%seq-content;)*>
<!ATTLIST seq
        %id-attr;
        %desc-attr;
        dur     CDATA           #IMPLIED
        repeat  CDATA           "1"
        region  IDREF           #IMPLIED
        %sync-attributes;
        %system-attribute;
>

Switch Element

<!ENTITY % switch-content "layout|(%container-content;)">
<!ELEMENT switch (%switch-content;)*>
<!ATTLIST switch
        %id-attr;
        %title-attr;
>

Medienobjekte Elemente

<!ENTITY % mo-attributes "
        %id-attr;
        %desc-attr;
        region     IDREF           #IMPLIED
        alt        CDATA           #IMPLIED
        longdesc   CDATA           #IMPLIED
        src        CDATA           #IMPLIED
        type       CDATA           #IMPLIED
        dur        CDATA           #IMPLIED
        repeat     CDATA           '1'
        %fill-attribute;
        %sync-attributes;
        %system-attribute;
">

<!ENTITY % mo-content "(%assoc-link;)*">
<!ENTITY % clip-attrs "
        clip-begin      CDATA   #IMPLIED
        clip-end        CDATA   #IMPLIED
>
<!ELEMENT ref           %mo-content;>
<!ELEMENT audio         %mo-content;>
<!ELEMENT img           %mo-content;>
<!ELEMENT video         %mo-content;>
<!ELEMENT text          %mo-content;>
<!ELEMENT textstream    %mo-content;>
<!ELEMENT animation     %mo-content;>

<!ATTLIST ref           %mo-attributes; %clip-attrs;>
<!ATTLIST audio         %mo-attributes; %clip-attrs;>
<!ATTLIST video         %mo-attributes; %clip-attrs;>
<!ATTLIST animation     %mo-attributes; %clip-attrs;>
<!ATTLIST textstream    %mo-attributes; %clip-attrs;>
<!ATTLIST text          %mo-attributes;>
<!ATTLIST img           %mo-attributes;>

Verknüpfungen

<!ENTITY % smil-link-attributes "
        %id-attr;
        %title-attr;
        href            CDATA                   #REQUIRED
        show            (replace|new|pause)     'replace'
">
<!ELEMENT a (%schedule;|switch)*>
<!ATTLIST a
        %smil-link-attributes;
>
<!ELEMENT anchor EMPTY>
<!ATTLIST anchor
        %skip-attr;
        %smil-link-attributes;
        %sync-attributes;
        coords          CDATA                   #IMPLIED
>

5.2.4 Unterschiede zu HTML

Sicherlich werden Sie sich bei der Verwendung von SMIL nicht besonders schwer tun. Dennoch möchten wir auf einige Unterschiede zu HTML hinweisen, die besonders zu Beginn häufig übersehen werden und so zu Problemen führen.

In erster Linie gilt es zwei Regeln zu beachten, die die SMIL-Syntax von HTML unterscheiden.

<img src="bild.gif">

wird also in SMIL:

<img src="bild" />

Da es sich hier um ein leeres Element handelt, wird dieses schon im Eingangs-Tag terminiert.

5.2.5 Einführung in die Programmierung mit SMIL

Die Struktur eines SMIL-Dokuments erinnert sehr stark an HTML. Es existiert ein umschließendes <smil>-Tag. Zudem gibt es einen Abschnitt für Kopfinformationen (head) und den Dokumentenkörper (body), der den eigentlichen Inhalt enthält.

<smil>
  <head>
  <meta name="copyright" content="Name" />
  <layout>
  <!-- Layoutinformationen -->
  </layout>
  </head>
  <body>
  <!-- Medien und Synchronisierunginformationen -->
  </body>
</smil>

Fenster (root-layout)

Für alle visuellen Elemente, die Sie in ein SMIL-Dokument einfügen, ist es wichtig, dass diese innerhalb eines bestimmten Bereichs eingefügt werden (region). Die Positionierung aller Elemente ist relativ einfach: es können Pixelpositionen angegeben werden, Nullpunkt ist die linke obere Ecke. Beachten Sie dabei die Auflösung des Monitors und die möglichen Maximalwerte.

Abb. 5.13: Positionierung der Regionen

<smil>
 <head>
  <layout>
   <root-layout width="300" height="200"
             background-color="white" />
  </layout>
 </head>
 <body>
 </body>
</smil>

Das so genannte root-layout enthält die gesamte Größe der SMIL-Anwendung. Innerhalb dieser Grenzen spielt sich das Geschehen ab. Über background-color lässt sich eine Hintergrundfarbe der Seite angeben.

Regionen bestimmen

Jedes einzelne Videoelement wird in einer eigenen Region ausgeführt. Die Abmessungen und die relative Position dieser Region wird im Kopf des Dokuments angegeben. Zusätzlich muss jedem Element eine eindeutige id zugewiesen werden.

<smil>
 <head>
  <layout>
   <root-layout width="300" height="200"
        background-color="white" />
   <region id=" icon" left="75" top="50"
        width="32" height="32" />
  </layout>
 </head>
<body>
</body>
</smil>

Grafische Objekt einbinden

Nachdem die Regionen bestimmt sind, kann der eigentliche visuelle Inhalt der Datei angegeben werden. Dieser Inhalt befindet sich im body-Container des SMIL-Dokuments.

<smil>
<head>
  <layout>
  <root-layout width="300" height="200"
        background-color="white" />
  <region id=" icon" left="75" top="50"
        width="32" height="32" />
  </layout>
</head>
<body>
  <img src="icon.gif" alt="Das Logo"
      region=" icon" />
</body>
</smil>

In unserem Beispiel binden wir ein einfaches GIF-Bild in das Dokument ein. Beachten Sie dabei, dass dem Objekt über die id eine Region zugewiesen werden muss.

Überlappende Regionen

Hat man mehrere grafische Objekte in die Seite eingefügt, entsteht schnell das Problem, welche überlappenden Elemente im Vordergrund oder im Hintergrund positioniert werden sollen. Die Reihenfolge der Darstellungsebenen wird über das Attribut z-index festgelegt. Ein hoher Wert für dieses Attribut bedeutet dabei, dass das entsprechende Objekt in den Vordergrund rückt. Dabei müssen die Werte nicht unbedingt direkt aufeinanderfolgend verteilt werden.

<smil>
<head>
<layout>
<root-layout
  width="300" height="200" background-color="white" />
  <region id="region_1" left="50" top="50" width="150"
        height="125" z-index="2"/>
  <region id="region_2" left="25" top="25" width="100"
        height="100" z-index="1"/>
</layout>
</head>
<body>
<par>
<img src="bild1.gif" region="region_1" />
<img src="bild2.gif" region="region_2" />
</par>
</body>
</smil>

Synchronisieren verschiedener Sequenzen

Bereits im vorangegangenen Abschnitt haben wir stillschweigend das Element par verwendet. Es sorgt dafür, dass alle Objekte, die sich innerhalb des Containers befinden, parallel abgespielt bzw. angezeigt werden.

<par>
  <img src="grafik.gif" region="region_1" />
  <audio id="region_1" src="sound.mid">
</par>

Die Alternative zu diesem Container heißt seq. Mit dieser Einstellung sorgt der Player für eine sequentielle Reihenfolge der Objekte. Das bedeutet Sie werden nacheinander abgespielt.

<smil>
<head>
<layout>
  <root-layout width="300" height="200"
          background-color="white" />
  <region id="region_1" left="75" top="50"               
        width="32" height="32" />
  <region id="region_2" left="150" top="50"
        width="100" height="30" />
</layout>
</head>
<body>
<seq>
   <img src="bild1.gif"
        region="region_1" />
   <img src="bild2.gif"
        region="region_2" />
</seq>
</body>
</smil>

Eine sequentielle Abfolge von Bildern macht natürlich erst richtig Sinn, wenn Sie zusätzlich angeben können wie lange die einzelnen Objekte angezeigt werden sollen. Das geschieht über das Attribut dur.

<seq>
   <img src="bild1.gif"
        region="region_1"> dur="10s" />
   <img src="bild2.gif"
        region="region_2"> dur="5s" />
</seq>

Verschiedene Auflösungen

Sie haben bereits erfahren, dass die Bildschirmauflösung eine besondere Rolle für die Positionierung der Objekte spielt. Anders als bei HTML lässt sich bei grafischen Elementen nicht so leicht plattformenunabhängig programmieren. Aus diesem Grund lassen sich mit eigenen SMIL-Befehlen ganz leicht unterschiedliche Versionen erzeugen.

Mithilfe des Befehls switch wird eine Reihe von Alternativen angeboten, die dann entsprechend eines angegebenen Kriteriums ausgewählt werden. Im Beispiel wird das Attribut system-screen-size abgefragt. Je nach Auflösung wird eine andere Version angezeigt. Aus dem gesamten switch-Block wird immer nur eine Möglichkeit ausgewählt.

<body>
<switch>
<img src="800_600.gif" region="size"
      system-screen-size="800X600" />
<img src="1024_768.gif" region="size"
      system-screen-size="1024X768" />
<img src="standard.gif" region="size" />
</switch>

Wird kein Wert für das Attribut angegeben, dann wird dieses Objekt ausgewählt, sofern keine der genannten Auflösungen erkannt wurde.

Verschiedene Sprachversionen

Der switch-Mechanismus funktioniert nicht nur für die Wahl der richtigen Auflösung, sondern kann auch dazu genutzt werden verschiedene Sprachversionen zu unterscheiden.

<par>
<switch>
<text system-language="en"
      src="englisch.txt" region="region_1" / >

<text system-language="de"
      src="deutsch.txt" region="region_1" / >
</switch>
<switch>
<audio system-language="en"
       src="englisch.wav" region="region_1" / >
<audio system-language="de"
       src="deutsch.wav" region="region_1" / >
</switch>
</par>

Unterschiedliche Bandbreiten

Ein weiteres elementares Unterscheidungsmerkmal für verschiedene Versionen eines Dokuments sollte die zur Verfügung stehende Bandbreite sein. So kann problemlos ein und dieselbe Version als CD-ROM-Präsentation oder Internet-Angebot erstellt werden.

<switch>
<audio src="64000bps.wav" region="bitrate"
       system-bitrate="64000" />
<audio src="128000bps.wav" region="bitrate"
       system-bitrate="128000" />
<audio src="14000.txt" region="bitrate" />
</switch>

5.2.6 Vollständige Befehlsreferenz

Der erste Einstieg in SMIL ist Ihnen bisher sicherlich nicht schwer gefallen, die Sprache ist doch sehr ähnlich zur HTML-Syntax und arbeitet weitgehend mit »sprechenden« Befehlen und Elementen. Im folgenden Teil finden Sie eine komplette Befehlsreferenz aller definierten SMIL-Befehle und Attribute.

Die gebräuchlichsten Attribute

begin

Gibt den Startzeitpunkt eines Objekts in Verbindung mit anderen Elementen im gleichen Container an.

dur

Legt die Anzeige- oder Abspieldauer eines Objekts in Sekunden an.

end

Gibt explizit den Endzeitpunkt einer Einblendung an.

repeat

Gibt an wie oft ein beliebiges Objekt wiederholt werden soll.

system-bitrate

Unterscheidet die verschiedenen Verbindungsraten und Bandbreiten, die dem Anwender zur Verfügung stehen.

system-language

Hilft bei der Auswahl der gewünschten Sprachversion.

system-required

Gibt eine Dateiendung für eine benötigte Erweiterung an. Wenn beispielsweise der Computer des Besuchers keine Grafiken im PNG-Format anzeigen kann, könnte alternativ eine GIF-Grafik geliefert werden.

system-screen-size

Wird eingesetzt, um zwischen verschiedenen Bildschirmauflösungen unterscheiden zu können.

system-screen-depth

Gibt die verwendete Farbtiefe der Präsentation z.B. für einen switch-Block an.

Befehl

a

Bedeutung

Hyperlinks definieren

Beschreibung

Analog zum HTML-Befehl können Sie auch mit diesem SMIL-Element Hyperlinks erstellen. Hyperlinks dienen zum Beispiel dazu, um verschiedene Medienclips per Verknüpfung miteinander zu verbinden. Statt Text schließen Sie den Medienclip in den A-Container ein.

Parameter

href

Mit href übergeben Sie dem Befehl, genau wie in HTML, die Zieladresse des Hyperlinks.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

show

Das Attribut show gibt an wie das verknüpfte Dokument angezeigt werden soll. Dabei stehen drei Werte zur Verfügung:

new

Öffnet den Clip im Browser, während der RealPlayer im Hintergrund mit der Wiedergabe fortfährt.

pause

Öffnet den Clip im Browser und unterbricht den RealPlayer so lange.

replace

Öffnet den Clip im RealPlayer und ersetzt den eventuell aktuell laufenden Clip.

Beispiel

<a id="identifier"
   show="replace"
   href="URL">
</a>

<a href="http://www.microsoft.de/index.htm" show="new">
  <video src="video.rm" />
</a>

Befehl

Anchor

Bedeutung

Hotspot definieren

Beschreibung

Dieser Befehl ermöglicht es Ihnen einen Medien-Clip mit einer verweis-sensitiven Fläche (Hotspot) auszustatten.

Parameter

begin

Gibt die Wiedergabezeit an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

coords

Über coords bestimmen Sie die Koordinaten der verweis-sensitiven Fläche.

end

Gibt die Endzeit der Gruppe an. Dieser Wert bezieht sich relativ auf das Attribut begin. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

href

Mit href übergeben Sie dem Befehl, genau wie in HTML, die Zieladresse des Hyperlinks.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

show

Das Attribut show gibt an wie das verknüpfte Dokument angezeigt werden soll. Dabei stehen drei Werte zur Verfügung:

new

Öffnet den Clip im Browser, während der RealPlayer im Hintergrund mit der Wiedergabe fortfährt.

pause

Öffnet den Clip im Browser und unterbricht den RealPlayer so lange.

replace

Öffnet den Clip im RealPlayer und ersetzt den eventuell aktuell laufenden Clip.

Beispiel

<anchor id="identifier"
      show="replace"
      href="URL"
skip-content="false"
      coords="100,200,150,250"
      begin="10 s"
      end="2 h" />

<video src="vido.rm">
<anchor
      href="index.htm"
      show="pause"
      coords="10,20,30,40"/>
</video>

Befehl

Body

Bedeutung

Inhaltskörper eines SMIL-Dokuments festlegen

Beschreibung

Der Befehl body definiert den Inhalt des SMIL-Dokuments. Innerhalb der umschließenden body-Markups befindet sich der eigentliche Inhalt des Dokuments.

Beispiel

<smil>
<body>
</body>
</smil>

Befehl

Head

Bedeutung

Kopfinformationen eines SMIL-Dokuments

Beschreibung

In einem SMIL-Dokument können innerhalb des Dokumentenkopfes beispielsweise META-Informationen definiert werden. Der Befehl head umschließt die Kopfinformationen des Dokuments. Innerhalb des Kopfes dürfen die Befehle meta, layout und switch eingesetzt werden.

Parameter

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

Beispiel

<smil>
<head id="identifier">
</head>
<!-- Kopfinformationen -->
</head>
<body>
</body>
</smil>

Befehl

Img

Bedeutung

Wiedergabe einer Grafik

Beschreibung

Dieser Befehl (alternativ auch: image) erlaubt es eine Grafik in einem begrenzten Bereich des Fensters darzustellen.

Parameter

abstract

Geben Sie mithilfe dieses Attributs eine Kurzbeschreibung für die Gruppe an.

author

Über dieses Attribut lässt sich ein Autor für diese Mediengruppierung angeben.

begin

Gibt die Wiedergabezeit an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

copyright

Informationen über den Urheber und das Copyright lassen sich als Wert dieses Attributs übergeben.

dur

Gibt die Gesamtspielzeit der Gruppe an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

end

Gibt die Endzeit der Gruppe an. Dieser Wert bezieht sich relativ auf das Attribut begin. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

repeat

Wiederholt die gesamte Gruppe in der angegebenen Anzahl.

src

Gibt die Quelle des Medien-Clips oder der Grafik an. Als Wert wird hier eine gültige URL erwartet.

title

Gibt der gesamten Gruppe einen eindeutigen Titel mit einer Kurzbeschreibung des Inhalts.

Beispiel

<img id="identifier"
     src="URL"
     alt="string"
     region="identifier"
     title="string"
     abstract="string"
     author="string"
     copyright="string"
     longdesc="string"
     type="string"
     begin="clock-value"
     end="clock-value"
     dur="clock-value"
     repeat="integer"
     fill="remove|freeze"
     system-bitrate="integer"
     system-captions="on|off"
     system-language="coma-separated-list"
     system-overdub-or-caption="caption|overdub"
     system-required="string"
     system-screen-depth="integer"
     system-screen-size="integerXinteger" />

Befehl

layout

Bedeutung

Layout spezifizieren

Beschreibung

Der Befehl layout wird eingesetzt, um das Aussehen der Seite näher zu bestimmen. layout muss grundsätzlich im Kopf des Dokuments eingesetzt werden.

Parameter

type

Gibt den Datentyp an, in dem das Layout erstellt ist.

Beispiel

<layout>
<root-layout/>
<region id="video" top="10" left="10"
  width="100" height="100"/>
</layout>

<layout type="string">
</layout>

<!-- Voreinstellung: -->
<layout type="text/smil-basic-layout" />
</layout>

Befehl

meta

Bedeutung

Zusätzliche Informationen über das Dokument angeben

Beschreibung

Über die meta-Tags können innerhalb des SMIL-Dokuments weitere META-Informationen zum Inhalt angegeben werden. Zu diesen Informationen gehört etwa der Name des Autors oder Copyright-Bestimmungen.

Der meta-Befehl wird innerhalb des Dokumentenkopfes eingesetzt. Zwei Attribute müssen dem Befehl übergeben werden. Neben dem Attribut name, das einen der festgelegten Werte annehmen kann, muss über content der Inhalt des Metatag angegeben werden.

Parameter

content

Dieses Attribut kann einen beliebigen Wert annehmen und enthält den Inhalt des Metatag. Beispielsweise den Namen des Autors oder eine Kurzbeschreibung der Seite.

name

Das Attribut name bestimmt welche Informationen Sie mit content übergeben. name kann folgende Werte annehmen:

abstract

Eine Kurzbeschreibung des Inhalts der Seite.

author

Der Autor dieses Dokuments.

base

Die Basis-URL für alle Multimedia-Clips.

copyright

Informationen zum Urheber und Copyright.

title

Gibt der Präsentation einen eindeutigen und beschreibenden Titel.

Beispiel

<meta name="title" content="XML Referenz"/>
<meta name="author" content="Gunter Wielage"/>
<meta name="copyright" content="(c) 2000 M&T Verlag"/>
<meta name="base" content="http://www.wielage.de"/>

<meta name="title"
  content="Inhalt"
  skip-content="true" />

Befehl

par

Bedeutung

Sequenzen zu einer Gruppe zusammenfassen

Beschreibung

Indem Sie mehrere Multimedia-Sequenzen zu einer Gruppe zusammenfassen, können Sie dafür sorgen, dass diese parallel abgespielt werden.

Für die Grundfunktion der Zusammenfassung zu einer Gruppe sind keine weiteren Attribute notwendig.

Parameter

abstract

Geben Sie mithilfe dieses Attributs eine Kurzbeschreibung für die Gruppe an.

author

Über dieses Attribut lässt sich ein Autor für diese Mediengruppierung angeben.

begin

Gibt die Wiedergabezeit an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

copyright

Informationen über den Urheber und das Copyright lassen sich als Wert dieses Attributs übergeben.

dur

Gibt die Gesamtspielzeit der Gruppe an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

end

Gibt die Endzeit der Gruppe an. Dieser Wert bezieht sich relativ auf das Attribut begin. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden. Verwenden Sie end nicht im Zusammenhang mit endsync.

endsync

Gibt die Endzeit der gesamten Gruppe in Bezug auf die Verarbeitung der einzelnen Clips an. Drei Werte sind für dieses Attribut möglich:

first

Sobald der erste Clip beendet ist, werden alle anderen Sequenzen auch gleichzeitig beendet.

last

Die gesamte Sequenz wird erst beendet, wenn der letzte Clip vollständig wiedergegeben ist.

id

Beendet die gesamte Gruppe, wenn der durch id spezifizierte Clip vollständig wiedergegeben ist.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

repeat

Wiederholt die gesamte Gruppe in der angegebenen Anzahl.

title

Gibt der gesamten Gruppe einen eindeutigen Titel mit einer Kurzbeschreibung des Inhalts.

Beispiel

<par repeat="2" begin="5s">
  <video src="video.avi">
  <textstream id="text" src="untertitel.rt">
</par>

Befehl

region

Bedeutung

Rechteck innerhalb des Fensters definieren

Beschreibung

Mit region definieren Sie innerhalb des Hauptfensters einen abgetrennten rechteckigen Bereich.

Dieser Befehl muss immer innerhalb eines layout-Containers eingesetzt werden.

Parameter

background-color

Legt die Hintergrundfarbe des definierten Bereichs fest.

fit

Gibt an wie sich die Größe des eingebundenen Clips verändern soll, wenn Clip und Region nicht die gleichen Abmessungen haben.

Vier Werte sind für dieses Attribut möglich: fill, hidden, meet, slice.

height

Über das Attribut height geben Sie die Höhe der begrenzten Region an.

id

Legt eine eindeutige Bezeichnung für diese Region fest.

left

Gibt den Abstand der Region zum linken Rand an.

top

Gibt den Abstand der Region zum oberen Rand des Fensters an.

width

Über das Attribut width geben Sie die Breite der begrenzten Region an.

z-index

Definiert den Platz dieser Region in der Reihenfolge der überlappenden Regionen.

Beispiel

<layout>
  <root-layout/>
  <region id="video" top="10" left="10"
width="100" height="100"/>
</layout>

<region
  id="identifier"
  left="integer"
  top="integer"
  z-index="integer"
  width="integer"
  height="integer"
  title="string"
  fit="fill "
  skip-content="true" />

Befehl

root-layout

Bedeutung

Fenstergröße festlegen

Beschreibung

Mithilfe des root-layout lassen sich die Eigenschaften des Fensters wie beispielsweise Breite, Höhe und Titel angeben.

Dieser Befehl muss immer innerhalb des layout-Containers zu finden sein.

Parameter

background-color

Legt die Hintergrundfarbe fest. Der Wert kann als Farbbezeichnung oder Hexadezimalzahl übergeben werden.

height

Gibt die Höhe der Wiedergabefläche in Pixeln an.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

width

Gibt die Breite der Wiedergabefläche in Pixeln an.

Beispiel

<root-layout
  id="identifier"
  width="integer"
  height="integer"
  title="string"
  skip-content="true" />

Befehl

seq

Bedeutung

Clips sequentiell abspielen

Beschreibung

Alle Medienclips, die sich innerhalb des seq-Containers befinden, werden nacheinander (sequentiell) abgespielt. Alternativ können Sie den Befehl par verwenden, um Clips parallel wiederzugeben.

Parameter

abstract

Eine Kurzbeschreibung des Inhalts des Elements.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

author

Über dieses Attribut lässt sich ein Autor für diese Mediengruppierung angeben.

copyright

Informationen über den Urheber und das Copyright lassen sich als Wert dieses Attributs übergeben.

dur

Gibt die Gesamtspielzeit der Gruppe an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

end

Gibt die Endzeit der Gruppe an. Dieser Wert bezieht sich relativ auf das Attribut begin. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

repeat

Wiederholt die gesamte Gruppe in der angegebenen Anzahl.

title

Gibt der gesamten Gruppe einen eindeutigen Titel mit einer Kurzbeschreibung des Inhalts.

Beispiel

<seq id="identifier"
     title="string"
     abstract="string"
     author="string"
     copyright="string"
     begin="clock-value"
     end="clock-value"
     dur="clock-value"
     repeat="integer"
     system-bitrate="integer"
     system-captions="on|off"
     system-language="coma-separated-list"
     system-overdub-or-captions="captions|overdub"
     system-required="string"
     system-screen-depth="integer"
     system-screen-size="integerXinteger" />

Befehl

Smil

Bedeutung

Grundstruktur eines SMIL-Dokuments

Beschreibung

Ähnlich wie bei HTML ist smil das umschließende Markup, dass das gesamte Dokument umschließt. Mit dem umschließenden smil-Tag beginnt jedes smil-Dokument. Innerhalb des Dokuments sind zwei weitere Unterteilungen möglich: der Kopf (head) und der eigentliche Dokumentenkörper (body).

Ein SMIL-Dokument (Synchronized Multimedia Integration Language) wird mit diesem Befehl eingeleitet und mit dem End-Tag abgeschlossen.

Beispiel

<smil>
  <head>
  <!-- Kopfinformationen -->
  <layout> ... </layout>
  </head>

  <body>
  </body>
</smil>

Befehl

switch

Bedeutung

Ausgewählte Medienclips abspielen

Beschreibung

Dieser Befehl ist dafür gedacht, automatisch einen aus mehreren Medienclips auszuwählen und abzuspielen. Die Auswahl könnte zum Beispiel nach unterschiedlichen Landessprachen oder verfügbaren Bandbreiten erfolgen.

Parameter

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

title

Gibt der gesamten Gruppe einen eindeutigen Titel mit einer Kurzbeschreibung des Inhalts.

Beispiel

<switch id="identifier"
        title="string">
</switch>

Befehl

text

Bedeutung

Darstellen eines Textes

Beschreibung

Dieser Befehl erlaubt es einen Text in einem begrenzten Bereich des Fensters darzustellen.

Parameter

abstract

Geben Sie mithilfe dieses Attributs eine Kurzbeschreibung für die Gruppe an.

author

Über dieses Attribut lässt sich ein Autor für diese Mediengruppierung angeben.

begin

Gibt die Wiedergabezeit an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

copyright

Informationen über den Urheber und das Copyright lassen sich als Wert dieses Attributs übergeben.

dur

Gibt die Gesamtspielzeit der Gruppe an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

end

Gibt die Endzeit der Gruppe an. Dieser Wert bezieht sich relativ auf das Attribut begin. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

repeat

Wiederholt die gesamte Gruppe in der angegebenen Anzahl.

src

Gibt die Quelle des Medien-Clips oder der Grafik an. Als Wert wird hier eine gültige URL erwartet.

title

Gibt der gesamten Gruppe einen eindeutigen Titel mit einer Kurzbeschreibung des Inhalts.

Beispiel

<text id="identifier"
     src="URL"
     alt="string"
     region="identifier"
     title="string"
     abstract="string"
     author="string"
     copyright="string"
     longdesc="string"
     type="string"
     begin="clock-value"
     end="clock-value"
     dur="clock-value"
     repeat="integer"
     fill="remove|freeze"
     system-bitrate="integer"
     system-captions="on|off"
     system-language="coma-separated-list"
     system-overdub-or-caption="caption|overdub"
     system-required="string"
     system-screen-depth="integer"
     system-screen-size="integerXinteger" />

Befehl

video

Bedeutung

Wiedergabe einer Videosequenz

Beschreibung

Dieser Befehl erlaubt es eine Grafik in einem begrenzten Bereich des Fensters darzustellen.

Parameter

abstract

Geben Sie mithilfe dieses Attributs eine Kurzbeschreibung für die Gruppe an.

author

Über dieses Attribut lässt sich ein Autor für diese Mediengruppierung angeben.

begin

Gibt die Wiedergabezeit an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

copyright

Informationen über den Urheber und das Copyright lassen sich als Wert dieses Attributs übergeben.

dur

Gibt die Gesamtspielzeit der Gruppe an. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

end

Gibt die Endzeit der Gruppe an. Dieser Wert bezieht sich relativ auf das Attribut begin. Sie können als Einheit die Bezeichnungen h, min, s oder ms verwenden.

id

Über das Attribut id wird das Element mit einer für das Dokument eindeutigen Kennzeichnung versehen. Über diese id lässt sich von anderen Elementen auf diesen Bereich zugreifen.

repeat

Wiederholt die gesamte Gruppe in der angegebenen Anzahl.

src

Gibt die Quelle des Medien-Clips oder der Grafik an. Als Wert wird hier eine gültige URL erwartet.

title

Gibt der gesamten Gruppe einen eindeutigen Titel mit einer Kurzbeschreibung des Inhalts.

Beispiel

<video id="identifier"
       src="URL"
       alt="string"
       region="identifier"
       title="string"
       abstract="string"
       author="string"
       copyright="string"
       longdesc="string"
       type="string"
       begin="clock-value"
       end="clock-value"
       dur="clock-value"
       clip-begin="clock-value"
       clip-end="clock-value"
       repeat="integer"
       fill="remove|freeze"
       system-bitrate="integer"
       system-captions="on|off"
       system-language="coma-separated-list"
       system-overdub-or-caption="caption|overdub"
       system-required="string"
       system-screen-depth="integer"
       system-screen-size="integerXinteger" />

5.3 Wireless Markup Language (WML)

Im Mobilfunkbereich ist in letzter Zeit vor allem ein Begriff zum absoluten Trend avanciert: WAP. Das so genannte Wireless Application Protocol ermöglicht es auf Handys und anderen mobilen Geräten Webinformationen zu verarbeiten. Bereits ein Großteil der Handyhersteller hat angekündigt den Standard noch in Kürze zu unterstützen und entsprechende Mobiltelefone herauszugeben.

WAP ist vor allem dazu gedacht, um mit kleinen Mobilgeräten direkt im Internet surfen zu können. Dabei muss man auf die meisten Vorzüge des Netzes nicht verzichten: Fahrpläne können ebenso abgerufen werden, wie Online-Bestellungen oder Bankaufträge übermittelt werden.

Abb. 5.14: Motorola WAP-Mobiltelefon Timeport (Quelle: Motorola GmbH)

Der neue Standard wurde notwendig, um eine an die extrem kleinen und in der Regel monochromen Displays der Mobiltelefone angepasste Schnittstelle zum Internet zu schaffen. Im Grunde genommen handelt es sich also um eine abgespeckte Version der bekannten Protokolle, speziell zugeschnitten auf geringere Bandbreiten und mangelnde technische Ausstattung.

Dieses neue Protokoll zur Übertragung von Daten macht zudem aber auch eine neue Textauszeichnungssprache notwendig. Eine Sprache, die speziell auf die Bedürfnisse und Gegebenheiten des mobilen Netsurfens ausgerichtet ist.

Abb. 5.15: www.phone.com ist einer der Vorreiter bei der Entwicklung von WML-Browsern

Was liegt näher, als diese neue Alternative zu HTML auf XML basierend zu definieren? Die so genannte Wireless Markup Language (WML) wurde entwickelt und ist heute mit der Version 1.1 weitgehend standardisiert und wird von den meisten WAP-Handys entsprechend unterstützt.

Abb. 5.16: Der WML-Browser(Simulation) von www.phone.com

Es existieren inzwischen einige Entwicklungsumgebungen speziell für die Erstellung von WML-Dokumenten. Die beiden bekanntesten von den Mobilfunkherstellern Ericsson und Nokia erhalten Sie auf den folgenden Webseiten:

Ericsson-Toolkit

www.ericsson.com/wap/developer/

Nokia WAP Toolkit

www.forum.nokia.com/developers/wap/

Abb. 5.17: Das Nokia Entwicklerforum

5.3.1 Einführung in WML

Im folgenden Abschnitt finden Sie alle bisher deklarierten WML-Befehle in alphabetischer Reihenfolge aufgelistet. Noch wird dieser Standard nicht in allen Details von den Handy- und Browserherstellern unterstützt. Daher sind einige Befehle nicht immer verfügbar. Da das W3C diese Befehle in Zusammenarbeit mit dem WAP-Forum aber so verabschiedet hat, sind größere Änderungen nicht mehr zu erwarten.

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC
  "-//WAPFORUM//DTD WML 1.1//EN"
  "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="karte1" title="erste Karte">
<p>
Hello World!
</p>
</card>
</wml>

Jedes WML-Dokument besteht aus einem so genannten Stapel (engl. deck) als übergeordnete Einheit. Jeder Stapel enthält als weitere Untereinheit einzelne Karten (engl. cards). Angepasst an das kleine Display eines Mobilfunkgeräts ist eine solche Karte die kleinste Informationseinheit. Damit nicht für jede Displayseite ein neues Dokument angefordert werden muss, hat man einzelne Karten zu einem Dokument zusammengefasst, die nacheinander abgerufen werden können.

5.3.2 Die wichtigsten Kommandos im Überblick

Befehl

a

Bedeutung

Ganz analog zum HTML-Befehl wird mit a ein Anker für einen Verweis (Hyperlink) gelegt. Die Langform dieses Befehls lautet anchor.

Parameter

href

Gibt die URL der Verknüpfung an.

title

Optional sollte jedem Link ein Titel hinzugefügt werden.

Beispiel

<a href="www.wap.de/index.wap" title="label">
Text oder Grafik
</a>

Befehl

access

Bedeutung

Das access-Element ermöglich den Zugriff auf ein WML-Deck. Jedes Deck kann maximal eine access-Anweisung enthalten.

Beispiel

<head>
<access domain="domain" path="path"/>
...
</head>

Befehl

anchor

Bedeutung

Der Befehl anchor gilt alternativ zum Element a und definiert einen Link auf eine andere Information.

Parameter

title

Geben Sie im Titel des Link weitere Informationen oder eine eindeutige Zuordnung der Verknüpfung an.

Beispiel

<wml>
<card>
<p>
<a title="Link1"><go href="seite1.wml"/>Seite 1</a><br/>
<a title="Link2"><go href="seite2.wml"/>Seite 2</a>
</p>
</card>
</wml>

Befehl

b

Bedeutung

Mithilfe des Markups b lässt sich wie in HTML ein Text in Fettschrift darstellen. Nicht alle Browser unterstützen diese Funktion schon.

Beispiel

<wml>
<card>
<p>
Drücken Sie <b>OK</b> um zur nächsten Seite zu gelangen.
</p>
</card>
</wml>

Befehl

Big

Bedeutung

Stellt den markierten Text in besonders großer Schrift dar.

Beispiel

<big>text</big>

Befehl

Br

Bedeutung

Erzeugt einen manuellen Zeilenumbruch an der angegebenen Position in Text.

Beispiel

Erste Zeile
<br/>
Zweite Zeile

Befehl

Card

Bedeutung

Definiert eine von mehreren möglichen Karten, die einem Deck (Stapel) zugeordnet werden können.

Parameter

id

Legt eine eindeutige Kennung für die Karte fest. Da jedes Deck in der Regel aus mehreren Karten besteht ist dieses Attribut besonders wichtig.

newcontext

Gibt an, wann der zugehörige Kontext aktualisiert werden soll. Alternativ lassen sich hier die Werte true oder false einsetzen.

onenterbackward

Wird diese Karte über einen prev-Task erreicht, dann sollte hier die URL angegeben werden, zu der der Anwender zurückgeleitet werden soll.

onenterforward

Wird diese Karte über einen go-Task erreicht, dann kann hier eine URL für die Folgeseite angegeben werden.

ordered

Gibt an in welcher Weise der Karteninhalt sortiert werden soll. Übergeben Sie den Wert true, wenn der Inhalt in fester Reihenfolge angezeigt werden soll. Andernfalls geben Sie false an.

title

Geben Sie über das title-Element einen Titel für die Karte an.

Beispiel

<wml>
<card id="name" title="label"
  newcontext="true"
    ordered="true"
  onenterforward="url"
  onenterbackward="url"
  ontimer="url">
  content
</card>
</wml>

Befehl

do

Bedeutung

Das do-Element verknüpft einen Task mit einer Eingabemöglichkeit durch den Anwender (z.B. eine Funktionstaste).

Parameter

label

Gibt eine Bezeichnung für die angegebene Funktionstaste an. Voreingestellt ist z.B. für type="accept" die Ausgabe "OK".

name

Gibt einen eindeutigen Namen für den do-Task an.

optional

Gibt an, ob das Ausgabegerät diesen Task ignorieren darf (optional="true") oder nicht (optional="false").

type

Gibt das Eingabeelement (Funktionstaste) an, das die spezielle Funktion auslöst. Folgende Typen sind definiert, werden aber nicht von allen Browsern unterstützt:

accept

OK-Taste

delete

Löschen-Taste

help

Hilfe-Taste

options

Taste Einstellungen

prev

Zurück-Taste

reset

Reset-Taste

Beispiel

<do type="accept">
   <go href="/foo"/>
   <img src="img" localsrc="OK" alt="OK"/>
</do>

Befehl

em

Bedeutung

Der so eingeschlossene Text wird besonders hervorgehoben dargestellt.

Beispiel

<em>text</em>

Befehl

fieldset

Bedeutung

Dieses Element erlaubt es mehrere Text- oder Eingabeelemente zu einer Gruppe zusammenzufassen.

Parameter

title

Gibt der gesamten Eingabegruppe einen gemeinsamen Titel.

Beispiel

<fieldset title="label">
Inhalt
</fieldset>

Befehl

go

Bedeutung

Dieses Element weist den Browser an, eine bestimmte URL zu laden.

Parameter

accept-charset

Gibt an, welche Zeichen zur Eingabe verwendet werden dürfen.

href

Gibt die Adresse der URL an, die geöffnet werden soll.

method

Unterscheidet zwischen den beiden Übertragungsarten get und post.

Beispiel

<wml>
<card title="Adressen" ordered="true">
<do type="accept" label="Suchen">
<go method="post" href="?next=list"
<postfield name="next" value="list&amp"/>
<postfield name="N" value="$last"/>
<postfield name="V" value="$first"/>
</go>
</do>
Vorname:
<input title="Vorname" name="first"/>
Nachname:
<input title="Nachname" name="last"/>
</card>
</wml>

Befehl

Head

Bedeutung

Mit diesem Markup wird der Kopf eines WML-Dokuments markiert. Er kann beispielsweise Metainformationen enthalten.

Beispiel

<wml>
<head>
<meta
  http-equiv="Cache-Control"
  content="max-age=3600"
  forua="true"/>
</head>
<card>
    ...
    ...
</card>
<card>
    ...
    ...
</card>
</wml>

Befehl

I

Bedeutung

Wählt eine kursive Schrift für den markierten Textbereich.

Beispiel

<wml>
<card>
<p>
<i>Rot</i>
<i>Blau</i>
und
<i>Gelb</i> sind Grundfarben.
</p>
</card>
</wml>

Befehl

Img

Bedeutung

Mithilfe dieses Elements lässt sich eine Grafik in die Seite einfügen. Allerdings kann nicht jedes Handy Bilder anzeigen. Eine Liste von vordefinierten Icons hilft dabei Übertragungszeit zu sparen.

Parameter

align

Gibt die Ausrichtung des Bildes in Verbindung mit dem Text an. Mögliche Ausrichtungen sind: top, middle oder bottom.

alt

Enthält eine alternative Textbeschreibung für das Bild, speziell für Endgeräte, die keine grafikfähigen Displays besitzen.

localsrc

Greift auf eine lokale Ressource an Icons zurück. Geben Sie entsprechend der unten abgebildeten Liste eine Bezeichnung für das Bild an.

src

Gibt die URL für die einzubindende Grafikressource an.

Beispiel

<wml>
<card>
<p>
Hier ist ein Geldschein ...
</p>
<br/>
<img alt="Dollars ..." localsrc="dollar" src=""/>
</card>
</wml>

Abb. 5.18: Übersicht über die voreingestellten Icons (Quelle: www.phone.com)

Befehl

Noop

Bedeutung

Dieses Task-Element weist den Browser an, ohne Aktivität abzuwarten.

Beispiel

<noop/>

Befehl

Onevent

Bedeutung

Verbindet eine Funktion mit einem bestimmten Ereignis.

Parameter

type

Vier verschiedene Ereignistypen stehen zur Auswahl:

onpick

Der Anwender hat das entsprechende Element aktiviert oder ausgewählt.

ontimer

Die im timer-Element angegebene Zeit ist verstrichen.

onenterbackward

Der Anwender aktiviert den prev-Task.

onenterforward

Der Anwender drück die go-Taste.

Beispiel

<onevent type="type">
Funktionen ...
</onevent>

Befehl

Option

Bedeutung

Mit diesem Element richten Sie ein Auswahlfeld ein. Der Anwender kann zwischen den angebotenen Alternativen auswählen.

Parameter

onpick

Mithilfe dieses Attributs lässt sich eine URL angeben, die angezeigt wird, sobald der Besucher seine Auswahl getroffen hat.

title

Gibt eine eindeutige Bezeichnung für dieses Element an.

value

Enthält den Wert, der zum Server übertragen wird, wenn das entsprechende Element ausgewählt wird.

Beispiel

<wml>
<card>
<p>
Wählen Sie Ihre Lieblingsfarbe:
<select name="color">
<option value="1">Rot</option>
<option value="2">Blau</option>
<option value="3">Grün</option>
<option value="4">Gelb</option>
</select>
</p>
</card>
</wml>

Befehl

p

Bedeutung

Kennzeichnet einen Absatz. Mit dem Attribut mode kann der Zeilenumbruch variiert werden.

Parameter

align

Bestimmt die Ausrichtung des Absatzes. Gültige Werte sind left, right oder center.

mode

Gibt den Modus für den Zeilenumbruch an. Der voreingestellte Wert wrap aktiviert den automatischen Zeilenumbruch. Mit nowrap wird der Zeilenumbruch deaktiviert. Der Anwender muss dann eventuell zur Seite scrollen.

Beispiel

<p align="alignment" mode="wrapmode">
Hello World!
</p>

Befehl

postfield

Bedeutung

Nachdem eine go-Anfrage ausgeführt wurde, werden die in postfield angegebenen Daten zum Server übertragen.

Parameter

name

Der Name gibt eine eindeutige Identifikation für das Element an.

value

Diese Variable enthält den Wert, der dem Server übergeben wird.

Beispiel

<postfield name="name" value="value"/>

Befehl

prev

Bedeutung

Das prev-Element weist den Browser an, das aktuelle Dokument gegen die folgende Seite auszutauschen.

Beispiel

<wml>
<card>
<do type="accept" label="Back">
<prev/>
</do>
<p>
Hello World!
</p>
</card>
</wml>

Befehl

refresh

Bedeutung

Weist den Browser an, bestimmte Variablen neu zu initialisieren.

Beispiel

<refresh>
<setvar name="erster" value=""/>
<setvar name="zweiter" value=""/>
</refresh>

Befehl

select

Bedeutung

Stellt eine formatierte Auswahlliste zur Verfügung, aus der der Anwender eine oder mehrere Optionen auswählen kann.

Parameter

default

Bezeichnet den voreingestellten Auswahlwert.

mutiple

Aktiviert eine Mehrfachauswahl.

name

Bezeichnet einen eindeutigen Namen für dieses Element.

title

Wird als kurzer Titel zu diesem Element im Display angezeigt.

Beispiel

<wml>
<card>
<p>
Bitte wählen Sie Ihre Lieblingsfarbe:
<select multiple="true" name="x" iname="i" ivalue="1;2">
<option value="R">Rot</option>
<option value="G">Gelb</option>
<option value="B">Blau</option>
</select>
</p>
<do type="accept"><noop/></do>
</card>
</wml>

Befehl

Setvar

Bedeutung

Gibt einer Variablen einen bestimmten Wert, sobald ein Task ausgelöst wird.

Parameter

name

Als Wert müssen Sie hier den Namen der Variablen übergeben.

value

Dieses Attribut enthält den Wert, den Sie der Variablen zuweisen möchten.

Beispiel

<setvar name="name" value="value"/>

Befehl

Small

Bedeutung

Der markierte Text wird in kleiner Schrift dargestellt.

Beispiel

<small>text</small>

Befehl

Strong

Bedeutung

Der angegebene Text wird stark hervorgehoben dargestellt.

Beispiel

<strong>text</strong>

Befehl

Table

Bedeutung

Definiert eine Ausgabe der Daten in Tabellenform. Die Konstruktion einer Tabelle funktioniert fast analog zur bekannten Schreibweise in HTML.

Parameter

align

Legt die Ausrichtung der Tabelle fest. Drei mögliche Werte können übergeben werden: left, right oder center

columns

Gibt die Anzahl der Spalten der Tabelle an.

title

Mithilfe dieses Attributs legen Sie einen Titel oder eine Tabellenüberschrift fest.

Beispiel

<wml>
<card>
<table columns="3">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</table>
</card>
</wml>

Befehl

td

Bedeutung

Legt eine einzelne Zelle in der Tabelle fest.

Beispiel

<td>1</td>
<td>2</td>
<td>3</td>

Befehl

tr

Bedeutung

Gibt eine Zeile in der Tabelle an.

Beispiel

<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>

Befehl

template

Bedeutung

Gibt eine Vorlage für eine bestimmte Karte an.

Parameter

onenterbackward

Wird diese Karte über einen prev-Task erreicht, dann sollte hier die URL angegeben werden, zu der der Anwender zurückgeleitet werden soll.

onenterforward

Wird diese Karte über einen go-Task erreicht, dann kann hier eine URL für die Folgeseite angegeben werden.

ontimer

Gibt die URL an, die geöffnet werden soll, wenn die im Element timer angegebene Zeit verstrichen ist.

Beispiel

<wml>
<template
  onenterforward="url"
  onenterbackward="url"
  ontimer="url">

Hier steht der Text ...
</template>
</wml>

Befehl

timer

Bedeutung

Nach der angegeben Zeitspanne wechselt das Dokument automatisch zur nächsten Information. Der Anwender kann diesen Timer durch eine Eingabe jederzeit unterbrechen.

Parameter

name

Gibt einen Namen für die Variable an, in der der Timer die Zeitspanne speichern soll.

value

Gibt einen Wert in Sekunden für die Wartezeit an.

Beispiel

<wml>
<card ontimer="#card2">
<timer name="time" value="10"/>
<p>
Hello World (1)!
</p>
</card>

<card id="card2">
<p>
Hello World (2)!
</p>
</card>
</wml>

Befehl

u

Bedeutung

Unterstreicht den markierten Text. Dieser Befehl wird von den meisten Browsern noch nicht unterstützt.

Beispiel

<u>text</u>

Befehl

wml

Bedeutung

Mit diesem umschließenden Markup wird das gesamte WML-Dokument definiert. Optional kann über xml:lang die verwendete Sprache mit angegeben werden.

Parameter

xml:lang

Gibt nach XML-Standard die Sprachversion des Dokuments an.

Beispiel

<wml xml:lang="lang">
<card>
Inhalt
</card>
</wml>

5.4 XML und EDI

Gerade im Bereich Electronic Commerce macht XML von sich reden: dabei taucht häufig der Zusammenhang XML und EDI auf. EDI (electronic data interchange) hat sich in den letzten Jahren als Standard für den Austausch von Geschäftsdaten etabliert. Dabei werden beispielsweise Kundendaten oder Artikelbewegungen über EDI abgewickelt. Dabei war vor allem die einheitliche Schnittstelle der große Vorteil von EDI. Sowohl Hersteller als auch Kunden konnten das System einsetzen und so problemlos Daten austauschen.

Einziger Nachteil von EDI war bisher der relativ hohe Preis. An dieser Stelle setzt XML an. Der offen zugängliche und frei verfügbare Standard ersetzt bereits erste EDI-Lösungen oder ergänzt sie. Anwender, die sich für den elektronischen Austausch von Geschäftsdaten interessieren, werden jetzt vor die Wahl gestellt sich für EDI oder XML zu entscheiden.

Es muss aber auch Lösungen geben, um mit XML Anschluss an bereits bestehende EDI-Lösungen zu erhalten. Eine solche Lösung bietet beispielsweise die deutsche Firma stratEDI an. Hier setzt man auf die Kombination von XML und EDI und nutzt bestehende Infrastrukturen in Verbindung mit verbreiteten Internet-Technologien.

Abb. 5.19: XML und EDI - Die Technik (Quelle: www.stratedi.de)

Da EDI vor allem bei sehr großen Geschäftspartnern eingesetzt wird, kann der elektronische Datenaustausch mit einer preiswerteren Lösung auch für kleinere Partner umgesetzt werden. Ein einziges Format verbindet zentral alle Geschäftsabläufe, bindet hier alle Teilnehmer entweder mit einer EDI oder XML-Lösung an.

5.4.1 eCatalog Suite

Die Firma POET hat mit der so genannten eCatalog Suite ein Szenario einer XML-Anwendung für diesen Bereich geschaffen, den wir Ihnen kurz vorstellen möchten, um eine Idee für den Einsatz von XML im Geschäftsalltag zu bekommen.

Folgendes Problem ist gegeben: Ein Hersteller möchte an Kunden individuell abgestimmte Produktkataloge herausgeben. Diese Kataloge sollen in elektronischer Form erstellt werden und über eine entsprechende Schnittstelle verfügen, damit der Kunde die aktuellen Daten ohne Konvertierung in die eigene Artikelverwaltung übernehmen kann.

Hier setzt die eCatalog Suite an: Als einheitliches Datenformat für die Weitergabe der Kataloge wurde XML gewählt. Diese Kataloge lassen sich problemlos über das Internet versenden. Auf Käuferseite werden diese XML-Produktlisten sofort weiterverarbeitet. Aktuelle Produktinformationen, Preise und Verfügbarkeiten sind so immer auf dem aktuellsten Stand.

Auf Verkäuferseite werden zusätzlich so genannte Kundenprofile angelegt, so kann jeder Katalog individuell erstellt werden. Und ein Kunde, der sich nur für eine bestimmte Produktgruppe interessiert, kann auch nur diesen Teilbereich erhalten. Zusätzlich können selbstverständlich angepasste Verkaufspreise mit integriert werden.

Auf Verkäuferseite werden die Katalogdaten zunächst aus bestehenden Applikationen importiert und dann mit der Software weiterverarbeitet. Auf Knopfdruck werden aus dem gespeicherten Kundenprofil entsprechende Produktkataloge erstellt und in das XML-Format umgesetzt. Diese fertigen Kataloge werden automatisch über das Internet an den Kunden weitergeleitet. Der Käufer nimmt seine individuellen Daten in Empfang und arbeitet diese in wenigen Schritten in die hauseigene EDV ein.

Abb. 5.20: Die eCatalog Suite (Quelle: Poet Software)

Eine Weiterführung dieses Szenarios sieht die komplette Auftragsverfolgung auf Seiten des Kunden vor. Der Kunde kann per XML-Schnittstelle schon vor der Bestellung die Verfügbarkeit und Preise der Waren überprüfen. Dann generiert seine Software eine Bestellung wiederum im XML-Format. Nach dem Versand dieser Bestellung wird diese automatisch vom Hersteller verarbeitet und eine Auftragsbestätigung generiert, die wiederum beim Käufer elektronisch verarbeitet wird. Im besten Fall kann der Kunde zusätzlich ständig aktuell den Stand seiner Bestellung per Tracking-System verfolgen.

Onlinefähige Formate machen zudem den nächsten Schritt in Richtung Online-Shopping erheblich einfacher. Schon jetzt existieren erste Programme, die XML-Artikelkataloge in elektronische Shopping-Lösungen umsetzen. Ganz getreu dem XML-Motto: Ein Datenformat für alle Geschäftsanwendungen.

5.5 Chemical Markup Language (CML)

Die Chemical Markup Language (CML) ist eine Anwendung der XML-Definition. Sie ist spezialisiert darauf komplizierte chemische Zusammenhänge darzustellen und zwei- und dreidimensionale molekulare Strukturen grafisch anzuzeigen.

Eine komplette Definition der CML finden Sie unter:

http://www.venus.co.uk

Abb. 5.21: Die 2D- und 3D-Darstellung ist eine der Stärken der CML.

Die Befehle der CMD:

<ARRAY>

Das Element nimmt zwei- und dreidimensionale Zahlenfelder, wie sie beispielsweise in Messreihen auftauchen, auf.

<ATOMS>

Der Befehl markiert einzelne Atome oder molekulare Strukturen.

<CML>

Das umschließende Wurzelelement eines CML-Dokuments.

<FORMULA>

Chemische Formeln werden mithilfe des <FORMULA>-Elements dargestellt.

<MOL>

Diese Auszeichnung stellt ein Molekül dar.

<XADDR>

Markiert die Adresse des Autors eines Dokuments.

Abb. 5.22: Das folgende Beispiel als Grafik dargestellt.

<!DOCTYPE CML PUBLIC "-//CML//DTD CML//EN">
<CML>
<MOL TITLE="ADENOSINE" CONVENTION="MDL">
<ATOMS>
<ARRAY BUILTIN="X2">
0.7046 -0.6918 0.8207 1.6929 -0.6918 -1.9636 -0.5113 1.985 0.825 -2.0194 -3.3814 -
0.1719 1.3878 3.5061 -3.3772 -1.985 -1.2546 2.1655 -0.6273
</ARRAY>
<ARRAY BUILTIN="Y2">
1.0956 1.5597 -0.3566 2.2514 3.0635 0.7218 -1.13 -1.3363 3.5447 3.824 1.4351 -
2.578 -2.7627 -0.9753 3.0033 5.3321 -3.6607 -4.1119 -4.997
</ARRAY>
<ARRAY BUILTIN="ELSYM">
N C C C C N O C N C C C C O N N C O O
</ARRAY>
<ARRAY BUILTIN="FORMCHARGE">
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
</ARRAY>
</ATOMS>
<BONDS>
<ARRAY BUILTIN="ATID1">
1 3 1 2 2 3 3 4 5 6 7 8 8 10 10 12 13 17 5 11 12
</ARRAY>
<ARRAY BUILTIN="ATID2">
2 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 9 15 13
</ARRAY>
<ARRAY BUILTIN="ORDER">
1 1 1 2 1 1 1 2 1 2 1 1 1 2 1 1 1 1 1 1 1
</ARRAY>
<ARRAY BUILTIN="STER">
0 1 0 0 0 0 0 0 0 0 0 0 6 0 0 1 6 0 0 0 0
</ARRAY>
</BONDS>
<FORMULA>
<XVAR BUILTIN="STOICH">
N C C C C N O C N C C C C O N N C O O
</XVAR>
</FORMULA>
</MOL>
<XLIST>
<XVAR DICTNAME="DATE" TYPE="DATE" CONVENTION="MDL">
Fri Dec 22 10:03:00 GMT 1995
</XVAR>
</XLIST>
</CML>

5.6 Channel Definition Format

Microsoft hat schon sehr früh begonnen das so genannte Channel Definition Format als Push-Möglichkeit zu etablieren. Das System und die Syntax des Channel Definition Formats beruht vollständig auf XML. Microsoft war damit schon vor rund einem Jahr einer der Vorreiter dieser neuen Technologie.

Die Push-Technologie dient in erster Linie dazu Anwender regelmäßig mit aktualisierten Inhalten von Websites zu versorgen. Diese Inhalte werden auf den Rechner des Anwenders übertragen und dort können Sie dann offline gelesen werden.

<?xml version="1.0"?>

<channel href="http://www.domain.de/datei.htm">

<title>Ein Info-Kanal</title>

<abstract>Dies ist ein Info-Kanal</abtsract>

<logo href="http://www.domain.de/logo.ico" style="icon">
<logo href="http://www.domain.de/logo.gif" style="image">
<logo href="http://www.domain.de/logo-w.gif" style="image-wide">

<item href="http://www.domain.de/first.htm">
<abstract>Beispiel-Daten</abstract>
<title>Artikel über XML</title>
</item>

<item href="http://www.domain.de/workshop/datei.htm">
<abtract>Beispiel-Daten</abstract>
<title>Artikel Nummer 2</title>
</item>

</channel>

Vielleicht erkennen Sie mithilfe des in diesem Buch vermittelten Wissens schon einige Strukturen und können einzelne Abschnitte für eigene Projekte in die Praxis umsetzen.

Quellcode für den Channel CDF 201 Channel

<?XML version="1.0"?>
<CHANNEL
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201ch.htm">
<TITLE>CDF 201 Channel</TITLE>
<ABSTRACT>
Microsoft resources for creating Channels and CDF files
</ABSTRACT>

<LOGO
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201.ico" 
STYLE="ICON" />
<LOGO
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201.gif" 
STYLE="IMAGE" />
<LOGO
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201w.gif" 
STYLE="IMAGE-WIDE" />

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201em.htm"
PRECACHE="YES" LASTMOD="1997-17-10">
<USAGE VALUE="Email"></USAGE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201ss.htm"
PRECACHE="YES" LASTMOD="1997-12-14">
<USAGE VALUE="ScreenSaver"></USAGE>
</ITEM>

<CHANNEL>
<TITLE>CDF Reference</TITLE>

<ITEM
HREF="http://www.microsoft.com/msdn/sdk/inetsdk/help/delivery/references/CDF.htm" 
PRECACHE="NO">
<ABSTRACT>
Internet Client SDK Reference for all CDF tags
</ABSTRACT>
<TITLE>CDF Reference</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/msdn/sdk/inetsdk/help/delivery/authoring/active_
channels.htm" PRECACHE="NO">
<ABSTRACT>
Internet Client SDK guide to developing and deploying channels
</ABSTRACT>
<TITLE>Creating Active Channels</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/msdn/sdk/inetsdk/help/delivery/authoring/
desktop_items.htm" PRECACHE="NO">
<ABSTRACT>
Internet Client SDK guide to creating Active Desktop Items
</ABSTRACT>
<TITLE>Creating Active Desktop Items</TITLE>
</ITEM>

<ITEM
HREF="http://support.microsoft.com/support/inetsdk/faq/
default.asp?PR=ICL&FR=0&M=S&" PRECACHE="NO">
<ABSTRACT>
Internet Client SDK Frequently Asked Questions
</ABSTRACT>
<TITLE>Internet Client SDK FAQ</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/standards/cdf/default.asp" PRECACHE="NO">
<ABSTRACT>Official Microsoft CDF specification</ABSTRACT>
<TITLE>CDF Spec</TITLE>
</ITEM>

</CHANNEL>

<CHANNEL>
<TITLE>Site Builder Network</TITLE>
<ITEM
HREF="http://www.microsoft.com/sbnmember/channels/channels.asp" PRECACHE="YES">
<ABSTRACT>
Get your channel listed in the Explorer Channel Guide
</ABSTRACT>
<TITLE>Microsoft Channel Guide</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/default.asp" PRECACHE="NO">
<ABSTRACT>
Active Desktop &amp; Channels area of SBN Workshop
</ABSTRACT>
<TITLE>Active Desktop &amp; Channels</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/workshop/default.asp"
PRECACHE="NO">
<ABSTRACT>
Resources for Internet designers and developers
</ABSTRACT>
<TITLE>Site Builder Workshop</TITLE>
</ITEM>

<ITEM HREF="http://www.microsoft.com/sitebuilder/" PRECACHE="NO">
<ABSTRACT>Articles on Internet development</ABSTRACT>
<TITLE>Site Builder Magazine</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdfwiz/intro.asp"
PRECACHE="NO" LASTMOD="1997-11-27">
<ABSTRACT>
Step-by-step instructions for creating a single-level channel
</ABSTRACT>
<TITLE>Site Builder Channel Wizard</TITLE>
</ITEM>

</CHANNEL>

<CHANNEL>

<TITLE>CDF How-To Series</TITLE>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf1/cdf1.asp"
PRECACHE="YES" LASTMOD="1997-06-29">
<ABSTRACT>
Introduction to Channels and CDF creation
</ABSTRACT>
<TITLE>CDF 101 Article</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf2.asp"
PRECACHE="YES" LASTMOD="1997-12-17">
<ABSTRACT>Beyond the basics in Channel creation</ABSTRACT>
<TITLE>CDF 201 Article</TITLE>
</ITEM>

</CHANNEL>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201qr.htm"
PRECACHE="YES" LASTMOD="1997-12-17">
<ABSTRACT>
An outline of CDF tags for Active Channel sites
</ABSTRACT>
<TITLE>CDF Tag QuickReference</TITLE>
</ITEM>

<ITEM
HREF="http://www.microsoft.com/workshop/delivery/channel/cdf2/cdf201sc.htm"
PRECACHE="YES" LASTMOD="1997-12-17">
<ABSTRACT>
Source code for the Site Builder CDF 201 Channel
</ABSTRACT>
<TITLE>Sample CDF Code</TITLE>
</ITEM>

</CHANNEL>

5.7 Szenarien

Microsoft bietet neben der Channel Definition zahlreiche Fallbeispiele, so genannte Szenarien auf der eigenen Website an. Zwei dieser theoretisch entwickelten Studien sehen wir uns im Folgenden exemplarisch an:

5.7.1 Personal Business Plan

Insbesondere kleinere Unternehmen benötigen zunehmend ein Informationsmanagement, das es ihnen ermöglicht Investoren schnell und präzise mit personalisierten Informationen zu versorgen. Berichte und Informationen verschiedenster Quellen müssen zusammengeführt und ausgewertet werden können. Die eingehenden Informationen sollten in beliebiger Form beispielsweise als Tabellen oder Diagramme ausgegeben werden können. Neben allgemeinen Übersichten sollte bei Bedarf auch eine bis ins letzte Detail gehende Information schnell aufgefunden und weitergegeben werden.

Abb. 5.23: Informationsverarbeitung im Unternehmen mithilfe von Astoria 3.0 (Quelle: Microsoft).

Ein Datensatz einer solchen Dokumentenverwaltung zur Auswertung eines Risiko-Portfolios zeigt das nächste Beispiel:

<portfolio name="Mary Weber" risk="balanced" return="medium">
<profile
  name="Weber, Mary Ann"
  employee="82340"
  source="HRdatabase"/>
<analystreports>
<Moodys
  source="http://www.moodys.com/profiles/webermary"/>
<description
  source="Astoria.Moody.Description.complete"/>
</Moodys>
<SP
  source="http://www.ratings.com/funds/profile/weberma">
<description source="Astoria.SP.Description.partial"/>
</SP>
</analystreports>
<investments>
<shortterm>
<moneymarket type="taxexempt" name="Phoenix"/>
<bond type="taxable" name="BioTech"/>
</shortterm>
<longterm>
<retirement>
<ira contribution="maximum"/>
<beforetaxsavings source="HRdatabase"/>
<collegefund name="NY Aggressive Fund"/>
</retirement>
</longterm>
</investments>
</portfolio>

5.7.2 Customer Service System

<?xml version="1.0"?>
<?xml version="1.0"?><solution id="solution-1000">
<!-- This comes from the Microsoft SQL Database -->
<sqllink xml:link="simple"
  href="http://sqlserver//getSQLinfo?SQL='SELECT 
  owner,date,product-type,product-name
  WHERE call-id = test.call.1'">
<! -- RESULTS:   <solution-info>
<owner>Derek Yoo</owner>
<date>Sat Jan 31 22:30:50 1998</date>
</solution-info>
<product-grp>
<product-type>SST</product-type>
<product-name>Self Service Terminal 100A</product-name>
</product-grp>
<problem-grp>
<problem-statement>
Terminal 100A will not recover from a power failure.
Screen remains blank after power is restored.
</problem-statement>
</problem-grp>-->
<solution-grp>
<solution-statement>
<!-- This part of the solution statement is authored by the
  Solution Engineer -->
<para>
  The solution is to simply turn the main
  power switch for the terminal off
  and then on again.
</para>
<para>Please refer to
<imlink xml:link="simple"
  href="http://imserver//getIMinfo=
  "helpdb@Tech_Manual.xml#section1.child(2,para)">
Paragraph 2, Section I of Tech_Manual.xml</imlink>.
</solution-statement>
<testing-steps>
<step></step>
</testing-steps>
<additional-resources>
<graphiclink xml:link="simple"
  href="file://localfileserver/graphics/
  image_of_part.gif">
<weblink xml:link="simple"
  href="http://www.texcel.no/support">
</additional-resources></solution-grp></solution>

Abb. 5.24: Das Strukturdiagramm zur Problemstellung (Quelle: Microsoft).

5.8 Microsoft Office 2000

Das neue Microsoft-Office-Paket-2000 verwendet optional zur Speicherung der Daten ein HTML-Format mit integrierten XML-Abschnitten. Die gezeigten Quellcodes bieten eine interessante Ausgangsbasis für eigene Entwicklungen.

5.8.1 Microsoft Excel 9.0

<html>
<head>
<meta name="Excel Workbook Frameset">
<meta http-equiv="Content-Type"
  content="text/html; charset=windows-1252">
<meta name="ProgId" content="Excel.Sheet">
<meta name="Generator" content="Microsoft Excel 9">
<link rel="Edit-Time-Data"
  href="./Book1%20files/editdata.mso">
<link rel="OLE-Object-Data"
  href="./Book1%20files/oledata.mso">
<link rel="File-List"
  href="./Book1%20files/filelist.xml">
<xml:namespace
ns="urn:schemas-microsoft-com:vml" prefix="v"/>
<xml:namespace
ns="urn:schemas-microsoft-com:office/office" prefix="o"/>
<xml:namespace
ns="urn:schemas-microsoft-com:office/excel" prefix="x"/>
<!--#if gte mso 9#><xml>

<o:DocumentProperties>
  <o:Created>19800202T04:55:47Z</o:Created>
  <o:LastSaved>19800202T05:18:34Z</o:LastSaved>
</o:DocumentProperties>
</xml>

5.8.2 Microsoft Word 9.0

<html>

<head>
<meta http-equiv="Content-Type"
  content="text/html; charset=windows-1252">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 9">
<meta name="Originator" content="Microsoft Word 9">
<link rel="File-List" href="./Word2%20files/filelist.xml">

<xml:namespace
ns="urn:schemas-microsoft-com:vml" prefix="v"/>
<xml:namespace
ns="urn:schemas-microsoft-com:office/office" prefix="o"/>
<xml:namespace
ns="urn:schemas-microsoft-com:office/word" prefix="w"/>
<!--#if VML#><!#if ! VMLRender#>

<object
  id="VMLRender"
  classid="CLSID:10072CEC-8CC1-11D1-986E-00A0C955B42E"
  width="0" height="0">
</object>

<style>
v\:* { behavior: url(#VMLRender); }
o\:* { behavior: url(#VMLRender); }
w\:* { behavior: url(#VMLRender); }
.shape { behavior: url(#VMLRender); }
</style>
<!#endif#><!#endif#-->

<title>fgdgdgddfgdfg</title>
<!--#if gte mso 9#><xml>
 <o:DocumentProperties>
  <o:Template>Normal</o:Template>
  <o:Created>19800202T05:28:00Z</o:Created>
  <o:LastSaved>19800202T05:28:00Z</o:LastSaved>
  <o:Pages>3</o:Pages>
  <o:Words>5</o:Words>
  <o:Characters>29</o:Characters>
  <o:Lines>1</o:Lines>
  <o:Paragraphs>1</o:Paragraphs>
  <o:CharactersWithSpaces>35</o:CharactersWithSpaces>
 </o:DocumentProperties>
</xml>

<!#endif#--><!--#if gte mso 9#>

<xml>
 <w:WordDocument>
  <w:View>Print</w:View>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:Compatibility>
   <w:FootnoteLayoutLikeWW8/>
   <w:ShapeLayoutLikeWW8/>
  </w:Compatibility>
 </w:WordDocument>
</xml>

5.9 Shakespeare

Im Folgenden finden Sie zunächst eine Document Type Definition für die Verwaltung eines Shakespeare-Textes.

<!-- DTD for Shakespeare J. Bosak 1997.01.02 -->

<!ENTITY amp "&">
<!ELEMENT play (title, fm, personae,
          scndescr, playsubt, induct?,
          prologue?, act+, epilogue?)>
<!ELEMENT title    (#PCDATA)>
<!ELEMENT fm       (p+)>
<!ELEMENT p        (#PCDATA)>
<!ELEMENT personae (title, (persona | pgroup)+)>
<!ELEMENT pgroup   (persona+, grpdescr)>
<!ELEMENT persona  (#PCDATA)>
<!ELEMENT grpdescr (#PCDATA)>
<!ELEMENT scndescr (#PCDATA)>
<!ELEMENT playsubt (#PCDATA)>

<!ELEMENT induct
(title, subtitle*, (scene+|(speech|stagedir|subhead)+))>

<!ELEMENT act
(title, subtitle*, prologue?, scene+, epilogue?)>

<!ELEMENT scene
(title, subtitle*, (speech | stagedir | subhead)+)>

<!ELEMENT prologue (title, subtitle*, (stagedir | speech)+)>
<!ELEMENT epilogue (title, subtitle*, (stagedir | speech)+)>
<!ELEMENT speech   (speaker+, (line | stagedir | subhead)+)>
<!ELEMENT speaker  (#PCDATA)>
<!ELEMENT line     (stagedir | #PCDATA)+>
<!ELEMENT stagedir (#PCDATA)>
<!ELEMENT subtitle (#PCDATA)>
<!ELEMENT subhead  (#PCDATA)>

Dann folgt ein kleiner Textausschnitt, an dem Sie die Verwendung der DTD sehen können:

<?xml version="1.0"?>
<!DOCTYPE play PUBLIC "-//Free Text Project//DTD Play//EN">

<PLAY>
<TITLE>The Tragedy of Hamlet, Prince of Denmark</TITLE>

<fm>
<p>Text placed in the public domain by Moby Lexical Tools, 1992.</p>
<p>SGML markup by Jon Bosak, 1992-1994.</p>
<p>XML version by Jon Bosak, 1996-1997.</p>
<p>This work may be freely copied and distributed worldwide.</p>
</fm>

<PERSONAE>
<TITLE>Dramatis Personae</TITLE>

<PERSONA>CLAUDIUS, king of Denmark. </PERSONA>
<PERSONA>HAMLET, son to the late, and nephew to the present king.</PERSONA>
<PERSONA>POLONIUS, lord chamberlain. </PERSONA>
<PERSONA>HORATIO, friend to Hamlet.</PERSONA>
<PERSONA>LAERTES, son to Polonius.</PERSONA>
<PERSONA>LUCIANUS, nephew to the king.</PERSONA>

<PGROUP>
<PERSONA>VOLTIMAND</PERSONA>
<PERSONA>CORNELIUS</PERSONA>
<PERSONA>ROSENCRANTZ</PERSONA>
<PERSONA>GUILDENSTERN</PERSONA>
<PERSONA>OSRIC</PERSONA>
<GRPDESCR>courtiers.</GRPDESCR>
</PGROUP>

<PERSONA>A Gentleman</PERSONA>
<PERSONA>A Priest. </PERSONA>

<PGROUP>
<PERSONA>MARCELLUS</PERSONA>
<PERSONA>BERNARDO</PERSONA>
<GRPDESCR>officers.</GRPDESCR>
</PGROUP>

<PERSONA>FRANCISCO, a soldier.</PERSONA>
<PERSONA>REYNALDO, servant to Polonius.</PERSONA>
<PERSONA>Players.</PERSONA>
<PERSONA>Two Clowns, grave-diggers.</PERSONA>
<PERSONA>FORTINBRAS, prince of Norway. </PERSONA>
<PERSONA>A Captain.</PERSONA>
<PERSONA>English Ambassadors. </PERSONA>
<PERSONA>GERTRUDE, queen of Denmark, and mother to Hamlet. </PERSONA>
<PERSONA>OPHELIA, daughter to Polonius.</PERSONA>
<PERSONA>Lords, Ladies, Officers, Soldiers, Sailors, Messengers, and other 
Attendants.</PERSONA>
<PERSONA>Ghost of Hamlet's Father. </PERSONA>
</PERSONAE>

<SCNDESCR>SCENE  Denmark.</SCNDESCR>

<PLAYSUBT>HAMLET</PLAYSUBT>

<ACT><TITLE>ACT I</TITLE>

<SCENE><TITLE>SCENE I.  Elsinore. A platform before the castle.</TITLE>
<STAGEDIR>FRANCISCO at his post. Enter to him BERNARDO</STAGEDIR>

<SPEECH>
<SPEAKER>BERNARDO</SPEAKER>
<LINE>Who's there?</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>FRANCISCO</SPEAKER>
<LINE>Nay, answer me: stand, and unfold yourself.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>BERNARDO</SPEAKER>
<LINE>Long live the king!</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>FRANCISCO</SPEAKER>
<LINE>Bernardo?</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>BERNARDO</SPEAKER>
<LINE>He.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>FRANCISCO</SPEAKER>
<LINE>You come most carefully upon your hour.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>BERNARDO</SPEAKER>
<LINE>'Tis now struck twelve; get thee to bed, Francisco.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>FRANCISCO</SPEAKER>
<LINE>For this relief much thanks: 'tis bitter cold,</LINE>
<LINE>And I am sick at heart.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>BERNARDO</SPEAKER>
<LINE>Have you had quiet guard?</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>FRANCISCO</SPEAKER>
<LINE>Not a mouse stirring.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>BERNARDO</SPEAKER>
<LINE>Well, good night.</LINE>
<LINE>If you do meet Horatio and Marcellus,</LINE>
<LINE>The rivals of my watch, bid them make haste.</LINE>
</SPEECH>

<SPEECH>
<SPEAKER>FRANCISCO</SPEAKER>
<LINE>I think I hear them. Stand, ho! Who's there?</LINE>
</SPEECH>

<STAGEDIR>Enter HORATIO and MARCELLUS</STAGEDIR>

<SPEECH>
<SPEAKER>HORATIO</SPEAKER>
<LINE>Friends to this ground.</LINE>
</SPEECH>
[ ... ]