Little Fluffy Birds Markup Language (LFBML) 1.0

Mirko Westermeier Spezifikation vom 19.09.2003

Aktuelle Version:
http://www.memowe.de/lfbml/spec.html
Autoren:
Mirko Westermeier, Mathematische Fakultät der Westfälischen Willhelms-Universität, <mail@memowe.de>
Freundliche Hilfe: Mirko Bednaric, Creative Director reieRMeister™, <info@reiermeister.de>

Übersicht

Die Little Fluffy Birds Markup Language (LFBML) ist eine XML-Sprache. Die Document Type Definition stellt dem Autor mit der LFBML Möglichkeiten bereit, kleine flauschige Vögel auszuzeichnen und kultiviert obendrein Bürokratie und Unübersicht.

Status dieses Dokuments

Dieses Dokument wurde von Messdienern sowie speziell vom Hohepriester und dem denaturierten Großinquisitor zu den Heilgen™ Hallen™ zu <#html.de/> eingesehen und berichtigt. Es ist ein stabiles Dokument und soll als Referenzmaterial genutzt werden. Es soll als normative Referenz zitiert werden und dient obendrein der Unterstützung der raschen Verbreitung der LFBML in der ganzen Welt. Das verbessert die Vogelhaltigkeit und Eindeutigkeit der Vogel-Markupsprachen nachhaltig.

Bitte benachrichtigen Sie uns über Fehler in diesem Dokument per E-Mail an Mirko Westermeier.

Inhaltverzeichnis

  1. Einführung
  2. Formalia
    1. Content-Type
    2. XML-Declaration
    3. Document Type Declaration
    4. Präsentation
  3. Sprachelemente
    1. Grundlegender Aufbau
    2. Kopfdaten
    3. Inhaltselemente
    4. Dingeskirchen
  4. Kompatibilität

Anhang

  1. Elementenindex
  2. Attributenindex

1 Einführung

Ornithologen dieser Erde, habt Ihr Euch nicht schon immer mal gefragt, wie zur Hecke Ihr Eure liebsten flauschigen Vogelkinder, insbesondere die Küken, auszeichnen sollt? Wart Ihr nicht schon immer total entäuscht (und so) darüber, dass es in HTML keine adäquate Möglichkeit gibt, etwas explizit als Vogel auszuzeichnen und damit dem Benutzeragenten den selbigen zu zeigen, damit er es auch versteht? Habt Ihr nicht schon immer geflucht, dass alle dahingehenden Ansätze bisher kläglich gescheitert sind, weil sie von 14-jährigen Counterstrike-Spielern ohne Herzblut hingerotzt von Beginn an zu Schleim und Staub zerfielen? Das hat ein Ende, denn nun gibt es die Little Fluffy Birds Markup Language (LFBML)!

Die LFBML ist eine weitere (yet another) XML-Sprache. Und als solche ist sie klar definiert durch die LFBML Document Type Definition und natürlich wohlgeformt. Sie ist sogar sehr wohlgeformt. Sie ist ausgesprochen sexy. Insbesondere sieht der Name der Sprache ziemlich cool aus, wenn man ein Dokument (etwa mit dem Validator des WWW Consortiums) gegen die LFBML zu validieren ersucht: This Page Is Valid Little Fluffy Birds Markup Language 1.0.

So freuet Euch, Ornithologen dieser Erde, ob dieser neuen hübschen Little Fluffy Birds Markup Language, die es Euch fortan ermöglicht, Eure kleinen flauschigen Freunde wohlgeformt und DTD-konform ins weltweite Netz auszuliefern. Denn nun habt Ihr einen Standard, auf den Ihr pochen könnt, wenn es jemand nicht schafft, seine Vögel gültig zu markieren. Leset, wie es geht:

2 Formalia

Einige Formalia sind bei der Erstellung von LFBML-Dokumenten einzuhalten, auf die hier gesondert eingegangen werden soll. Der geneigte Leser wird sicher Verständnis dafür aufbringen, dass bei der Markierung seiner kleinen flauschigen Freunde gewisse Regeln beachtet werden müssen.

2.1 Content-Type

Da die LFBML eine XML-Sprache ist, muss sie auch als solche ausgeliefert werden. Wir empfehlen dabei dringend folgende Vorgehensweise beim Bereitstellen auf HTTP-Servern:

2.2 XML-Declaration

Da LFBML-Dokumente wohlgeformte XML-Dokumente sind, muss man den verarbeitenden Benutzeragenten mitteilen, dass es sich überhaupt um XML handelt, denn sonst wüsste der Benutzeragent garnicht, mit was sie da ihre kleinen flauschigen Freunde auszeichnen wollen. Dazu muss die erste Zeile Ihres LFBML-Dokuments so aussehen:

<?xml version="1.0" standalone="yes"?>

Wenn Sie keine Möglichkeit haben, den Content-Type im HTTP-Header zu senden, sollten Sie den Zeichensatz hier zusätzlich angeben:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>

