In diesem Beispiel geht es um eine Implementierungsvariante eines SaxFilters für eine
Coremedia CAP 4.0 Generator Anwendung. SaxFilter dienen dort, grob gesagt, im Rahmen von Filterketten zur Umwandlung von SGML-Eingangsdaten in eine wählbare Ziel-Markup-Language.
Der dargestellte SaxFilter wird zur Parametrisierung bzw. als Event Feed eines DomUnparsers (hox.text.dom.DomUnparser) verwendet. Dazu wird zuerst die mit dem System mitgelieferte Standardimplementierung hox.text.sax.SaxFilter erweitert.
Der Zweck des Filters ist es, Bilder-Referenzen die in Fliesstextblöcken (von Coremedia als SGML-Blobs verwaltet) inline eingebunden sein können, in eine HTML-Tag-Ausgabe umzuwandeln. Dazu wird der Filter aktiv, wenn in der Eingabe eine Element mit dem Namen "HOX.IMAGE" auftaucht (Dieser Element-Name kann auch anders lauten, der Filter ist entsprechend konfigurierbar). Für jedes "HOX.IMAGE" in der Eingabe wird ein "IMG" in der HTML-Ausgabe erzeugt. Die Attribute des "HOX.IMAGE" Elements werden übernommen. Dem Ausgabeelement "IMG" können weitere frei bestimmbare Attribute und deren Werte hinzugefuegt werden.
Im Fall hier, bei dem ein HTML IMG-Tag ausgegeben werden soll, könnten also weitere Attribute wie "BORDER", "HSPACE", "VSPACE" mit definierbaren Werten zugefügt werden.
Das Quelltextbeipiel in umfangreich (in Englisch) dokumentiert. Die Implementierung verwendet in großem Umfang mittlerweile deprecated API. Das ist leider notwendig, um die Interface-Konventionen einzuhalten, ohne die der SaxFilter nicht mit dem DomUnparsers zusammenarbeiten würde.
This example is an implementation variant of a SaxFilter for a
Coremedia CAP 4.0 Generator application. SaxFilters are used there in filter chains to convert SGML input data to a target Markup Language.
The SaxFilter here is used to parametrise and feed events a DomUnparser (hox.text.dom.DomUnparser). To achieve this it extends the standard implementation of hox.text.sax.SaxFilter. The purpose of the filter is to convert image references to HTML tags digestible to any Web Browser. These image references are inlined inside copy (long text) blocks (which are maintained as some type of SGML blobs inside the Coremedia repository).
The filter is activated when the input contains an element of the name "HOX.IMAGE" (this element activating the filter can have a diffent name as well, this is configurable in the filter). For evry "HOX.IMAGE" in the input an "IMG" is created in the HTML output. The attributes of the "HOX.IMAGE" element are converted and copied to the output element. Additional attributes can be assigned to the output "IMG" element. These additonal attributes can be freely chosen and have values assigned to them.
In this example where an HTML "IMG" tag produced as final output further attributes could for instance be "BORDER", "HSPACE" and "VSPACE".
The source file has extensive comments in English. The implementation uses lots of meanwhile deprecated API. This is unfortunately necessary to obey to Interface conventions without which the SaxFilter could not co-operate with the DomUnparser.