Wikipedia --------- Wikipedia http://www.wikipedia.org ist ein online Lexikon, dass aus zig tausenden von HTML-Seiten besteht. Das Besondere daran ist, dass jeder Benutzer auch ohne HTML-Kenntnisse die Seiten edieren und erweitern kann. Dazu benötigt er nur wenige sehr einfache Formatierungsregeln. Anwendungsmöglichkeiten ----------------------- Mit dem hier vorgestellten TextTransformer-Projekt können Web-Seiten mit den gleichen Regeln auch unabhängig von der Wikipedia erzeugt werden, sei es um Artikel für die Wikipedia offline vorzuformulieren oder um eine eigene Homepage zu bauen. Als Beispiel hierfür wird die englische Version dieser Homepage demnächst zur Verfügung stehen. Einschränkungen --------------- Obwohl die Wikipedia-Syntax im Grunde genommen sehr einfach ist, ist der große Umfang dieses Lexikons nicht zu bewältigen, ohne auch zusätzlich viele s p e z i e l l e A n w e i s u n g e n zur Verfügung zu stellen. So gibt es wechselseitige Verlinkungen von hunderten von Sprachen und Kategorien etc. Diese Möglichkeiten stehen außerhalb des hier vorgestellten Projekts. Zwar ist es Ziel, Wikipedia-Skripte möglichst vollständig parsen zu können, die Verarbeitung des geparsten Textes geht aber nicht über das hinaus, was für eine private Homepage erforderlich ist. Ein weiteres Problem ist, dass die Wikipedia-Syntax zwar mit vielen Beispielen ausführlich beschrieben ist, aber dennoch n i c h t p r ä z i s e d e f i n i e r t ist - ein Nachteil, der dadurch entstanden ist, dass die Wikipedia-Crew keinen Parser-Generator verwendet hat. So ist es bisweilen nur durch Ausprobieren möglich, festzustellen, was geht, und was nicht. Das TextTransformer-Projekt bleibt daher ein "work in progres". Im aktuellen Stadium kann das Projekt die ( nicht mehr existente? ) umfangreiche Manual-Seite verarbeiten, auf der sämtliche Syntax-Element versammelt sein sollten. HINWEISE ZUR IMPLEMENTATION Es gibt vor allem zwei Typen von Wikipedia-Elementen: 1. Elemente, die mit einer Wiederholung eines Zeichen beginnen: Beispiele: - '' kursive Schrift - [[ Link - {{ Variable - == Section 2. Elemente, die mit einem oder mehreren bestimmten Zeichen am Anfang einer Zeile beginnen. Beispiele: - : Einrückung - * Listeneintrag - |- Tabellenzeile Um den eigentliche Textinhalt zu erfassen, muss dieser durch Token erkannt werden, die die ausgezeichneten Elemente ausschließen. Das Token TEXT: TEXT ::= [h'"\[\]{}|!=<&*#;-] \// Zeichen, mit denen auch andere Token beginnen |[^\r\nh'"\[\]{}|!=<&*#;-]+ // alle anderen Zeichen beliebig oft wiederholt ist daher so aufgebaut, dass es nur jeweils ein einzelnes Zeichen erkennt, wenn mit diesem Zeichen auch ein Wikipedia-Syntaxelement beginnen kann. Token dieser Elemente werden daher aufgrund ihrer Länge stets vorrangig erkannt. Alle anderen Zeichen können in beliebiger Wiederholung vom TEXT-Token erkannt werden. Dadurch wird der Text wesentlich schneller analysiert, als wenn man sämtliche Text-Zeichen einzeln extrahieren würde. Zeilenumbrüche werden von TEXT nicht erkannt. Sie haben auch in der Wikipedia keinen Einfluss auf die Gestaltung des Textes, es sei denn, als Leerzeile zur Trennung zweier Absätze. Die Token der Elemente, die am Zeilenanfang stehen müssen, werden dadurch definiert, dass ihnen (\r?\n)?\r?\n vorangestellt wird. Sie werden damit mit Vorrang gegenüber einzelnen Zeilenumbrüchen oder Leerzeilen erkannt. Startregeln ----------- - Mit der Startregel W i k i p e d i a werden Wikipedia-Skripte einfachen HTML-Seiten transformiert. - Mit der Startregel H o m e p a g e wird der HTML-Code in das HTML-Template "Homepage.tmpl" eingebunden, so dass er in einem Rahmen für eine komplette Website erscheint. Links ----- Das Projekt kann hier herunter geladen werden: Wikipedia.ttp Die Textvorlage für diese HTML-Seite ist: Wikipedia.txt Ein Beispiel, das mit dem Projekt konvertiert werden kann: How_to_edit_a_page.txt. Hinweis: Wenn Sie den Zieltext mit dem Extender ".html" abspeichern und dann einen Doppelklick auf die Datei ausführen, wird sie im Browser angezeigt. So sieht das konvertierte Dokument dann im Browser aus: How_to_edit_a_page.html Das Projekt wird noch verbessert. Letztes Update: 14.06.06