Vorausgesetzt natürlich, sie wollen Ihr LFBML-Dokument auch als iso-8859-1 ausgeliefert sehen, was im westeuropäischen Sprachraum aber die Regel ist. Wenn Sie einen anderen Zeichensatz verwenden wollen, geben Sie diesen einfach analog zu iso-8859-1 an.

2.3 Document Type Declaration

Jetzt müssen Sie dem Benutzeragenten mitteilen, gegen welche sogenannte Document Type Definition er Ihr Dokument auf Gültigkeit ("Validität") prüfen soll. Sie finden die LFBML-DTD dort: http://www.memowe.de/lfbml/lfbml1.0.dtd. In der DTD ist angegeben, welche Elemente und Attribute Sie verwenden dürfen und wie die Schachtelungsregeln sind, damit Sie Ihre kleinen flauschigen Freunde korrekt auszeichnen können.

Sie referenzieren die DTD in Ihrem LFBML-Dokument so:

<?DOCTYPE lfbml PUBLIC "Little Fluffy Birds Markup Language 1.0"
        "http://www.memowe.de/lfbml/lfbml1.0.dtd">

2.4 Präsentation

Eventuell wollen Sie, dass Ihr LFBML-Dokument in Webbrowsern in einer bestimmten Weise dargestellt wird. Dazu können Sie CSS verwenden. Mit CSS können Sie den einzelnen Elementen in sogenannten Regeln bestimmte Deklarationen von Eigenschaften zuteilen, die ihre Präsentation etwa in grafischen Web-Browsern entscheidend beeinflussen. Um ein externes Stylesheet zu referenzieren, fügen Sie folgende Zeile ein:

<?xml-stylesheet type="text/css" href="styles.css"?>

Wobei styles.css ein beliebiger URI jeweils zu Ihrem Stylesheet ist.

Ein Beispiel, wie ein LFBML-Dokument präsentierbar ist, finden Sie unter http://www.memowe.de/lfbml/example/. Das Stylesheet dazu finden Sie unter http://www.memowe.de/lfbml/example/styles.css.

3 Sprachelemente

Hier finden Sie eine systematische Einführung in die Sprachelemente der LFBML

3.1 Grundlegender Aufbau

Der grundlegende Aufbau eines LFBML-Dokuments wird von drei Elementen gebildet, die das Dokument in einen Kopf- und einen Inhaltsbereich unterteilen. Diese beiden Elemente umschließt das Wurzelelement:

Daraus ergibt sich folgendes Grundgerüst für ein LFBML-Dokument:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE lfbml PUBLIC "Little Fluffy Birds Markup Language 1.0"
	"http://www.memowe.de/lfbml/lfbml1.0.dtd">

<?xml-stylesheet type="text/css" href="styles.css"?>

<lfbml>

<hat> <!-- Kopfdaten --> </hat>

<bofy> <!-- Inhalt --> </bofy>

</lfbml>

3.2 Kopfdaten

Zu einem LFBML-Dokument können Sie Meta-Informationen geben, wie etwa Ihr gewünschtes Google™-Ranking oder die Länge Ihres P***sDaumens. Für die Angaben von diesen Meta-Informationen gibt es das mett-Element, zu Ehren des 1968 verstorbenen berühmten Gerichtsmediziners Dr. Mett Wurst:

Das Kopfdatenelement mett

<!ELEMENT mett EMPTY>
<!-- YOU dunno Mett? Dr. Mett Wurst? Follow da white rabbit! -->

<!ATTLIST mett
	name		CDATA		#REQUIRED
	content		CDATA		#REQUIRED
	coolestguy	(Mirko|memowe)	#REQUIRED
>
<!-- Wow, analog to HTML's META element!
     The coolestguy attribute is set to "Mirko",
     because he's the coolest guy. -->

Attributdefinitionen:

name = cdata – erforderlich
Enthält den Namen des Kopfdatensatzes.
content = cdata – erforderlich
Enthält den jeweiligen Inhalt.
coolestguy = (Mirko|memowe) – erforderlich
Muss einen der Werte "Mirko" oder "memowe" haben. Denn: Mirko ist der coolest guy.

Beinhaltet: nichts. Das Element ist leer.

Beispiele:

<mett name="google-ranking" content="1" coolestguy="Mirko" />
<!-- Setzt das Google-Ranking auf Position 1. -->

<mett name="artist" content="Dieter Bohlen" coolestguy="memowe" />
<!-- Gibt den präferierten Sänger an -->

3.3 Inhalt

Nun kommen wir zum interessanten Teil. Die Auszeichnung Ihrer kleinen flauschigen Freunde mittels der Inhaltselemente! Dazu stehen Ihnen in der LFBML folgende Elemente zur Verfügung:

Das Inhaltselement li

<!ELEMENT li (bb)>
<!-- this elements name is "li" because of the HTML element "li",
     but its meaning is completely different!
     We would like to irritate our users. -->

Attributdefinitionen: keine.

