Frage

Ich schreibe eine einfache Textverarbeitungsanwendung und versuche, mich für ein natives „internes“ Format zu entscheiden, das mein Code analysiert, um es auf dem Bildschirm darzustellen.Ich möchte, dass dies XML ist, damit ich in Zukunft einfach XSLT schreiben kann, um es in ODF oder XHTML oder was auch immer zu konvertieren.

Bei der Suche nach vorhandenen Standards, die verwendet werden können, ist ODF der einzige vielversprechende.Aber das sieht für das, was ich brauche, nach einem gewaltigen Overkill aus.Alles, was ich brauche, sind Absatz-Tags, Schriftartenauswahl, Schriftgröße und Dekoration ... das ist so ziemlich alles.Es würde lange dauern, auch nur einen minimalen ODF-Renderer zu implementieren, und ich bin mir nicht sicher, ob sich die Mühe lohnt.

Im Moment denke ich darüber nach, mein eigenes XML-Format zu erstellen, aber das ist keine wirklich gute Praxis.Es ist besser, einen Standard zu verwenden, zumal ich dann wahrscheinlich die XSLTs, die ich in Zukunft benötigen könnte, bereits geschrieben finden kann.

Oder sollte ich einfach in den sauren Apfel beißen und ODF implementieren?

BEARBEITEN:Bezüglich der Antwort

Ich kannte XSL-FO schon vorher, hatte es aber aufgrund des Gewichts der Spezifikation nicht wirklich in Betracht gezogen.Aber Sie haben Recht, eine Teilmenge würde mir alles geben, womit ich arbeiten muss, und Raum zum Wachsen geben.Vielen Dank für die Erinnerung.

Durch die Einbindung einer Rendering-Bibliothek wie FOP oder RenderX erhalte ich außerdem eine kostenlose PDF-Erstellung.Nicht schlecht...

War es hilfreich?

Lösung

Da Sie sicher sind, dass Sie das vertreten müssen Präsentation Auf der anderen Seite kann es sich lohnen, einen Blick darauf zu werfen XSL-FO W3C-Empfehlung.Dies ist eine vollständige Seitenbeschreibungssprache und die (zutiefst unmoderne) andere Hälfte des bekannteren XSLT.

Das Ganze ist eindeutig alles andere als "Lightwight", aber wenn Sie nur eine sehr begrenzte Untergruppe integriert haben - was sogar nur sein könnte (um Ihren Spezifikationen von "Absatz -Tags, Schriftauswahl, Schriftgröße und Dekoration" zu entsprechen)) fo:block und das allgemeine Schrifteigenschaften, etwas wie:

<yourcontainer xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:block font-family="Arial, sans-serif" font-weight="bold"
        font-size="16pt">Example Heading</fo:block>
    <fo:block font-family="Times, serif"
        font-size="12pt">Paragraph text here etc etc...</fo:block>
</yourcontainer>

Dies hätte möglicherweise einige Vorteile gegenüber dem einfachen Rollen.Es gibt eine offene Spezifikation, anhand derer gearbeitet werden kann, und alles, was dazu gehört.Es verwendet CSS-Eigenschaften als XML-Attribute wieder (ähnlich wie SVG), sodass viele Formatierungsdetails einigermaßen vertraut erscheinen.Sie hätten einen Upgrade-Pfad, wenn Sie später entscheiden würden, dass beispielsweise intelligentes Paging eine unverzichtbare Funktion sei – einschließlich weiterer Abschnitte der Spezifikation, sobald diese für Ihre Anwendung relevant werden.

Wenn Sie sich mit XSL-FO befassen, können Sie noch etwas anderes lernen: Sie sehen, wie schrecklich kompliziert das bloße Erstellen von Absätzen und Schriftarten sein kann.Der Versuch, Textlayout und Zeilenumbruch für verschiedene Sprachen und Anwendungsfälle „richtig“ zu gestalten, erscheint mir sehr entmutigend.

Andere Tipps

Wenn es nur für die Textverarbeitung ist, dann vielleicht DocBook vielleicht etwas leichter als ODF?

Im Wiki-Eintrag heißt es jedoch:

DocBook ist eine semantische Auszeichnungssprache für technische Dokumentation.Ursprünglich war es zum Schreiben technischer Dokumente im Zusammenhang mit Computerhardware und -software gedacht, kann aber auch für jede andere Art von Dokumentation verwendet werden.

Es ist also möglicherweise nicht so gut für ein Allzweck-Textverarbeitungsprogramm geeignet?

Der Vorteil bei der Verwendung von DocBook wäre die Tatsache, dass eine Reihe von DocBook -> anderen Formatkonvertern verfügbar sein sollten?Hoffe das hilft.

Ich mag DocBook, aber es passt nicht wirklich.Ziel ist es, präsentationsunabhängig zu sein. Die Absicht besteht darin, dass Sie XSLT verwenden, um es in ein Präsentationsformat zu rendern.

In einem Textverarbeitungsprogramm bearbeitet der Benutzer die Präsentation zusammen mit dem Inhalt.Beispielsweise möchte der Benutzer nicht unbedingt ein „Schlüsselwort“ markieren, sondern einen Teil des Textes fett formatieren.

Ein DocBook-Editor wäre eine sehr nette Sache (ich bin mir nicht sicher, ob es einen guten gibt), aber das ist nicht wirklich das, was ich mache.

Nun, richtig...Aber da ich sowieso in der Lage sein muss, in XML zu konvertieren, warum sollte ich dann sowohl meinen Dokumentbaum als auch den DOM-Baum im Speicher behalten, wenn mich nichts daran hindert, direkt aus dem DOM-Baum heraus zu arbeiten?

Zumal ein einzigartiges Merkmal meines Programms darin besteht, dass immer alles gespeichert wird, während Sie tippen, und ich nicht jedes Mal, wenn ich eine Taste drücke, eine komplette Konvertierung in XML durchführen möchte.Einfacher ist es, Eingabe und Ausgabe direkt mit meinem speicherinternen DOM-Baum zu verknüpfen.

Bearbeiten:Oh, und das einzige Problem mit XHTML ist, dass ich die grundlegende Paginierung unterstützen möchte.Obwohl ich denke, dass mich nichts davon abhält, dafür ein paar zusätzliche Tags zu verwenden ...

XML ist ein extern Format, nicht intern.

Was ist falsch mit XHTML?Es ist einfach und allgegenwärtig (zumindest HTML).Ihre Implementierung wäre leicht zu debuggen und Ihre Benutzer werden Ihnen auf ewig dankbar sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top