Es wird im folgenden SGML-Diktion verwendet.
EPKML verfügt über Variablen. Sie werden durch die Klammerung $name$ von Werten und Inhalten getrennt; für Namen bestehen ansonsten keine Beschränkungen. Variablen können sowohl Attributwerte als auch Inhalte aufnehmen.
Variablen werden entweder über var, über Parameter oder die Benennung von Elementen eingeführt. Der Sichtbarkeitsbereich ist durch die natürliche Blockstruktur vorgegeben. Es gilt statische Bindung.
Variablen dürfen auf der rechten Seite von Attributzuweisungen auftreten, sowie als Inhalt von Elementen. Die Verwendung einer im aktuellen Block nicht deklarierten Variable ist ein Fehler.
Einige Namen sind reserviert:
Systemseitig werden einige eindimensionale Arrays (Vektoren) zur Verfügung gestellt (etwa aus der Datenbank). Auf die einzelnen Elemente kann dann mit $name[i]$ zugegriffen werden (erstes Element ist $name[1]$) Vektoren können benutzerseitig nicht angelegt werden.
Auf Attribute benannter Elemente wird durch Qualifikation mit dem Attributnamen zugegriffen.
Der Kontrollfluß ist sequentiell. Er verzweigt nach der Ausführung eines Statements, wenn nicht explizit anders angegeben, zum nächsten in Aufschreibungsreihenfolge. Der Kontrollfluß beginnt bei der ersten Anweisung in main.
Einige Anweisungen werden nebenläufig ausgeführt (sie kehren sofort zum Aufrufort zurück). Es sind dies open für video, audio und slide-show (bzw. diese Elemente selbst, falls ihr Status opened ist) und applet (falls dadurch ein neuer Prozeß erzeugt wird).
Der Zustand eines Elementes kann opened, closed oder suspended sein. Der Wert diese Zustandes (status) kann in der Spezifikation festgelegt werden. Defaultwert is opened. Dieser Wert wird nur von den Anweisungen open,close und suspend geändert. Es ist nicht erlaubt den status mit set zu setzen. Ein Element, das sein Attribut invisible gesetzt hat, ist am Bildschirm nicht sichtbar, belegt aber trotzdem Platz.
Externe Dateien werden mittels external ENTITIES eingebunden. In der DOCTYPE Aussage wird eine ENTITY für jede einzubindende Datei definiert. Es wird der externe Name der Datei angegeben und eine interne Bezeichnung vergeben. An der Stelle, wo die Datei eingefügt werden soll, wird diese Bezeichnung (in entity notation) angegeben. Dateien dürfen überall auftreten. Lediglich der nach allen Einfügungen entstehende Gesamttext muß ein korrektes EPKML-Programm ergeben.
<!DOCTYPE EPKML SYSTEM "epkml.dtd" [ <!ENTITY template SYSTEM "template.epk">]> <epkml> <header title="The Shortest EPKML Catalogue" author="Me" date="01/01/01" last-modified="01/01/01"> <externals> <styles> <definitions> <theme name="general"> <extension result="cities"> <sql> select name,video,image from tourist </sql> &template; </extension> </theme> <main> <open name="general"> <exit> </epkml>
<button name=additionals xpos=10 ypos=10> Felix coniunctio! <img src=nearby.gif> <on-click> <additional> </on-click> </button>
<variant object=presentation attribute=background value="blue"> <or value="green"> </or> <and object=products-on-sale attribute=background value="red"> <and object=titel attribute=fontcolor value="white"> <or value="black"> </variant>
Zur Anbindung externer Funktionalität dient, wie in Java, applet. Im Attribut function wird ein Funktionsaufruf angegeben. Die in result spezifizierte EPKML-Variable nimmt das Ergebnis des Funktionsaufrufs auf. Parameter für die Funktion werden im Inhalt von applet durch param definiert und übergeben. Die Codierung ist implementationsabhängig.
Für dieses Element können folgende Attribute angegeben werden:
<applet name=stat function=statistics result=output width=600 height=450> <param name=period value=12> <param name=year value=1995> </applet>
<flowbox name=in-the-left align=left width=200 height=200> <around> <img src=sun.gif width=5 height=50> </around> <p> The new product-line for the summer weather. Try our new T-shirts, they are on-sale! <img src=shirt1.gif width=100 height=100> <p> colors: green, orange, blue <img src=shirt2.gif width=100 height=100> </flowbox>
<macro name=dummy attribs="a" elems="e"> <img src=$dummy.a$> <p>$e$</p> </macro> <expand name=dummy> <attribute name=a value=12> <element name=e> Hello world! </element> </expand>
Für Audioelemente können zusätzlig folgende Attribute angegeben werden:
<audio name=mozart src=/audio/41.au format=au> <play-button name=play xpos=0 ypos=5> <img src=play.gif> <on-click> <-- play of audio file is made automatically --> <slide-show name=mozart-slides src=../slides/mozart format=slide interval=0.5 height=30 width=40 status=opened> </on-click> <stop-button name=stop> <img src=stop.gif> <on-click> <close name=mozart-slides> </on-click> </audio>
Für dieses Element können folgende Attribute angegeben werden:
With stupidity the gods themselves struggle in vain. <b> Die Jungfrau von Orleans (1801), III.vi </b>
Der Kontrollfluß verzweigt zum letzten Thema bzw. Eintrag.
Ist das Attribut hierarchical gesetzt, so wird in jedem Falle zum letzten in einer History gespeicherten theme verzweigt.
<button name=back xpos=10 ypos=10> Just say where we are, then go back to the car. <img src=back.gif> <on-click> <back> </on-click> </button>
Der Knopf wird nicht angezeigt, falls ein back ohne Wirkung bliebe.
Durch Setzen des Attributs hierachical erreicht man dasselbe für ein hierarchisches back.
Hat back-button keinen Inhalt, so wird eine Standarddarstellung gewählt; der Knopf führt back (unter Berücksichtigung des Attributs hierarchical) aus.
Mit align wird die Ausrichtung des Knopfes bestimmt.
<extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <frame name=general-frame> <p>This is a $general-result.name$.</p> <previous-button> <next-button> <back-button> </frame> </page> </template> </extension>
Für dieses Element können folgende Attribute angegeben werden:
<big> Either he's dead or my watch has stopped. </big> <s> Groucho Marx <s>
Für einen Zeilenumbruch können folgende Attribute angegeben werden:
Freude, schöner Götterfunken,<br> Tochter aus Elysium,<br> Wir betreten Feuertrunken,<br> Himmlische, dein Heiligtum.<br> Deine Zauber binden wieder,<br> Was die Mode streng geteilt,<br> Alle Menschen werden Brüder<br> Wo dein sanfter Flügel weilt.<br> <b> An die Freude (1785) </b>
Für einen Browser können folgende Attribute angegeben werden:
<set name=time-unit value=1s> <window name=SSV> Look at the section ON-sale! We are in SSV! </window> <window name=WSV> <video name=ski status=closed> </window> <browser> <option summer> <on-selected> <set name=summer value=yes> <open name=SSV> <on-end-of name=SSV time=5> </on-end-of> </on-selected> <on-deselected> <close name=SSV> </on-deselected> <option winter selected> <on-selected> <set name=winter value=yes> <open name=WSV> <on-end-of name=WSV time=5> </on-end-of> <close name=WSV> </on-selected> <on-deselected> <close name=ski> <on-end-of name=ski time=1> </on-end-of> <close name=WSV> </on-deselected> <option autumn disabled> <on-selected> <set name=autumn value=yes> </on-selected> <option spring disabled> <on-selected> <set name=spring value=yes> </on-selected> </browser>
Für Tabelleneinträge können zusätzlig folgende Attribute angegeben werden:
<p> Click on the product to see it! <multiple-browser name=choose style=quelle attribs="extension"> <browser-row> <browser-cell>SONY 314 <browser-cell>VCR <browser-cell><img src=/images/vcr.gif> <browser-cell>1 <browser-cell>999.90 <on-selected> <sql name=mb-image> SELECT prod-image FROM products WHERE code=$mb[1][mb.selected]$ </sql> <img name=aux src=$mb-image.prod.image$> <set name=aux.status value=closed> </on-selected> </browser-row> <browser-row> <browser-cell>FFXXL <browser-cell>BH <browser-cell><img src=/images/bh.gif> <browser-cell>2 <browser-cell>35.99 <on-selected> ... </on-selected> </browser-row> <browser-row> <browser-cell>SP 231 <browser-cell>Spielzeug <browser-cell><img src=/images/lego.gif> <browser-cell>2 <browser-cell>15 <on-selected> ... <on-deselected> </browser-row> </multiple-browser>
Für multiple-browser Zeilen können folgende Attribute angegeben werden:
<p> Click on the product to see it! <multiple-browser name=choose style=quelle attribs="extension"> <browser-row> <browser-cell>SONY 314 <browser-cell>VCR <browser-cell><img src=/images/vcr.gif> <browser-cell>1 <browser-cell>999.90 <on-selected> <sql name=mb-image> SELECT prod-image FROM products WHERE code=$mb[1][mb.selected]$ </sql> <img name=aux src=$mb-image.prod.image$> <set name=aux.status value=closed> </on-selected> </browser-row> <browser-row> <browser-cell>FFXXL <browser-cell>BH <browser-cell><img src=/images/bh.gif> <browser-cell>2 <browser-cell>35.99 <on-selected> ... </on-selected> </browser-row> <browser-row> <browser-cell>SP 231 <browser-cell>Spielzeug <browser-cell><img src=/images/lego.gif> <browser-cell>2 <browser-cell>15 <on-selected> ... <on-deselected> </browser-row> </multiple-browser>
Für Buttons können folgende Attribute angegeben werden:
<button style=sport-style> <img src=stop.gif> <on-click> <close name=sport-presentation> </on-click> </button>
Für Tabelleneinträge können zusätzlig folgende Attribute angegeben werden:
<tabular name=prices colspec="lcl" status=opened> <row line> <cell>Name</cell> <cell>Size</cell> <cell>Price</cell> </row> <row line> <cell>zapato</cell> <cell>35-40</cell> <cell>140</cell> </row> <row line> <cell>chaussure</cell> <cell>41-48</cell> <cell>160</cell> </row> </tabular>
Für eine checkbox können folgende Attribute angegeben werden:
<set name=radio-status value=$radio.selected$> <-- The old status of the radio: either selected or not selected --> <window name=cd-question> A CD-player is available only in conjunction with a Radio. <button name=ok xpos=10 ypos=10> <img src=ok.gif> <on-click> <set name=cd-player.selected value=selected> <set name=radio.selected value=selected> <close name=cd-question> </on-click> </button> <button name=no xpos=80 ypos=10> <img src=no.gif> <on-click> <set name=cd-player.selected value=> <close name=cd-question> </on-click> </button> </window> <checkbox name=cd-player-choose style=mercedes-benz> <option name=cd-player>CD-player <on-selected> <set name=cd-player value=selected> <open name=cd-question> </on-selected> <on-deselected> <set name=cd-player value=> <set name=radio.selected value=$radio-status$> </on-deselected> <option>Radio </checkbox>
Es wird die Definition einer externer Klasse wiedergegeben. Der Name der Klasse steht in name, die Slots (Attribute) in slots und die Methoden in methods.
<class name=my-window-with-logo slots="logo" methods="redraw iconize">
<demo name=general-demo> <set name=time-unit value=sec> <open name=winter-theme> <-- a window presentation with two buttons --> <click name=help> <-- a click on the help button --> <-- the help window is opened --> <on-end-of time=5> <close name=help-window> <-- I could close it by a click on the close button --> <open name=pres-video format=mov> <on-end-of name=pres-video> <next> <-- go to the next theme --> <on-end-of time=5> ��<applet�name=stat ����function=fade> <-- screen fade, a function call without parameters --> <exit> </demo>
<button visible=yes style=sport-style> <clicked> <img src=stop.gif> <on-click> <close name=sport-presentation> </on-click> </button>
<close name=theme-1> <close name=$t$>
Einzelvoreinstellungen können Erweiterungen anderer sein; dazu wird in extends eine Liste von Stylesheetnamen angegeben, deren zu dem im Inhalt von default angegebenen Element zugehörige Voreinstellung erweitert bzw. überladen wird.
<stylesheet name=my-catalog-style extends=catalog-style> <default extends=other-catalog-style> <p baselineskip=12pt> </default> </stylesheet>
Im Definitionsteil werden Variablen (var), Makros (macro) und Themen (theme) festgelegt. Daneben können Top-level-Elemente (window und page), audio und Elemente der Service-Gruppe vorkommen. Sie haben dann immer den Status closed.
<definitions> <var name=months value=12> <macro name=dummy attribs="a" elems="e"> <img src=$dummy.a$> <p>$e$</p> </macro> </definitions>
<demo name=general-demo> <set name=time-unit value=sec> <open name=winter-theme> <-- a window presentation with two buttons --> <click name=help> <-- a click on the help button --> <-- the help window is opened --> <on-end-of time=5> <close name=help-window> <-- I could close it by a click on the close button --> <open name=pres-video format=mov> <on-end-of name=pres-video> <next theme> <-- go to the next theme --> <on-end-of time=5> ��<applet�name=stat ����function=fade> <-- screen fade, a function call without parameters --> <exit demo> </demo>
Ein Dialog-Fenster kann folgende Attribute haben:
<dialog-window name=registration-help title="Registration-help" width=400 height=200> Instructions for registration 1. ... 2. ... <button> <p> O.K. <on-click> <close name=registration-help> </on-click> </button> </dialog-window>
<button style=sport-style> <img src=stop-enabled.gif> <clicked> <img src=stop.gif> <disabled> <img src=stop-disabled.gif> <on-click> <close name=sport-presentation> </on-click> </button>
Das aktuelle Thema wird in einer History gespeichert.
Der Kontrollfluß verzweigt zum ersten Unterthema.
<button name=down xpos=10 ypos=10> Go down the hierachy. <img src=down.gif> <on-click> <down> </on-click> </button>
<macro name=dummy attribs="a" elems="e"> <img src=$dummy.a$> <p>$e$</p> </macro> <expand name=dummy> <attribute name=a value=12> <element name=e> Hello world! </element> </expand>
Für dieses Element können folgende Attribute angegeben werden:
<em> This text is emphasized, normally it will appear in italics. </em>
Der Inhalt wird ausgeführt, falls die im Attribut which angegebene Vektor- oder Feldvariable oder das Ergebnis der sql-Abfrage leer ist.
<sql result=on-sale-opt> SELECT code prod-name prod-color prod-desc FROM products-table WHERE saison=$saison$ AND status=on-sale </sql> <non-empty which=on-sale-opt> <itemize> <make-items from=on-sale-opt> Product: $on-sale-opt.prod-name$ </make-items> </itemize> </non-empty> <empty> There are no products ON-SALE in $saison$. </empty>
Für Aufzählungen können folgende Attribute angegeben werden:
<enumerate enumstyle=roman number=i> <item> First item <item> Second item ... <item> Last item </enumerate>
Ein Katalog besteht aus:
<epkml> <header title = "The Shortest EPKML Catalogue" author = "Me" date = "01/01/01" last-modified = "01/01/01"> <externals> <styles> <definitions> <main> <exit> </epkml>
<theme name=general> <extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <p>This is a $general-result.name$.</p> <next-button> </page> </template> </extension> <exceptions> <sql> SELECT name FROM database WHERE name=[AEIOU].* </sql> <template> <page name=general-exception-page> <p>This is an $general-result.name$.</p> <next-button> </page> </template> </exceptions> <theme=sub-general> ... </theme> </theme>
<button name=bye xpos=10 ypos=10> QUIT <img src=quit.gif> <on-click> <exit> </on-click> </button>
<macro name=dummy attribs="a" elems="e"> <img src=$dummy.a$> <p>$e$</p> </macro> <expand name=dummy> <attribute name=a value=12> <element name=e> Hello world! </element> </expand>
<theme name=general> <extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <p>This is a $general-result.name$.</p> <next-button> </page> </template> </extension> <exceptions> <sql> SELECT name FROM database WHERE name=[AEIOU].* </sql> <template> <page name=general-exception-page> <p>This is an $general-result.name$.</p> <next-button> </page> </template> </exceptions> <theme=sub-general> ... </theme> </theme>
Hier werden externe Klassen (class) und Datenbankschemata (scheme) dem Katalog bekanntgemacht. Es ist ein Fehler, in applet oder sql Klassen oder Schemata zu verwenden, die nicht in externals deklariert wurden.
<externals> <class name=my-window-with-logo slots="logo" methods="redraw iconize"> <scheme name=my-database> <table name="prod-desc" columns="code price desc"> </scheme> </externals>
Eine flowbox kann folgende Attribute haben:
<flowbox name=in-the-left align=left width=200 height=200> <around> <img src=sun.gif width=5 height=50> </around> <p> The new product-line for the summer weather. Try our new T-shirts, they are on-sale! <img src=shirt1.gif width=100 height=100> <p> colors: green, orange, blue <img src=shirt2.gif width=100 height=100> </flowbox>
Für dieses Element können folgende Attribute angegeben werden:
<font fontsize=+3> ON-SALE </font>
<demo> <sql result=demo> SELECT * FROM products-table WHERE status=interesting </sql> <foreach in=result> <open name=$result$> </demo>
Für forward-button können folgende Attribute angegeben werden:
<video name=mode> <play-button name=play xpos=0 ypos=5> <img src=play.gif> <on-click> <-- play of video mode is made automatically --> <set name=play.invisible value=invisible> <set name=stop.invisible value=> <set name=pause.invisible value=> </on-click> <stop-button name=stop> <img src=stop.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=> <set name=pause.invisible value=invisible> </on-click> <pause-button name=pause> <img src=pause.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=invisible> <set name=pause.invisible value=invisible> </on-click> <forward-button name=fast-forward> <img src=ff.gif> </forward-button> <rewind-button name=rewind xpos=20 ypos=5> <img src=rew.gif> </rewind-button> </video>
Ein Rahmen kann zusätzlich folgende Attribute haben:
<frame name=sport-presentation title="SUMMER SPORT" xpos=10 ypos=10 width=400 height=200 lftpad=25 rgtpad=25 toppad=25 botpad=25 layer=0> <video name=sport-presentation-video src=/videos/sport-presentation.mov format=mov status=closed> <open name=sport-presentation-video> </frame>
<epkml> <header title = "The Shortest EPKML Catalogue" author = "Me" date = "01/01/01" last-modified = "01/01/01">
Jede Überschrift bekommt eine laufende Nummer (number). Das Attribut leftmargin bestimmt die Einzugstiefe vom linken Rand, baselineskip gibt den Abstand der Schriftlinien zweier Zeilen (Zeilenabstand) an und mit align wird die horizontale Ausrichtung gesetzt.
Für Überschriften können zusätzlig folgende Attribute angegeben werden:
<heading name=myheading align=left baselineskip=2 layer=1 number=1 leftmargin=2pt> HELLO WORLD! </heading>
In der Mitte des Scrollbars befindet sich ein verschiebbarer Knopf, slider-box, links der slider-previous-Knopf, um den Zugriff auf ein kontextuell vorhergehendes Element zu ermöglichen, rechts der slider-next-Knopf, um nachfolgende Elemente zu erreichen. Dadurch wird auch die Stellung des Mittelknopfes beeinflußt.
Für Sliders können folgende Attribute angegeben werden:
<frame name=myframe elems="photo"> $photo$ </frame> <sql result=my-query> select image from prod where price < 1000 </sql> <horizontal-slider name=prod-slider style=quelle height=21 width=210 layer=1 step=2> <slider-previous> <img src=previous.gif> <slider-next> <img src=next.gif> <slider-box> <img src=box.gif> <on-reposition> <open name=myframe> <element name=photo> <img src=$myquery.photo[myslider.position]$ </element> </open> </on-reposition> </horizontal-slider>
Für Hyperlinks können zusätzlig folgende Attribute angegeben werden:
Take a look at the new <hyperlink ref=mode-catalogue>mode</hyperlink> catalogue!
Für dieses Element können folgende Attribute angegeben werden:
<i> Ich bin der Geist, der stets verneint. </i> <b> Johann Wolfgang von Goethe </b>
Für Bilder können zusätzlig folgende Attribute angegeben werden:
<img src=../images/summer-mode.gif format=gif style=company <!-- all my images are transparent and in the background they get our company logo --> status=opened layer=2 height=20 width=30 xpos=1 ypos=1>
Für Eingaben können folgende Attribute angegeben werden:
Enter your ZIP code: <input name=zip-code default=80802 maxlength=5>
Für dieses Element können folgende Attribute angegeben werden:
<itemize> <item> First item <item> Second item ... <item> Last item </itemize>
Für Listen können folgende Attribute angegeben werden:
<itemize> <term> <img src=red-bullet.gif> </term> <item> First item <item> Second item ... <item> Last item </itemize>
Für die Sprache können folgende Attribute angegeben werden:
<p> <lang name=spanish> Bien haya el que inventó el sueño, capa que cubre todos los humanos pensamientos, manjar que quita la hambre, agua que ahuyenta la sed, fuego que calienta el frió, frió que templa el ardor, y, finalmente, moneda general con que todas las cosas se compran, balanza y peso que iguala al pastor con el rey y al simple con el discreto. </p>
Für Listen können folgende Attribute angegeben werden:
<listing> <term> <img src=first.gif> <item> First item <term> <img src=second.gif> <item> Second item ... <term> <img src=last.gif> <item> Last item </listing>
Auf diese Attribute und Elemente wird mit derselben Konvention zugegriffen wie auf Variablen ($name$). Existiert bereits eine Variable mit dem verwendeten Namen, so ist der Attribut- bzw. Elementname mit dem Makronamen zu qualifizieren ($name.name$)
Ein Makro wird über expand aufgerufen.
<macro name=dummy attribs="a" elems="e"> <img src=$dummy.a$> <p>$e$</p> </macro> <macro name=my-image attribs="extension" elems="text"> <img src=$myimage.extension$> <em>$text$</em> </macro>
<main> <open-theme name=main-theme> <close-theme name=main-theme> <exit> </main>
<sql result=out> SELECT code price prod-name FROM products WHERE saison = winter </sql> New line of products: <itemize> <make-items from=out> $out.prod-name$ -- $out.prod-price$ </itemize>
<window name=abc elems="prod-name prod-price"> The product $prod-name$ has a price of $prod-price$. </window> <sql result=out> SELECT code price prod-name FROM products WHERE saison=winter </sql> <browser name=dynamic-browser> <make-options from=out> $out.prod-name$ $out.price$ <on-selected> <open name=abc> <element name=prod-name> $out.prod-name$ <element name=prod-price> $out.price$ </open> </on-selected> </make-options> </browser> <browser name=dynamic-browser-ii> <option>$out.prod-name[1]$ $out.price[1]$ <option>$out.prod-name[2]$ $out.price[2]$ <option>Levis 501 DM 200,- <option>$out.prod-name[4]$ $out.price[4]$ <option>$out.prod-name[3]$ $out.price[3]$ </browser>
Für die Titelzeile können folgende Attribute angegeben werden:
<pull-down name=general-menu> <menu-title> <option>Info <option>Info panel <on-selected> <open name=info-panel> </on-selected> <option>Preferences... <on-selected> <open name=preferences> </on-selected> <option>Help <on-selected> <open name=help> </on-selected> <option>Edit <option>Cut <option>Copy <option>Paste <on-selected> <applet function=paste> </on-selected> <option>Quit <on-selected> <exit> </on-selected> </menu-title> </pull-down>
Für multiple-browser können folgende Attribute angegeben werden:
<p> Click on the product to see it! <multiple-browser name=choose style=quelle attribs="extension"> <browser-row> <browser-cell>SONY 314 <browser-cell>VCR <browser-cell><img src=/images/vcr.gif> <browser-cell>1 <browser-cell>999.90 <on-selected> <sql name=mb-image> SELECT prod-image FROM products WHERE code=$mb[1][mb.selected]$ </sql> <img name=aux src=$mb-image.prod.image$> <set name=aux.status value=closed> </on-selected> </browser-row> <browser-row> <browser-cell>FFXXL <browser-cell>BH <browser-cell><img src=/images/bh.gif> <browser-cell>2 <browser-cell>35.99 <on-selected> ... </on-selected> </browser-row> <browser-row> <browser-cell>SP 231 <browser-cell>Spielzeug <browser-cell><img src=/images/lego.gif> <browser-cell>2 <browser-cell>15 <on-selected> ... <on-deselected> </browser-row> </multiple-browser>
Der aktuelle Eintrag (das aktuelle Thema) wird in einer History gespeichert.
Der Kontrollfluß verzweigt zum nächsten Eintrag (Thema).
<button name=next xpos=10 ypos=10> Go to the next entry. <img src=next.gif> <on-click> <next> </on-click> </button>
Mit align wird die Ausrichtung des Knopfes bestimmt.Ist das Attribut circular nicht gesetzt, so wird der Knopf nicht angezeigt, falls ein next ohne Wirkung bliebe. Mit dem Attribut theme wird dasselbe für Themen (theme) erreicht.
Hat next-button keinen Inhalt, so wird eine Standarddarstellung gewählt; der Knopf führt next (unter Berücksichtigung des Attributs theme) aus.
<extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <frame name=general-frame> <p>This is a $general-result.name$.</p> <previous-button> <next-button> <back-button> </frame> </page> </template> </extension>
Der Inhalt wird ausgeführt, falls die im Attribut which angegebene Vektor- oder Feldvariable oder das Ergebnis der sql-Abfrage nicht leer ist.
<sql result=on-sale-opt> SELECT code prod-name prod-color prod-desc FROM products-table WHERE saison=$saison$ AND status=on-sale </sql> <non-empty which=on-sale-opt> <itemize> <make-items from=on-sale-opt> Product: $on-sale-opt.prod-name$ </make-items> </itemize> </non-empty> <empty> There are no products ON-SALE in $saison$. </empty>
<page name=summer-temp> <window name=summer-sport-presentation title="Summer Sport" xpos=10 ypos=10 width=400 height=200 lftpad=25 rgtpad=25 toppad=25 botpad=25> <img src=summer-logo.gif> Welcome to the summer-sport Catalogue '95-'96! <video name=summer-video src=/videos/summer-video.mov> <button style=sport-style> Go! <on-click> <close name=summer-video> <close name=summer-sport-presentation> <open name=summer-sport> </on-click> </button> </window> </page>
<set name=time-unit value=1s> <window name=SSV> Look at the section ON-sale! We are in SSV! </window> <window name=WSV> <video name=ski status=closed> </window> <browser> <option summer> <on-selected> <set name=summer value=yes> <open name=SSV> <on-end-of name=SSV time=5> </on-end-of> </on-selected> <on-deselected> <close name=SSV> </on-deselected> <option winter selected> <on-selected> <set name=winter value=yes> <open name=WSV> <on-end-of name=WSV time=5> </on-end-of> <close name=WSV> </on-selected> <on-deselected> <close name=ski> <on-end-of name=ski time=1> </on-end-of> <close name=WSV> </on-deselected> <option autumn disabled> <on-selected> <set name=autumn value=yes> </on-selected> <option spring disabled> <on-selected> <set name=spring value=yes> </on-selected> </browser>
<window name=presentation> <video name=pres src = "/videos/summer-video.mov" format = mov status = closed> <stop-button> </video> <button name = back align = "bottom left"> <img src = back.gif> <on-click> <close name = presentation> </on-click> </button> <open name = pres> <on-end-of = pres> <close name = presentation> </window>
<set name=time-unit value=1s> <window name=SSV> Look at the section ON-sale! We are in SSV! </window> <window name=WSV> <video name=ski status=closed> </window> <browser> <option summer> <on-selected> <set name=summer value=yes> <open name=SSV> <on-end-of name=SSV time=5> </on-end-of> </on-selected> <on-deselected> <close name=SSV> </on-deselected> <option winter selected> <on-selected> <set name=winter value=yes> <open name=WSV> <on-end-of name=WSV time=5> </on-end-of> <close name=WSV> </on-selected> <on-deselected> <close name=ski> <on-end-of name=ski time=1> </on-end-of> <close name=WSV> </on-deselected> <option autumn disabled> <on-selected> <set name=autumn value=yes> </on-selected> <option spring disabled> <on-selected> <set name=spring value=yes> </on-selected> </browser>
<frame name=myframe elems="photo"> $photo$ </frame> <sql result=my-query> select image from prod where price < 1000 </sql> <horizontal-slider name=prod-slider style=quelle height=21 width=210 layer=1 step=2> <slider-previous> <img src=previous.gif> <slider-next> <img src=next.gif> <slider-box> <img src=box.gif> <on-reposition> <open name=myframe> <element name=photo> <img src=$myquery.photo[myslider.position]$ </element> </open> </on-reposition> </horizontal-slider>
<set name=time-unit value=1s> <window name=SSV> Look at the section ON-sale! We are in SSV! </window> <window name=WSV> <video name=ski status=closed> </window> <browser> <option summer> <on-selected> <set name=summer value=yes> <open name=SSV> <on-end-of name=SSV time=5> </on-end-of> </on-selected> <on-deselected> <close name=SSV> </on-deselected> <option winter selected> <on-selected> <set name=winter value=yes> <open name=WSV> <on-end-of name=WSV time=5> </on-end-of> <close name=WSV> </on-selected> <on-deselected> <close name=ski> <on-end-of name=ski time=1> </on-end-of> <close name=WSV> </on-deselected> <option autumn disabled> <on-selected> <set name=autumn value=yes> </on-selected> <option spring disabled> <on-selected> <set name=spring value=yes> </on-selected> </browser>
Hiermit wird das in name angegebene Element angezeigt und alle in diesem Element enthaltenen Anweisungen (einschließlig der in Elementdefinitionen versteckten open) ausgefuehrt. Somit werden rekursiv alle enthaltenen Elemente indirekt angezeigt und deren Anweisungen ausgefuehrt. Die für dieses Element mit attribs definierten Attribute werden mit attribute als Parameter übergeben werden, die mit elems definierten Subelemente mit element. Werden gewissen Attributen und Elementen keine Werte zugewiesen, so gelten die beim letzten Öffnen des betroffenen Elements verwendeten Werte als Voreinstellung; wurde das Element noch nie geöffnet, so ist ein Zugriff auf einen undefinierten Parameter ein Fehler.
Der Status des zu öffnenden Elements wird auf opened geändert.
Der Kontrollfluß verzweigt zu dem zu öffnenden Element und kehrt nach Ausfuehrung der Anweisungen wieder zurueck. Die genaue Auswirkung hängt vom Wert des Attributs status des Elements ab:
Zeitabhängige Elemente sind: video, audio und slide-show und applet.html.
Für Themen gilt zusätzlich: Es wird der erste Datenbankeintrag aus extension mit dem zugehörigen page angezeigt. Gibt es einen solchen nicht, so wird das erste Subthema angezeigt. Ist so insgesamt keine Darstellung innerhalb des Themas möglich, so ist dies ein Fehler.
Für Datenbankeinträge gilt: Es wird die Dokumentvorlage (gefüllt mit den Eintragsdaten) des ersten theme in der in definitions angegebenen Themenhierarchie angezeigt, das in seiner extension diesen Eintrag aufweist.
<open name=theme-1> <open name=$t$> <sql result=entry> SELECT product-id FROM product-database WHERE product-name="Schillerlocke" </sql> <open name=$entry$> <frame name=sport-presentation title="Summer Sport"> <img name=sport-movie src=$image$ format=gif> </frame> <set name=image value="../images/spring.gif"> <open name=sport-presentation>
Eine Option kann folgende Attribute haben:
<window name=credit-card> We only accept VISA-card (Die Freiheit nehm' ich mir!) <button name=ok xpos=10 ypos=10> <img src=ok.gif> <on-click> <close name=credit-card> </on-click> </button> </window> <window name=pay> How do you want to pay? <radio-button name=one-of-them> <option selected> Credit card <on-selected> <open name=credit-card> <set name=way value=credit-card> </on-selected> <option> Cash <on-selected> <set name=way value="Cash"> </on-selected> <option> Check <on-selected> <set name=way value="Check"> </on-selected> <option disabled> I am not going to pay. <on-selected> <set name=way value="no-paying"> </on-selected> </radio-button> </window>
<variant object=presentation attribute=background value="blue"> <or value="green"> </or> <and object=products-on-sale attribute=background value="red"> <and object=titel attribute=fontcolor value="white"> <or value="black"> </variant>
<button> Order <on-click> <order orders="actual-orders"> </on-click> </button>
Für dieses Element können folgende Attribute angegeben werden:
<p align=right color=red> Let heaven exist, even though our estate be hell. </p>
Es wird implizit ein wait -Statement zum Abschluß eingefügt.
<theme name=general> <extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <p>This is a $general-result.name$.</p> <next-button> </page> </template> </extension> <exceptions> <sql> SELECT name FROM database WHERE name=[AEIOU].* </sql> <template> <page name=general-exception-page> <p>This is an $general-result.name$.</p> <next-button> </page> </template> </exceptions> <theme=sub-general> ... </theme> </theme>
Innerhalb einer mit slice abgegrenzten Zeitscheibe werden die durch par getrennten Teile parallel zueinander ausgeführt.
<time-line end-of=12s periodical slice=3s> <slice> <par> <open name=m> <par> <open name=n> <slice> <par> <close name=m> <par> <close name=n> <slice end-of=1s> <open name=o> <slice end-of=5s> <close name=o> </time-line>
Zur Übergabe von Parametern an applet. Das Attribut name dient der Identifikation, in value kann eine beliebige Zeichenkette (unter Benutzung von EPKML-Variablen) angegeben werden.
<applet name=stat function=statistics result=output width=600 height=450> <param name=period value=12> <param name=year value=1995> </applet>
Für pause-button können folgende Attribute angegeben werden:
<video name=mode> <play-button name=play xpos=0 ypos=5> <img src=play.gif> <on-click> <-- play of video mode is made automatically --> <set name=play.invisible value=invisible> <set name=stop.invisible value=> <set name=pause.invisible value=> </on-click> <stop-button name=stop> <img src=stop.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=> <set name=pause.invisible value=invisible> </on-click> <pause-button name=pause> <img src=pause.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=invisible> <set name=pause.invisible value=invisible> </on-click> <forward-button name=fast-forward> <img src=ff.gif> </forward-button> <rewind-button name=rewind xpos=20 ypos=5> <img src=rew.gif> </rewind-button> </video>
Für play-button können folgende Attribute angegeben werden:
<video name=mode> <play-button name=play xpos=0 ypos=5> <img src=play.gif> <on-click> <-- play of video mode is made automatically --> <set name=play.invisible value=invisible> <set name=stop.invisible value=> <set name=pause.invisible value=> </on-click> <stop-button name=stop> <img src=stop.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=> <set name=pause.invisible value=invisible> </on-click> <pause-button name=pause> <img src=pause.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=invisible> <set name=pause.invisible value=invisible> </on-click> <forward-button name=fast-forward> <img src=ff.gif> </forward-button> <rewind-button name=rewind xpos=20 ypos=5> <img src=rew.gif> </rewind-button> </video>
Für ein Pop-up menu können folgende Attribute angegeben werden:
<pop-up name=saison-pop-up-menu style=quelle> <option name=summer selected> Summer <on-selected> <close name=summer-on-sale-sport> <open name=prod> </on-selected> <option name=spring> Spring <on-selected> <close name=summer-on-sale-sport> <open name=prod> </on-selected> <option name=autumm> Autumn <on-selected> <close name=summer-on-sale-sport> <open name=prod> </on-selected> <option winter> Winter <on-selected> <close name=summer-on-sale-sport> <open name=prod> </on-selected> </pop-up>
Der aktuelle Eintrag (das aktuelle Thema) wird in einer History gespeichert.
Der Kontrollfluß verzweigt zum vorherigen Eintrag (Thema).
<button name=previous xpos=10 ypos=10> Go to the previous entry. <img src=prev.gif> <on-click> <previous> </on-click> </button>
Mit align wird die Ausrichtung des Knopfes bestimmt.Ist das Attribut circular nicht gesetzt, so wird der Knopf nicht angezeigt, falls ein previous ohne Wirkung bliebe. Mit dem Attribut theme wird dasselbe für Themen (theme) erreicht.
Hat previous-button keinen Inhalt, so wird eine Standarddarstellung gewählt; der Knopf führt previous (unter Berücksichtigung des Attributs theme) aus.
<extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <frame name=general-frame> <p>This is a $general-result.name$.</p> <previous-button> <next-button> <back-button> </frame> </page> </template> </extension>
Für ein Pull-down menu können folgende Attribute angegeben werden:
<pull-down name=general-menu> <menu-title> <option>Info <option>Info panel <on-selected> <open name=info-panel> </on-selected> <option>Preferences... <on-selected> <open name=preferences> </on-selected> <option>Help <on-selected> <open name=help> </on-selected> <menu-title> <option>Edit <option>Cut <option>Copy <option>Paste <on-selected> <applet function=paste> </on-selected> <menu-title> <option>Quit <on-selected> <exit> </on-selected> </menu-title> </pull-down>
Für Zitate können folgende Attribute angegeben werden:
<q> The original is unfaithful to the translation </q> <p> (Henley's translation of Beckford's Vathek) </p>
<question-form name="my-registration-form" users="user-database">
Für ein radio-button können folgende Attribute angegeben werden:
<window name=credit-card> We only accept VISA-card (Die Freiheit nehm' ich mir!) <button name=ok xpos=10 ypos=10> <img src=ok.gif> <on-click> <close name=credit-card> </on-click> </button> </window> <window name=pay> How do you want to pay? <radio-button name=one-of-them> <option selected> Credit card <on-selected> <open name=credit-card> <set name=way value=credit-card> </on-selected> <option> Cash <on-selected> <set name=way value="Cash"> </on-selected> <option> Check <on-selected> <set name=way value="Check"> </on-selected> <option disabled> I am not going to pay. <on-selected> <set name=way value="no-paying"> </on-selected> </radio-button> </window>
<set name=image value="../images/summer.gif"> <frame name=sport-presentation title="Summer Sport"> <img name=sport-movie src=$image$ format=gif> </frame> <open name=sport-presentation> <set name=image value="../images/spring.gif"> <redraw name=sport-presentation>
<registration-form name="my-registration-form" users="user-database">
Für rewind-button können folgende Attribute angegeben werden:
<video name=mode> <play-button name=play xpos=0 ypos=5> <img src=play.gif> <on-click> <-- play of video mode is made automatically --> <set name=play.invisible value=invisible> <set name=stop.invisible value=> <set name=pause.invisible value=> </on-click> <stop-button name=stop> <img src=stop.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=> <set name=pause.invisible value=invisible> </on-click> <pause-button name=pause> <img src=pause.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=invisible> <set name=pause.invisible value=invisible> </on-click> <forward-button name=fast-forward> <img src=ff.gif> </forward-button> <rewind-button name=rewind xpos=20 ypos=5> <img src=rew.gif> </rewind-button> </video>
Für Tabellenzeilen können folgende Attribute angegeben werden:
<tabular name=prices colspec="lcl" status=opened> <row line> <cell>Name</cell> <cell>Size</cell> <cell>Price</cell> </row> <row line> <cell>zapato</cell> <cell>35-40</cell> <cell>140</cell> </row> <row line> <cell>chaussure</cell> <cell>41-48</cell> <cell>160</cell> </row> </tabular>
Für dieses Element können folgende Attribute angegeben werden:
<s> Lord Byron is only great as a poet; as soon as he reflects, he is a child. </s>
Es wird die Definition eines Datenbankschemas wiedergegeben. Der Name des Schemas steht in name. Die Tabellendeklarationen des Schemas werden im Inhalt durch table angegeben.
<scheme> <table name="products" columns="code price desc image"> <table name="customer" columns="id name desc address"> </scheme>
Für dieses Element können folgende Attribute angegeben werden:
<scribble name=drawing src=my-car.gif>
<search-form name="my-search-form" entries="product-database">
<set name=dummy value=1> <set name=foo> <img src=img.gif> </set>
<shopping-bag name=my-shopping-bag orders="actual-orders">
<shopping-bag name=what-i-want-to-buy orders="actual-orders">
Innerhalb einer Zeitlinie time-line werden hiermit die während eines Zeitabschnitts auszuführenden Befehle spezifiziert. Die Dauer eines Zeitabschnitts kann über das Attribut end-of individuell oder allgemein über das Attribut slice von time-line festgelegt werden. Die Bedeutung dieser Dauer ist dieselbe wie bei wait . Zusätzlich kann mit dem Attribut periodical ein Zeitabschnitt beliebig oft periodisch wiederholt werden, bis end-of erüllt ist.
<time-line end-of=12s periodical slice=3s> <slice> <par> <open name=m> <par> <open name=n> <slice> <par> <close name=m> <par> <close name=n> <slice end-of=1s> <open name=o> <slice end-of=5s> <close name=o> </time-line>
Für Bilderfolgen können zusätzlig folgende Attribute angegeben werden:
<slide-show name=summer-slide-show src=../slides/presentation format=slide interval=0.5 height=30 width=40 status=closed>
<frame name=myframe elems="photo"> $photo$ </frame> <sql result=my-query> select image from prod where price < 1000 </sql> <horizontal-slider name=prod-slider style=quelle height=21 width=210 layer=1 step=2> <slider-previous> <img src=previous.gif> <slider-next> <img src=next.gif> <slider-box> <img src=box.gif> <on-reposition> <open name=myframe> <element name=photo> <img src=$myquery.photo[myslider.position]$ </element> </open> </on-reposition> </horizontal-slider>
<frame name=myframe elems="photo"> $photo$ </frame> <sql result=my-query> select image from prod where price < 1000 </sql> <horizontal-slider name=prod-slider style=quelle height=21 width=210 layer=1 step=2> <slider-previous> <img src=previous.gif> <slider-next> <img src=next.gif> <slider-box> <img src=box.gif> <on-reposition> <open name=myframe> <element name=photo> <img src=$myquery.photo[myslider.position]$ </element> </open> </on-reposition> </horizontal-slider>
<frame name=myframe elems="photo"> $photo$ </frame> <sql result=my-query> select image from prod where price < 1000 </sql> <horizontal-slider name=prod-slider style=quelle height=21 width=210 layer=1 step=2> <slider-previous> <img src=previous.gif> <slider-next> <img src=next.gif> <slider-box> <img src=box.gif> <on-reposition> <open name=myframe> <element name=photo> <img src=$myquery.photo[myslider.position]$ </element> </open> </on-reposition> </horizontal-slider>
Für dieses Element können folgende Attribute angegeben werden:
<s> Ich kenne mich auch nicht und Gott soll mich auch davor behüten. </s> <small> Johann Wolfgang von Goethe </small>
Es wird ein SQL-Statement ausgeführt. Die Anweisung wird in gewöhnlicher SQL-Syntax als Inhalt des Elements aufgeführt. Das Resultat kann als Tabelle in in einer in result anzugebenden Variable gespeichert werden.
<sql result=my-query> SELECT image FROM products WHERE price<1000 </sql>
Für stop-button können folgende Attribute angegeben werden:
<video name=mode> <play-button name=play xpos=0 ypos=5> <img src=play.gif> <on-click> <-- play of video mode is made automatically --> <set name=play.invisible value=invisible> <set name=stop.invisible value=> <set name=pause.invisible value=> </on-click> <stop-button name=stop> <img src=stop.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=> <set name=pause.invisible value=invisible> </on-click> <pause-button name=pause> <img src=pause.gif> <on-click> <set name=play.invisible value=> <set name=stop.invisible value=invisible> <set name=pause.invisible value=invisible> </on-click> <forward-button name=fast-forward> <img src=ff.gif> </forward-button> <rewind-button name=rewind xpos=20 ypos=5> <img src=rew.gif> </rewind-button> </video>
Für dieses Element können folgende Attribute angegeben werden:
<strong> If I have seen further it is by standing on the shoulders of giants. </strong> <small> Letter to Robert Hooke, 5 Feb. 1675/6. </small>
<styles> <stylesheet name=catalog-style> <default> <p lftmrg=1cm> </default> </stylesheet> <stylesheet name=my-catalog-style extends=catalog-style> <default> <p baselineskip=12pt> </default> </stylesheet> </styles>
Stylesheets können Erweiterungen anderer sein. Das Attribut extends enthält eine Liste von Stylesheetnamen, deren Voreinstellungen übernommen werden. Dabei priorisieren zunächst Voreinstellungen in zuerst genannten Stylesheets solche in später genannten. Zusätzlich überladen Voreinstellungen im erweiternden Stylesheet die Voreinstellungen der in der Liste genannten Stylesheets. Voreinstellungen, die in default angegeben werden, priorisieren Voreinstellungen von Stylesheets.
Ebenso können die einzelnen Voreinstellungen modifiziert werden.
<stylesheet name=my-catalog-style extends=catalog-style> <default extends=other-catalog-style> <p baselineskip=12pt> </default> </stylesheet>
Für dieses Element können folgende Attribute angegeben werden:
A<sub distance=1>11</sub><sup distance=1>t</sup> is the first element of the matrix transpose of A.
Für dieses Element können folgende Attribute angegeben werden:
A<sub distance=1>11</sub><sup distance=1>t</sup> is the first element of the matrix transpose of A.
<suspend name=video-1>
Zur Deklaration einer Tabelle eines Datenbankschemas. Mit name wird die Tabelle benannt, mit columns die zugehörigen Spalten deklariert, key umfaßt alle Spaltennamen, die den Schlüssel bilden.
<scheme> <table name="products" columns="code price desc image"> <table name="customer" columns="id name desc address"> </scheme>
<table-of-contents name=my-table-of-contents>
Mit dem Attribut colspec kann die Darstellung der einzelnen Spalten (links, rechts, zentriert) kontrolliert werden. align bestimmt die Ausrichtung der Tabelle.
Für Tabellen können zusätzlig folgende Attribute angegeben werden:
<tabular name=prices colspec="lcl" status=opened> <row line> <cell>Name</cell> <cell>Size</cell> <cell>Price</cell> </row> <row line> <cell>zapato</cell> <cell>35-40</cell> <cell>140</cell> </row> <row line> <cell>chaussure</cell> <cell>41-48</cell> <cell>160</cell> </row> </tabular>
Es wird implizit ein wait -Statement zum Abschluß eingefügt.
<theme name=general> <extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <p>This is a $general-result.name$.</p> <next-button> </page> </template> </extension> <exceptions> <sql> SELECT name FROM database WHERE name=[AEIOU].* </sql> <template> <page name=general-exception-page> <p>This is an $general-result.name$.</p> <next-button> </page> </template> </exceptions> <theme=sub-general> ... </theme> </theme>
Für dieses Element können folgende Attribute angegeben werden:
<itemize> <term> <img src=red-bullet.gif> </term> <item> First item <item> Second item ... <item> Last item </itemize> <listing> <term> <img src=first.gif> <item> First item <term> <img src=second.gif> <item> Second item ... <term> <img src=last.gif> <item> Last item </listing>
Themen dienen der Gliederung des Produktkatalogs. Ein Thema besteht aus
Ein Thema sollte mindestens durch eine Datenbankeintragdeklaration oder einen Unterthema definiert sein. Ein Thema wird mit open geöffnet und mit close geschlossen. Zur Navigation stehen next, previous, up, down und back zur Verfügung.
<theme name=general> <extension result=general-result> <sql> SELECT name FROM database </sql> <template> <page name=general-page> <p>This is a $general-result.name$.</p> <next-button> </page> </template> </extension> <exceptions> <sql> SELECT name FROM database WHERE name=[AEIOU].* </sql> <template> <page name=general-exception-page> <p>This is an $general-result.name$.</p> <next-button> </page> </template> </exceptions> <theme=sub-general> ... </theme> </theme>
Mit einer Zeitlinie kann das gemeinsame zeitliche auch parallele Verhalten einer gewissen Menge von Elementen spezifiziert werden. Die Gesamtdauer dieses Verhaltens wird im Attribut end-of angegeben; fehlt diese Angabe, so ergibt sich die Dauer aus der Abarbeitungsgeschwindigkeit. Ist periodical gesetzt, so wiederholt sich das Zeitlinienverhalten periodisch.
Eine Zeitlinie wird mit dem Element slice in Abschnitte eingeteilt, die sequentiell durchlaufen werden. Die Dauer der Abschnitte kann allgemein über das Attribut slice bestimmt werden oder aber individuell für jede Zeitscheibe. Innerhalb einer mit slice abgegrenzten Zeitscheibe werden die durch par getrennten Teile parallel zueinander ausgeführt.
<time-line end-of=12s periodical slice=3s> <slice> <par> <open name=m> <par> <open name=n> <slice> <par> <close name=m> <par> <close name=n> <slice end-of=1s> <open name=o> <slice end-of=5s> <close name=o> </time-line>
Für dieses Element können folgende Attribute angegeben werden:
<i> So leben wir und nehmen immer Abschied. </i> <tt> Rainer Maria Rilke </tt>
Für dieses Element können folgende Attribute angegeben werden:
<s> That ideal reader suffering from an ideal insomnia. </s> <u> James Joyce </u>
Das aktuelle Thema wird in einer History gespeichert.
Der Kontrollfluß verzweigt zum ersten Oberthema.
<button name=up xpos=10 ypos=10> Go up the hierachy. <img src=up.gif> <on-click> <up> </on-click> </button>
Der Wert einer Variablen kann mit set geändert werden.
Auf Variablen wird, sowohl in Attributen als auch im Inhalt, mit $name$ zugegriffen. Soll $ buchstäblich vorkommen, so ist es mit \ zu eskapieren.
Einige Namen sind reserviert:
Es gilt das Prinzip der statischen Bindung.
<var name=months value=12> <var name=pic> <img src=pic.gif> </var> <var name=dummy value=$months$\$> <var name=foo> $pic$ $pic$ </var>
<variant name=a object=windowA> <element name=text> hello World ! </element> <and attribute=background value="blue"> </and> <and object=windowB> <element name=text> hallo Welt ! </element> <and attribute=background value="red"> </and> </and> <or name=b object=windowA attribute=background value="green"> < and> < element name=text> hallo Welt ! </element> </and> < and object=windowB attribute=background value="yellow"> < and> < element name=text> hello World ! </element> </variant>
Für Sliders können folgende Attribute angegeben werden:
<frame name=myframe elems="photo"> $photo$ </frame> <sql result=my-query> select image from prod where price < 1000 </sql> <vertical-slider name=prod-slider style=quelle height=21 width=210 layer=1 step=2> <slider-previous> <img src=previous.gif> <slider-next> <img src=next.gif> <slider-box> <img src=box.gif> <on-reposition> <open name=myframe> <element name=photo> <img src=$myquery.photo[myslider.position]$ </element> </open> </on-reposition> </vertical-slider>
Für Videofilme können zusätzlig folgende Attribute angegeben werden:
<video name=summer-video src=/videos/summer-video.mov format=mov status=opened>
Ein Fenster kann folgende Attribute haben:
<window name=summer-sport-presentation title="SUMMER SPORT" xpos=10 ypos=10 width=400 height=200 lftpad=25 rgtpad=25 toppad=25 botpad=25> <img src=summer-logo.gif> Welcome to the Summer Sport Catalogue '96! <video name=summer-video src=/videos/summer-video.mov format=mov status=opened> <button style=sport-style> Go for it! <on-click> <close name=summer-video> <close name=summer-sport-presentation> <open name=summer-sport> </on-click> </button> </window>