Beinhaltet: genau ein bb-Element.

Das Inhaltselement bb

<!ELEMENT bb (bird)+>
<!-- A band of little fluffy birds. BB element is a bird band. -->

Attributdefinitionen: keine.

Beinhaltet: mindestens ein bird-Element.

Ein bb-Element zeichnet eine nichtleere Menge von kleinen flauschigen Vögeln aus. Es bildet also sozusagen das Vogelhäuschen.

Das Vogelelement bird

<!ELEMENT bird (#PCDATA|whatdoeshedo)*>
<!-- self-descriptive. No comment.
     Our cool birds can do multitasking. -->

Attributdefinitionen: keine.

Beinhaltet: beliebig oft: #PCDATA oder das whatdoeshedo-Element.

Das bird-Element vereinigt den Namen eines Vogels mit seinen Tätigkeiten (whatdoeshedo). Da unsere Vögel multitaskingfähig sind, können sie mehrere whatdoeshedo-Elemente enthalten. Mit diesem einfachen Konstrukt kann man also innerhalb der LFBML anderen den Vogel zeigen. Es sind auch leere bird-Elemente erlaubt. Solche tätigkeitsfreien Vögel nennt man Dummys. Sie werden für Simulationen speziell beim Tontaubenschießen eingesetzt.

Da wir aber generell wollen, dass unsere Vögel etwas tun und nicht stumpf in die Gegend starren, definieren wir uns das whatdoeshedo-Element, und zwar folgendermaßen:

Das Vogeltätigkeitselement whatdoeshedo

<!ELEMENT whatdoeshedo (#PCDATA)>
<!-- Our birds should do something.
     We don't want our birds to hang out lazily. -->

Attributdefinitionen: keine

Beinhaltet: den Text, der beschreibt, was der Vogel tut.

Ein Beispiel, das alle Inhaltselemente in ihrer normalen Umgebung zeigt, folgt hier:

<li><bb>
	<bird>Daniel
	<whatdoeshedo>proggt mit Traumweber ein Web</whatdoeshedo>
	</bird>

	<bird>Andreas
	<whatdoeshedo>schimpft wie ein Rohr</whatdoeshedo>
	</bird>
</bb></li>

3.4 Dingeskirchen

Ein paar Schwierigkeiten gibt es immer zu bewältigen, selbst bei der eigentlich sehr einfach gehaltenen LFBML. Damit auch wirklich alle LFBML-verarbeitenden Programme Ihre kleinen flauschigen Freunde richtig interpretieren, müssen Sie noch unbedingt dieses zwingende Element im bofy-Element einfügen:

Das Element diswodaso

<!ELEMENT diswodaso EMPTY>
<!-- Enables some unknown features -->

<!ATTLIST diswodaso
	macht		(dasdesgeht)	#REQUIRED
>

Attributdefinitionen:

macht = (dasdesgeht) – erforderlich
Dieses Attribut hat den zwingenden Wert "dasdesgeht". Das wird dringend benötigt, um die Sprache effizienter, smarter, stabiler, bugfreier, pressewirksamer und teurer zu machen.

Beinhaltet: nichts. Das Element ist leer.

Beispiel: so sieht ein LFBML-konformes diswodaso-Element aus:

<diswodaso macht="dasdesgeht" />

4 Kompatibilität

Bei der Little Fluffy Birds Markup Language handelt es sich um eine XML-Sprache. Als solche ist sie in aktuellen Webbrowsern darstellbar. Was dieser jedoch daraus macht, steht oftmals in den Sternen. Wie in 2.4 Präsentation beschrieben, kann man aber zusätzliche Informationen zum Styling des LFBML-Dokuments etwa per CSS geben. Diese werden derzeit etwa von dem weitverbreiteten Web-Browser Mozilla (dessen Verwendung wir dem geneigten Leser hiermit nahelegen) korrekt behandelt und führen wie in unserem Beispiel zu einer angenehm beeinflussbaren Präsentation.

Der leider auch weit verbreitete sogenannte Webbrowser "Internet Exploiter" tut sich bei der Präsentation der LFBML-Daten sehr schwer. Wenn Sie Ihre kleinen flauschigen Freunde optisch schön gestalten möchten, müssen Sie auf diesen sogenannten Webbrowser verzichten.

Anhang A. Elementenindex

Name Leer Beschreibung
bb   Bird Band – Ansammlung von Vögeln
bird   Vogelelement
bofy   Inhaltselement
diswodaso E Geheimes Feature-Aktivierungs-Element
hat   Kopfelement
lfbml   Dokumenten-Wurzelelement
li   Irritations-Inhaltselement
mett E Kopfdatenelement nach Dr. Mett Wurst
whatdoeshedo   Vogeltätigkeits-Beschreibungselement

Anhang B. Attributenindex

Name Elemente Wert-Typ
content mett CDATA
coolestguy mett (Mirko|memowe)
macht diswodaso (dasdesgeht)
name mett CDATA